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

3

Estou executando o apache2.2.12 junto com o PHP 5.2.10. O PHP é configurado para ser executado como um processo separado através do fcgid. O problema é que, quando os usuários carregam um arquivo, o tamanho do processo do apache aumenta quase o mesmo valor. Então, se alguém tentar fazer o upload de um arquivo de 200 MB, um dos processos filhos aumentará para o tamanho atual + 200 MB. Se dois usuários começarem a enviar simultaneamente, o meu servidor trava.

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

Minhas perguntas são:

  • É o comportamento normal do Apache ou posso fazer algo para corrigir isso?
  • Se não, existe uma maneira mais eficiente de lidar com grandes uploads de arquivos. Indo pelo comportamento atual, precisarei de 1 GB de RAM livre para cada criança do Apache aceitar um upload.

Obrigado!

Abhaya

-

    
por abhaga 02.06.2010 / 10:39

1 resposta

1

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

Os dois, no final, parecem dizer "Use java or Perl" ou algo assim. Talvez alguém no stackoverflow tenha a resposta. Para uploads grandes, o sftp pode ser a melhor solução, dependendo de como isso é fácil para o usuário.

Se você estiver disposto a usar não-php, JUpload parece uma boa opção, pois pode dividir o arquivo em partes e liberar cada pedaço para o disco. Se tem que ser php, parece que você pode ser capaz de distribuir algo personalizado com alguma programação de soquete de acordo com esta postagem stackoverflow .

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

    
por 02.06.2010 / 13:30