Algum tempo atrás, nos deparamos com um problema interessante. Às vezes (não sempre, vamos fingir que quase cada 100-200 acertos) session_start() leva muito tempo. Até 60 segundos. (o mais longo tinha 63 anos, geralmente em torno de 50).
Servidor rodando CentOS 6.5 (kernel Linux 2.6.32-431.17.1.el6.x86_64) nginx/1.4.7 (sim, eu sei que é antigo) + Apache/2.2.15 + PHP 5.3.3 (usando mod_php) Dois SSD Intel 530 faz Raid 0. Há muita memória RAM livre de 5+ GB. Tentei ajustar o valor vm.swappiness, pode ser por causa de alguma transação de disco de memória. Nenhuma ajuda.
Aparece mesmo que quase não haja carga no servidor.
Sessão armazenada em arquivos. Coloque as sessões no ramdrive (tmpfs). Nenhuma ajuda. Existem cerca de algumas centenas de arquivos de sessão no diretório. Portanto, não deve haver problema de pesquisa. Às vezes, o mesmo problema ocorre em incluir/exigir, o php leva segundos para carregar o arquivo antes de iniciar o processamento. Portanto, é algum problema de io. atop/top não mostrou nada de anormal enquanto o processo de início da sessão trava.
saída free -m durante o travamento
total used free shared buffers cached
Mem: 32101 23485 8616 0 1532 15642
-/+ buffers/cache: 6310 25790
Swap: 16383 1222 15160
free -m saída normal
total used free shared buffers cached
Mem: 32101 23438 8662 0 1532 15623
-/+ buffers/cache: 6281 25819
Swap: 16383 1222 15160
nginx escreve isso no log em tempo de desaceleração
29/09/2015 15:40:36 [aviso] 16854 # 0: * 14779 uma resposta upstream é armazenada em buffer em um arquivo temporário /var/cache/nginx/proxy_temp/1/02/0000000021 durante a leitura do upstream
tentei configurar proxy_max_temp_file_size mas sem ajuda.
Pode ser que alguém saiba qual poderia ser o motivo, ou nesta direção para cavar