Uso de memoria de Apache2 al cargar archivos grandes

Uso de memoria de Apache2 al cargar archivos grandes

Estoy ejecutando apache2.2.12 junto con PHP 5.2.10. PHP está configurado para ejecutarse como un proceso independiente a través de fcgid. El problema es que cuando los usuarios cargan un archivo, el tamaño del proceso de Apache aumenta casi en la misma cantidad. Entonces, si alguien intenta cargar un archivo de 200 MB, uno de los procesos secundarios aumenta al tamaño actual de +200 MB. Si 2 usuarios comienzan a cargar simultáneamente, mi servidor falla.

Ahora es el tamaño de la memoria virtual el que está aumentando, pero como estoy en un VPS basado en OpenVZ, eso es lo que cuenta.

Mis preguntas son:

  • ¿Es el comportamiento normal de Apache o puedo hacer algo para solucionarlo?
  • De lo contrario, ¿existe una forma más eficiente en cuanto a memoria para manejar cargas de archivos grandes? Siguiendo el comportamiento actual, necesitaré 1 GB de RAM libre por cada niño de Apache que acepte una carga.

¡Gracias!

Abhaya

-

Respuesta1

Un problema interesante y parece ser una limitación de php. Vea lo siguiente:

Al final, ambos parecen decir "Usar Java o Perl" o algo más. Quizás alguien en stackoverflow tenga la respuesta. Para cargas de este tamaño, sftp podría ser la mejor solución dependiendo de qué tan fácil de usar debe ser.

Si está dispuesto a utilizar archivos que no sean php,JsubirParece una buena opción ya que puede dividir el archivo en fragmentos y eliminar cada fragmento en el disco. Si tiene que ser php, parece que podrías implementar algo personalizado con alguna programación de socket de acuerdo conesta publicación de desbordamiento de pila.

De todos modos, con este tamaño, probablemente quieras algo con capacidad de currículum y progreso.

información relacionada