原因:
乙個測試環境,nginx+php-fpm對外提供服務,測試人員訪問的時候出現時快時慢的情況,慢時超過了正常網頁的等待開啟時間範圍。重啟nginx php-fpm後恢復,訪問幾次後又會慢
查詢思路:
1,系統負載,磁碟io
top,檢視負載,負載小於1 排除。
vmstat 檢視磁碟io 測試環境 io較小,排除。
2,是否有php慢查詢程式
開啟php-fpm中php慢查詢日誌
request_slowlog_timeout = 5
slowlog = var/log/slow.log
reload 訪問之後無慢查詢日誌,判斷無執行時間比較慢的php程式
檢查該配置檔案
pm = static
pm.max_children = 300
pm.start_servers = 15
pm.min_spare_servers = 8
pm.max_spare_servers = 48
request_terminate_timeout = 200
排除是pm.max_children 設定過小引起的問題。
3,懷疑mysql有慢查詢
**時快時慢 重啟之後開啟統一頁面較快,排除mysql有慢查詢。此時陷入迷茫尷尬之中。
檢視nginx配置檔案
worker_rlimit_nofile 65535 偶然發現多麼熟悉的數字,此處定義了限制開啟的檔案數量,就聯想到ulimit 引數
ulimit -n 果然 沒有進行優化,顯示預設的1024
echo
'* - nofile 65535'
>> /etc/security/limits.conf
然後執行下ulimit -hsn
65535
也可以把ulimit -shn 65535命令加入到/etc/rc.local,然後每次重啟生效
檔案描述符
檔案描述符在形式上是乙個非負整數。實際上,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。當程式開啟乙個現有檔案或者建立乙個新檔案時,核心向程序返回乙個檔案描述符。在程式設計中,一些涉及底層的程式編寫往往會圍繞著檔案描述符展開。但是檔案描述符這一概念往往只適用於unix、linux這樣的作業系統。
習慣上,標準輸入(standard input)的檔案描述符是 0,標準輸出(standard output)是 1,標準錯誤(standard error)是 2。儘管這種習慣並非unix核心的特性,但是因為一些 shell 和很多應用程式都使用這種習慣,因此,如果核心不遵循這種習慣的話,很多應用程式將不能使用。
調整完之後訪問時快時慢的問題解決。
nginx php fpm安裝手記
www 將www加入www組並禁止www登入shell 編譯前編輯src core nginx.h找到 define nginx version define nginx version define nginx ver define nginx var 將上邊資訊替換為你想替換的資訊,便於隱藏ng...
nginx php fpm 執行原理
目錄 cgicgi工作原理 fastcgi php fpm php內建的一種fast cgi 請求步驟 common gateway inte ce 公共閘道器介面 請求模式 web brower 瀏覽器 通過http協議傳輸 http server 伺服器nginx apache cgi prog...
nginx php fpm記憶體配置問題
nginxphp fpm配置過程中最大問題是內洩漏出問題 伺服器的負載不大,但是記憶體占用迅速增加,很快吃掉記憶體接著開始吃交換分割槽,系統很快掛掉!google了一天,終於發現些有用的東西,其實根據官方的介紹,php cgi不存在記憶體洩漏,每個請求完成後php cgi會 記憶體,但是不會釋放給作...