不久前我們遇到了有趣的問題。有時(不是每次,讓我們假設幾乎每 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) 兩mod_php) 兩個intel SSD 530 使 Raid 0 有許多可用的 ram 5+ GB。我嘗試調整 vm.swappiness 值,可能是因為某些記憶體磁碟事務。沒有幫助。
即使伺服器上幾乎沒有負載,它也會出現。
會話儲存在文件中。將會話放在 ramdrive (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 但沒有幫助。
有人可能知道可能是什麼原因,或是朝這個方向挖掘