nginx+php-fpm訪問爲何時快時慢

原因:

一個測試環境,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 和很多應用程序都使用這種習慣,因此,如果內核不遵循這種習慣的話,很多應用程序將不能使用。

調整完之後訪問時快時慢的問題解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章