PHP 세션을 시작하는 데 시간이 오래 걸리는 경우가 있습니다.

PHP 세션을 시작하는 데 시간이 오래 걸리는 경우가 있습니다.

얼마 전 우리는 흥미로운 문제에 직면했습니다. 때때로(매번은 아니지만, 거의 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 설정을 시도했지만 도움이 없었습니다.

이유가 무엇인지 아는 사람이 있거나 이 방향으로 파고들 수도 있습니다.

관련 정보