nginxphp-fpm配置過程中最大問題是內洩漏出問題:伺服器的負載不大,但是記憶體占用迅速增加,很快吃掉記憶體接著開始吃交換分割槽,系統很快掛掉!
google了一天,終於發現些有用的東西,其實根據官方的介紹,php-cgi不存在記憶體洩漏,每個請求完成後php-cgi會**記憶體,但是不會釋放給作業系統,這樣就會導致大量記憶體被php-cgi占用。
官方的解決辦法是降低php_fcgi_max_requests的值,我用的是php-fpm,對應的php-fpm.conf中的就是max_requests,該值的意思是傳送多少個請求後會重啟該執行緒,我們需要適當降低這個值,用以讓php-fpm自動的釋放記憶體,不是大部分網上說的51200等等,實際上還有另乙個跟它有關聯的值max_children,這個是每次php-fpm會建立多少個程序,這樣實際上的記憶體消耗是max_children*max_requests*每個請求使用記憶體,根據這個我們可以預估一下記憶體的使用情況,就不用再寫指令碼去kill了。
下面其實是重啟指令碼的過程,並不是什麼很嚴重的事情,但是我們要小心,不是說一直重啟就是好的,因為重啟會導致cpu的使用率飆公升,系統負載巨大,所以還是平衡上面的資料比較重要。
mar 08 16:13:33.113138 [notice] fpm_got_signal(), line 48: received sigchld
mar 08 16:13:33.113202 [warning] fpm_children_bury(), line 215: child 23051 (pool default) exited on signal 11 sigsegv after 747.428492 seconds from start
mar 08 16:13:33.113622 [notice] fpm_children_make(), line 352: child 24511 (pool default) started
nginxphp fpm安裝配置
安裝前準備 centos下執行 yum y install gcc automake autoconf libtool make yum y install gcc gcc c glibc yum y install libmcrypt devel mhash devel libxslt devel...
nginx php fpm的socket配置小結
關於socket的介紹本文不再贅述,生產環境中常用socket方式,本文簡述其配置方式。mkdir run chmod 777 run chown r www www run vi etc php.ini 儲存退出 vi etc php fpm.conf 儲存退出 cd cd nginx vi co...
Nginx PHP FPM配置及優化指南(上)
本文介紹在centos5.8 6.2 redhat rhel 5.8 6.2下lemp lnmp環境下的nginx php fpm的web伺服器配置及優化指南。截至目前,各軟體版本為 如果您還沒有搭建lemp環境,可以參照我之前寫過一篇文章 lemp 或lnmp 高效能的web伺服器在centos6...