Diretório de sessões PHP completo?

2

Eu estava esperando que alguém me desse alguns conselhos, por favor. Estou executando um servidor do CentOS 6 e nos últimos dois dias o uso do meu disco passou de 60 GB para 135 GB (98% cheio). Eu acredito que o problema pode estar relacionado com o diretório de sessões do PHP (/ var / lib / php / session), já que isso parece ser massivo (não consigo ls ou rm), literalmente existem milhões de arquivos neste diretório.

  1. Como posso remover esse diretório? rm não está funcionando aqui e eu tentei também rsync substituir um diretório vazio, mas isso também leva a eternidade.

  2. Se isso está causando o problema - por que o PHP não está removendo esses arquivos automaticamente?

  3. É provável que haja algum registro em algum lugar que possa me apontar na direção de uma exploração, DDOS ou falha?

Obrigado

    
por kinggs 17.04.2016 / 14:37

3 respostas

0

A configuração padrão do Ubuntu é que o PHP não expira as sessões, mas há uma tarefa cron que exclui arquivos antigos. Uma discussão completa sobre isso levaria algum tempo (IMHO, é uma idéia muito ruim), mas não estou ciente de Redhat ter uma abordagem semelhante.

Você não forneceu detalhes da configuração da sua sessão. Esta situação pode surgir devido aos valores para qualquer sessão de session.gc_probability, session.gc_divisor ou session.gc_maxlifetime. Definir os padrões de 1, 100 e 1440 deve garantir um sistema homeostático razoavelmente uma vez que você tenha limpado os arquivos conforme descrito nas outras respostas.

Você não disse quantas sessões simultâneas você vê no seu sistema, seu tamanho médio, nem o sistema de arquivos em que elas estão armazenadas. Se você espera mais de 300 sessões (dependendo do sistema de arquivos), você deve considerar o uso de uma árvore de diretório em vez de um único diretório para armazenar os arquivos; prefixar o session.save_path com 1 ou 2 (supondo que este não seja um servidor NFS suportando um cluster de servidores, caso em que você deve mover para uma arquitetura diferente).

Matt menciona que pode ser a configuração do selinux. Se isso estiver permitindo que arquivos sejam criados, mas nunca excluídos. Embora isso seja possível, sugere-se que a configuração do sistema seja seriamente confusa. Se este for o caso (verifique o seu log de auditoria), então você provavelmente deve fazer uma instalação limpa e restaurar seu aplicativo.

É muito improvável que tenha algo a ver com programação ruim.

    
por 18.04.2016 / 01:38
1

Parece que seu aplicativo está criando sessões, mas nunca as destruindo. Isso pode ser uma programação ruim e uma mistura de configurações ruins do ambiente.

Se você quiser remover esses arquivos da sessão, precisará usar o sudo, pois provavelmente eles não pertencem ao seu usuário.

sudo rm /var/lib/php/session/*

Eu não removeria o diretório inteiro da sessão.

Outra coisa é ajustar o tempo limite da sessão do PHP para um intervalo menor.

    
por 17.04.2016 / 15:22
1

sudo find /var/lib/php/session -type f -delete funcionará melhor que sudo rm /var/lib/php/session/* porque a expansão de * dificilmente é possível para grandes listas de arquivos.

    
por 18.04.2016 / 00:26