Pregunta

Tengo un servidor WAMP 2.0 instalado en Win XP. Versión de Apache: 2.2.11 Versión de PHP: 5.3 MySQL: 5.1.36

Tengo alrededor de 11 tablas en el mysql. Cada ejecución de mi aplicación web (HTML / Jquery / PHP / MySQL) llena aproximadamente 100 filas en 2 de las tablas. (Una de las tablas tiene 2 columnas largas de blob donde se cargan datos de tamaño de hasta 20MB, he cambiado el tamaño Max_allowed_packet a 32M en el archivo my.ini)

La aplicación funciona bien durante aproximadamente 3 semanas hasta que el número de filas en una de las tablas alcanza > 1500.

Luego veo el mensaje de error de httpd (Apache httpd encontró un error y necesita cerrarse ) y dice referencia a memoria ilegal Por favor encuentre abajo algunos registros

szAppName : httpd.exe     szAppVer : 2.2.11.0     szModName : php5ts.dll     
szModVer : 5.3.0.0     offset : 0000c309     


C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\httpd.exe.mdmp
C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\appcompat.txt

Si borro las dos tablas (1500 > filas). Todavía se ve el problema.

Estoy usando PDO PHP para actualizar las tablas.

¿Puede alguien guiarme, ya que esto se está convirtiendo en un bloqueador?

Saludos, Mithun

¿Fue útil?

Solución

PROBLEM:

Tengo la sospecha de que estás golpeando una pared de tamaño de archivo de 2GB. 2 problemas con su configuración:

  • Primer problema: está ejecutando esto en Windows.
  • Segundo problema: está ejecutando esto en Windows. :-)

REASON:

Bromas aparte, Mysql almacena los datos en su carpeta raíz (por ejemplo, C: \ Archivos de programa \ MySQL \ MySQL Server 5.0 \ data). Cada subcarpeta corresponde a un db en su instancia de MySQL. Dentro de cada carpeta hay un archivo con la extensión .frm que corresponde a sus tablas. Vea si la tabla en la que está almacenando sus cargas se acerca a un límite de 2 GB. Teniendo en cuenta que tiene una columna que almacena las subidas HASTA 20 Mb * 1500 filas, es decir, aproximadamente 2 GB (suponiendo que la mayoría de sus archivos son más pequeños que 20 MB) Desafortunadamente, a Windows XP le cuesta mucho tratar con archivos de más de 2 GB: limitaciones del sistema de archivos y del sistema operativo. Es la misma razón por la que las personas se meten en problemas con su perspectiva, porque no ordenan ni limpian sus correos electrónicos.

SOLUTION:

Tercer problema: está almacenando datos binarios en una base de datos, nunca es una buena idea. Guárdelo en el disco y manténgalo referencia (nombre o ruta) en su base de datos. O puede mantener su configuración actual por un tiempo si se muda al sistema ** nix * que admite archivos de mayor tamaño. Pero esto sigue siendo una mala idea para almacenar datos binarios de ese tamaño en su base de datos directamente. También hace que sus búsquedas de base de datos sean más lentas y las copias de seguridad MUCHO más lentas (ya que no hay una copia de seguridad incremental fácil en MySQL)

Espero que ayude.

EDIT:

Olvidé mencionar que ya está usando WAMP, su carpeta MySQL estaría en su carpeta de instalación de WAMP. Por defecto, creo que debería estar en c: \ wamp \ mysql \ data, pero no recuerdo con seguridad. Normalmente uso XAMMP en Windows.

Otros consejos

Hay muchas razones posibles por las que esto está sucediendo. ¿Mantiene una matriz de todos los objetos de 20 MB en la memoria? A medida que crezca, podría aumentar el tamaño del proceso de apache hasta el punto en que no tenga memoria.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top