Possíveis causas do erro completo do dispositivo PHP / tmp

1

Estou recebendo o seguinte erro em uma ocasião estranha em nosso servidor da Web:

Warning: session_start(): open(/tmp/sess_7ifl201pvdd91rr6tr4015n5k4, O_RDWR) failed: No space left on device (28) in /home/some/script/on/my/site/script.php on line ##

Meu administrador do servidor me diz que deve ser algo no site que está causando isso, como alguém carregando um arquivo grande via PHP. Mas eu sou um pouco cético, pois só começou a acontecer nos últimos dias.

Então, eu queria saber se alguém sabia das razões pelas quais isso poderia ocorrer? Eu estou correndo lightspeed (não apache), centos. Deixe-me saber se há mais alguma informação necessária.

    
por David 04.11.2011 / 10:35

2 respostas

2

Se o problema for grandes uploads de clientes, você pode atenuar isso um pouco configurando a opção LimitRequestBody (consulte link - o litespeed afirma ser compatível com o Apache, portanto, ele também deve funcionar lá, caso contrário, você precisará verificar seus documentos). No entanto, isso limitará as solicitações únicas. Um grande número de uploads ao mesmo tempo ainda pode preencher o armazenamento temporário.

Qual é o tamanho do volume que contém /tmp e é especificamente para /tmp ou compartilhado com outras áreas? Seria útil adicionar a saída de df -h à sua pergunta. Se você não tiver um sistema de arquivos separado para /tmp , algo em outro lugar pode estar preenchendo o volume.

Sugiro adicionar algum monitoramento ao servidor. Eu uso collectd para manter um olho nas coisas e uma versão ligeiramente alterada de este script para produzir belas imagens a partir dos dados gravados - existem algumas outras opções populares que também fariam o mesmo trabalho. Você pode pedir para monitorar o espaço do sistema de arquivos usado + free (usando este módulo ) e então você verá se seus erros correspondem a um período em que /tmp foi preenchido.

Um sistema de arquivos pode estar "cheio" quando há muito espaço se ele ficar sem inodes. Se esse for o caso, você poderá recriar o sistema de arquivos com um número maior deles. Isso geralmente é um problema quando você tem muitos arquivos pequenos, já que os padrões ao criar um sistema de arquivos são normalmente bons (um exemplo de onde o número de inodes precisa de ajustes é o servidor de email onde cada email é armazenado como um arquivo separado). / p>

Como uma solução de monitoramento rápida e suja, você pode ter uma tarefa do cron que é acionada a cada minuto e é executada:

date >> /home/tmpfsspace
df -P /tmp >> /home/tmpfsspace
df -i /tmp >> /home/tmpfsspace
tail -n 7200 /home/tmpfsspace > /home/tmpfsspace

Isso deixará você com um arquivo listando o espaço e inodes livres no sistema de arquivos / tmp a cada minuto do dia nas últimas 24 horas, que você pode usar para ver se o espaço de inodes é o problema na próxima obtenha o erro. O arquivo terá cerca de 425Kbytes de comprimento. Isso está longe de ser eficiente, portanto, não deve ser usado como uma solução permanente, e perderá os problemas causados por /tmp simplesmente sendo muito pequenos para que possam preencher completamente um minuto (a resolução do cheque). Você poderia tornar o script mais sofisticado e executar date; du -shc /tmp/* > /home/tmpusewhennearfull se o espaço ou inodes disponíveis em / tmp estiverem abaixo de um determinado ponto (50%, por exemplo) e você tiver a chance de ver o que está consumindo o espaço se algo estiver temporariamente .

Observação: suponho que este seja um servidor ou VM dedicado ao seu uso. Se você estiver em um servidor compartilhado, terá opções muito mais limitadas para instalar o software de monitoramento e assim por diante. / em>

    
por 04.11.2011 / 12:15
1

A falta de inodes também pode ser o problema. Olhe para df -i e veja se a partição onde o / tmp reside está perto de 100%.

    
por 04.11.2011 / 10:49