Lighttpd carrega grande consumo de memória

3

Considere o seguinte cenário:

  • Estou executando o lighttpd-1.4.19 e estou manipulando grandes uploads (centenas de MBs, mas menos de 1 GB) por meio dele.
  • O servidor está sendo executado no Ubuntu 8.04 LTS.
  • Arquivos são gravados temporariamente em / var / tmp.
  • O PHP5 está lidando com o resultado final por meio do fastcgi.
  • Durante um upload, os fragmentos de upload são gravados no diretório temporário.

O mais estranho é que, embora os fragmentos sejam escritos em disco, a memória livre no servidor é reduzida gradualmente até o tamanho total do arquivo durante o upload. Eu entenderia que a RAM diminui pelo tamanho de cada bloco (digamos, 1-2MB) até que eles estejam gravados no disco, mas eu não entendo porque é pelo tamanho do arquivo inteiro (digamos 300MB).

  1. Você saberia por que a RAM seria usada para o arquivo inteiro, embora os fragmentos sejam gravados no disco? É possível que o / var / tmp seja montado diretamente na memória? Versus / tmp?
  2. Se não, você saberia como diagnosticar e como identificar qual processo está ocupando a memória? Eu não vi o processo lighttpd nem php-cgi aumentando com ps mas talvez eu não esteja olhando para a coisa certa.
  3. Ou melhor ainda, você teria uma recomendação sobre um bom servidor da Web (Apache, Nginx, lighttpd etc.) e configuração para lidar com grandes uploads sem armazenar tudo na RAM?

Obrigado!

    
por lpfavreau 01.06.2009 / 17:14

1 resposta

1

Se o lighttpd ou o php-cgi não estiverem aumentando de tamanho, não se preocupe - o aumento que você está vendo não está no consumo de RAM desses processos, mas sim no uso de cache de disco pelo kernel. Basicamente, desde que você acabou de escrever esses arquivos grandes, o kernel os mantém na memória, supondo que você queira lê-los novamente. Naturalmente, esse cache será descartado se essa memória for necessária por outros processos.

    
por 01.06.2009 / 18:13