얼마 전 우리는 흥미로운 문제에 직면했습니다. 때때로(매번은 아니지만, 거의 100-200번의 적중을 가정하겠습니다) session_start()는 매우 오랜 시간이 걸립니다. 최대 60초. (가장 긴 것은 63이었고 일반적으로 약 50이었습니다).
서버 실행 CentOS 6.5(linux 커널 2.6.32-431.17.1.el6.x86_64) nginx/1.4.7(예, 오래된 것으로 알고 있습니다) + Apache/2.2.15 + PHP 5.3.3(mod_php 사용) 2개의 인텔 SSD 530이면 Raid 0이 됩니다. 5GB 이상의 여유 RAM이 많이 있습니다. vm.swappiness 값을 조정하려고 했는데 일부 메모리 디스크 트랜잭션 때문일 수 있습니다. 도움이 되지 않습니다.
서버에 부하가 거의 없는 경우에도 나타납니다.
파일에 저장된 세션. 세션을 램드라이브(tmpfs)에 넣습니다. 도움이 되지 않습니다. 디렉토리에는 약 수백 개의 세션 파일이 있습니다. 따라서 조회 문제가 있어서는 안됩니다. 때때로 include/require에서 동일한 문제가 발생합니다. PHP는 처리를 시작하기 전에 파일을 로드하는 데 몇 초가 걸립니다. 그래서 그것은 일부 io 문제입니다. 세션 시작 프로세스가 중단되는 동안 atop/top에는 비정상적인 내용이 표시되지 않았습니다.
정지 중 free -m 출력
total used free shared buffers cached
Mem: 32101 23485 8616 0 1532 15642
-/+ buffers/cache: 6310 25790
Swap: 16383 1222 15160
free -m 출력 정상
total used free shared buffers cached
Mem: 32101 23438 8662 0 1532 15623
-/+ buffers/cache: 6281 25819
Swap: 16383 1222 15160
nginx는 속도가 느려질 때 로그인에 이것을 씁니다.
2015/09/29 15:40:36 [경고] 16854#0: *14779 업스트림을 읽는 동안 업스트림 응답이 임시 파일 /var/cache/nginx/proxy_temp/1/02/0000000021에 버퍼링됩니다.
Proxy_max_temp_file_size 설정을 시도했지만 도움이 없었습니다.
이유가 무엇인지 아는 사람이 있거나 이 방향으로 파고들 수도 있습니다.