1. 程式人生 > >php-fpm併發優化

php-fpm併發優化

(將新浪qing的部落格還是轉移到CSDN吧!)

伺服器lnmp環境安裝好後,沒有進行配置優化,就採用的預設配置。最近開始推廣,突然就遇到效能問題了。

主要症狀是:
1.有時第一次連線的時候很慢,連線上後就很快。
2.採用QQ登入,會變得很慢。然後其它人訪問也會變得很慢。


初步分析原因是:
首先排除CPU和記憶體瓶頸的問題:
1.預設配置,只啟動了兩個php-fpm程序。
2.每次採用QQ登入時,之前的程式碼是採用的file_get_content方式去呼叫QQ的API,經常QQ那邊會響應很慢,這樣就導致php-fpm程序一直在等待file_get_content。所以極端情況有兩個使用者使用QQ登入,可能會造成僅有的兩個php-fpm程序耗著。就沒法接受新的使用者請求。所以突然會很慢。


優化:
1.修改程式碼,採用curl方式,並且設定連線的超時時間。
2.優化php-fpm.conf的配置
主要是調整pm.max_children,pm.start_servers,pm.min_spare_servers,pm.max_spare_servers引數。
基本上就可以初步解決上面的問題了。以後遇到問題再繼續做優化。


補充:
1.顯示程序記憶體佔用率並進行排序
ps auxw --sort=rss 或者
ps aux | sort -k6,6n
2.檢視內用使用率
free -m 或者free -g
有時由於記憶體快取,會顯示記憶體佔用率很高,但是ps後看到沒有那個程序的記憶體佔用很高,此時可以先清除記憶體快取。
清除記憶體快取:
echo 1 > /proc/sys/vm/drop_caches


參考資料:
http://www.s135.com/file_get_contents