Uso de memória Apache2 ao fazer upload de arquivos grandes

Uso de memória Apache2 ao fazer upload de arquivos grandes

Estou executando o Apache2.2.12 junto com o PHP 5.2.10. O PHP está configurado para ser executado como um processo separado por meio do fcgid. O problema é que quando os usuários carregam um arquivo, o tamanho do processo Apache aumenta quase na mesma proporção. Portanto, se alguém tentar fazer upload de um arquivo de 200 MB, um dos processos filhos aumentará para o tamanho atual + 200 MB. Se dois usuários iniciarem o upload simultaneamente, meu servidor travará.

Agora é o tamanho da memória virtual que está aumentando, mas como estou em um VPS baseado em OpenVZ, é isso que conta.

Minhas perguntas são:

  • É o comportamento normal do Apache ou posso fazer algo para corrigir isso?
  • Caso contrário, existe uma maneira mais eficiente de lidar com uploads de arquivos grandes. Seguindo o comportamento atual, precisarei de 1 GB de RAM livre para cada filho do Apache que aceitar um upload.

Obrigado!

Abhaya

-

Responder1

Questão interessante, e parece ser uma limitação do php. Veja o seguinte:

No final, ambos parecem dizer "Use java ou Perl" ou algo mais. Talvez alguém no stackoverflow tenha a resposta. Para uploads tão grandes, o sftp pode ser a melhor solução, dependendo de quão amigável isso precisa ser.

Se você estiver disposto a usar não-php,JUploadparece uma boa opção, pois pode dividir o arquivo em pedaços e liberar cada pedaço no disco. Se tiver que ser php, parece que você poderá implementar algo personalizado com alguma programação de soquete de acordo comesta postagem stackoverflow.

Nesse tamanho, você provavelmente deseja algo com capacidade de currículo e progresso de qualquer maneira.

informação relacionada