導航:首頁 > 編程語言 > phpfpm平滑重啟

phpfpm平滑重啟

發布時間:2022-10-26 01:58:54

㈠ 如何直接在crontab里寫入php-fpm的平滑重啟命令

crontab文件,系統調度進程 crontab的格式
分(1-59) 時(1-23) 日(1-31) 月(1-12) 星期(0-6) 要運行的命令

例:
30 21 * * * /apps/logs/clean.sh 該命令表示每晚的9點30執行指定目錄下的clean.sh腳本
10 1 * * 6,0 /bin/find -name "core" -print|xargs echo "/n">test.log 表示每個星期的星期6,星期日在bin目錄下運行一次find命令查找「core」 並將查找的內容寫到test.log文件中

使用方法:
創建crontab文件 首先去用戶目錄下查看.profile文件是否配置了一下內容,如果沒有配置請配置 EDITOR=vi; export EDITOR 然後創建crontab文件xx.corn,將一下內容用vi寫進去 0,15,30,45 * * * * /bin/echo 'date'>/crmtux1/Test_console 之後
提交剛剛創建的corntab文件 crontab xx.corn 這樣crontab文件就會自動運行了。

常用命令:
列出crontab文件 crontab -l
編輯crontab文件 crontab -e
刪除crontab文件 crontab -r

恢復crontab文件
拷貝備份文件 到/var/spool/cron/crontabs/<username> 目錄下 自己對應的用戶名 如果沒有許可權 可以如下操作 crontab <filename>
//filename為在$HOME目錄下備份的crontab文件副本

㈡ 修改php.ini 需要重啟嗎

是需要重啟的。
先知道PHP是以什麼樣的模式運行的。是獨立的可執行程序,或者是以模塊的形式嵌入到伺服器程序里運行。
如果是nginx,通常是獨立進程的形式,而apache是模塊的形式。
所以nginx是重啟php進程php-fpm,apache是重啟apache服務。

PHP運行模式:http://latrell.me/post-376.html

㈢ php-fpm子進程會自動重啟嗎

伺服器出現異常,網站不能正常訪問。經排查�php的問題。
在重啟php-fpm時,恢復正常。1分鍾之後又出現故障。查看php日誌文件/usr/local/php/var/log 後提示
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
子進程數已經達到設置的最大值。
要設置php進程數量。需要在php-fpm.conf文件中修改。
先看/usr/local/php/etc/php-fpm.conf文件各項配置解析
pid = run/php-fpm.pid
#pid設置,默認在安裝目錄中的var/run/php-fpm.pid,建議開啟
error_log = log/php-fpm.log
#錯誤日誌,默認在安裝目錄中的var/log/php-fpm.log
log_level = notice
#錯誤級別. 可用級別為: alert(必須立即處理), error(錯誤情況), warning(警告情況), notice(一般重要信息), debug(調試信息). 默認: notice.
emergency_restart_threshold = 60
emergency_restart_interval = 60s
#表示在emergency_restart_interval所設值內出現SIGSEGV或者SIGBUS錯誤的php-cgi進程數如果超過 emergency_restart_threshold個,php-fpm就會優雅重啟。這兩個選項一般保持默認值。
process_control_timeout = 0
#設置子進程接受主進程復用信號的超時時間. 可用單位: s(秒), m(分), h(小時), 或者 d(天) 默認單位: s(秒). 默認值: 0.
daemonize = yes
#後台執行fpm,默認值為yes,如果為了調試可以改為no。在FPM中,可以使用不同的設置來運行多個進程池。 這些設置可以針對每個進程池單獨設置。
listen = 127.0.0.1:9000
#fpm監聽埠,即nginx中php處理的地址,一般默認值即可。可用格式為: 『ip:port』, 『port』, 『/path/to/unix/socket』. 每個進程池都需要設置.
listen.backlog = -1
#backlog數,-1表示無限制,由操作系統決定,此行注釋掉就行。backlog含義參考:
http://www.3gyou.cc/?p=41
listen.allowed_clients = 127.0.0.1
#允許訪問FastCGI進程的IP,設置any為不限制IP,如果要設置其他主機的nginx也能訪問這台FPM進程,listen處要設置成本地可被訪問的IP。默認值是any。每個地址是用逗號分隔. 如果沒有設置或者為空,則允許任何伺服器請求連接
listen.owner = www
listen.group = www
listen.mode = 0666
#unix socket設置選項,如果使用tcp方式訪問,這里注釋即可。
user = www
group = www
#啟動進程的帳戶和組
pm = dynamic #對於專用伺服器,pm可以設置為static。
#如何控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子進程數。如果選擇dynamic,則由下開參數決定:
pm.max_children #,子進程最大數
pm.start_servers #,啟動時的進程數
pm.min_spare_servers #,保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程
pm.max_spare_servers #,保證空閑進程數最大值,如果空閑進程大於此值,此進行清理
pm.max_requests = 1000
#設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 』0′ 則一直接受請求. 等同於 PHP_FCGI_MAX_REQUESTS 環境變數. 默認值: 0.
pm.status_path = /status
#FPM狀態頁面的網址. 如果沒有設置, 則無法訪問狀態頁面. 默認值: none. munin監控會使用到
ping.path = /ping
#FPM監控頁面的ping網址. 如果沒有設置, 則無法訪問ping頁面. 該頁面用於外部檢測FPM是否存活並且可以響應請求. 請注意必須以斜線開頭 (/)。
ping.response = pong
#用於定義ping請求的返回相應. 返回為 HTTP 200 的 text/plain 格式文本. 默認值: pong.
request_terminate_timeout = 0
#設置單個請求的超時中止時間. 該選項可能會對php.ini設置中的』max_execution_time』因為某些特殊原因沒有中止運行的腳本有用. 設置為 』0′ 表示 『Off』.當經常出現502錯誤時可以嘗試更改此選項。
request_slowlog_timeout = 10s
#當一個請求該設置的超時時間後,就會將對應的PHP調用堆棧信息完整寫入到慢日誌中. 設置為 』0′ 表示 『Off』
slowlog = log/$pool.log.slow
#慢請求的記錄日誌,配合request_slowlog_timeout使用
rlimit_files = 1024
#設置文件打開描述符的rlimit限制. 默認值: 系統定義值默認可打開句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。
rlimit_core = 0
#設置核心rlimit最大限制值. 可用值: 『unlimited』 、0或者正整數. 默認值: 系統定義值.
chroot =
#啟動時的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒有設置, 則chroot不被使用.
chdir =
#設置啟動目錄,啟動時會自動Chdir到該目錄. 所定義的目錄需要是絕對路徑. 默認值: 當前目錄,或者/目錄(chroot時)
catch_workers_output = yes
#重定向運行過程中的stdout和stderr到主要的錯誤日誌文件中. 如果沒有設置, stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: 空.
根據以上配置的解析,在php-fpm.conf文件中添加如下配置:
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 100
以觀後效。
另附豆瓣技術貼:https://www.douban.com/note/315222037/
1、php-fpm優化參數介紹
他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。
在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。
下面4個參數的意思分別為:
pm.max_children:靜態方式下開啟的php-fpm進程數量
pm.start_servers:動態方式下的起始php-fpm進程數量
pm.min_spare_servers:動態方式下的最小php-fpm進程數
pm.max_spare_servers:動態方式下的最大php-fpm進程數量
區別:
如果dm設置為 static,那麼其實只有pm.max_children這個參數生效。系統會開啟設置數量的php-fpm進程。
如果dm設置為 dynamic,那麼pm.max_children參數失效,後面3個參數生效。
系統會在php-fpm運行開始 的時候啟動pm.start_servers個php-fpm進程,
然後根據系統的需求動態在pm.min_spare_servers和pm.max_spare_servers之間調整php-fpm進程數
2、伺服器具體配置
對於我們的伺服器,選擇哪種執行方式比較好呢?事實上,跟Apache一樣,運行的PHP程序在執行完成後,或多或少會有內存泄露的問題。
這也是為什麼開始的時候一個php-fpm進程只佔用3M左右內存,運行一段時間後就會上升到20-30M的原因了。
對於內存大的伺服器(比如8G以上)來說,指定靜態的max_children實際上更為妥當,因為這樣不需要進行額外的進程數目控制,會提高效率。
因為頻繁開關php-fpm進程也會有時滯,所以內存夠大的情況下開靜態效果會更好。數量也可以根據 內存/30M 得到,比如8GB內存可以設置為100,
那麼php-fpm耗費的內存就能控制在 2G-3G的樣子。如果內存稍微小點,比如1G,那麼指定靜態的進程數量更加有利於伺服器的穩定。
這樣可以保證php-fpm只獲取夠用的內存,將不多的內存分配給其他應用去使用,會使系統的運行更加暢通。
對於小內存的伺服器來說,比如256M內存的VPS,即使按照一個20M的內存量來算,10個php-cgi進程就將耗掉200M內存,那系統的崩潰就應該很正常了。
因此應該盡量地控制php-fpm進程的數量,大體明確其他應用佔用的內存後,給它指定一個靜態的小數量,會讓系統更加平穩一些。或者使用動態方式,
因為動態方式會結束掉多餘的進程,可以回收釋放一些內存,所以推薦在內存較少的伺服器或VPS上使用。具體最大數量根據 內存/20M 得到。
比如說512M的VPS,建議pm.max_spare_servers設置為20。至於pm.min_spare_servers,則建議根據伺服器的負載情況來設置,比如伺服器上只是部署php環境的話,比較合適的值在5~10之間。
本伺服器配置
1、伺服器基本信息:
硬碟:數據盤30G、系統盤20G
內存:1.5G
CPU:雙核
系統:CentOS 6.3 64位
帶寬:獨享2M
2、部署的應用
Git、SVN、Apache、Tomcat、PHP、Nginx、mysql、JDK
3、優化後的參數
pm = dynamic
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

㈣ 負載4點多 網站假死 重啟NGINX無效 必須重啟PHP 是什麼原因

一、錯誤提示說明:
Nginx
502
Bad
Gateway的含義是請求的PHP-CGI已經執行,但是由於某種原因(一般是讀取資源的問題)沒有執行完畢而導致PHP-CGI進程終止。
Nginx
504
Gateway
Time-out的含義是所請求的網關沒有請求到,簡單來說就是沒有請求到可以執行的PHP-CGI。
二、錯誤提示原因分析:
解決這兩個問題其實是需要綜合思考的,一般來說Nginx
502
Bad
Gateway和php-fpm.conf的設置有關,
而Nginx
504
Gateway
Time-out則是與nginx.conf的設置有關。
php-fpm.conf有兩個至關重要的參數,一個是」max_children」,另一個是」request_terminate_timeout」
,但是這個值不是通用的,而是需要自己計算的。
計算的方式如下:
如果你的伺服器性能足夠好,且寬頻資源足夠充足,PHP腳本沒有系循環或BUG的話你可以直接將」request_terminate_timeout」設置成0s。0s的含義是讓PHP-CGI一直執行下去而沒有時間限制。而如果你做不到這一點,也就是說你的PHP-CGI可能出現某個BUG,或者你的寬頻不夠充足或者其他的原因導致你的PHP-CGI能夠假死那麼就建議你給」request_terminate_timeout」賦一個值,這個值可以根據你伺服器的性能進行設定。一般來說性能越好你可以設置越高,20分鍾-30分鍾都可以。由於我的伺服器PHP腳本需要長時間運行,有的可能會超過10分鍾因此我設置了900秒,這樣不會導致PHP-CGI死掉而出現502
Bad
gateway這個錯誤。
而」max_children」這個值又是怎麼計算出來的呢?這個值原則上是越大越好,php-cgi的進程多了就會處理的很快,排隊的請求就會很少。設置」max_children」也需要根據伺服器的性能進行設定,一般來說一台伺服器正常情況下每一個php-cgi所耗費的內存在20M左右,因此我的」max_children」我設置成40個,20M*40=800M也就是說在峰值的時候所有PHP-CGI所耗內存在800M以內,低於我的有效內存1Gb。而如果我的」max_children」設置的較小,比如5-10個,那麼php-cgi就會「很累」,處理速度也很慢,等待的時間也較長。如果長時間沒有得到處理的請求就會出現504
Gateway
Time-out這個錯誤,而正在處理的很累的那幾個php-cgi如果遇到了問題就會出現502
Bad
gateway這個錯誤。
三、臨時解決辦法:
綜上所述,Nginx提示502和504錯誤的臨時解決辦法是:
1、調整php-fpm.conf的相關設置:
32
30s
2、調整nginx.conf的相關設置:
fastcgi_connect_timeout
600;
fastcgi_send_timeout
600;
fastcgi_read_timeout
600;
fastcgi_buffer_size
256k;
fastcgi_buffers
16
256k;
fastcgi_busy_buffers_size
512k;
fastcgi_temp_file_write_size
512k;
四、終級解決方案:
標題3中所示的解決方案只能臨時解決問題,而如果網站的訪問量確實非常非常大,而Nginx+FastCGI只能對處理瞬間或短時間內的高並發有很好的效果,所以目前唯一的終極解決方案是:定時平滑重啟php-cgi。
具體配置如下:
1、寫一個非常簡單的腳本:
#vi
/home/www/scripts/php-fpm.sh
內容如下:
#!/bin/bash
#
This
script
run
at
*/1
/usr/local/php/sbin/php-fpm
reload
2、將腳本添加至計劃任務:
#crontab
-e
內容如下:
*/1
*
*
*
*
/home/www/scripts/php-fpm.sh
註:為了省事起見,也可以不寫腳本,直接在crontab里寫入php-fpm的平滑重啟命令。

㈤ php5.4.6怎樣重啟php-fpm

php5.4中php-fpm怎麼重啟?
php5.3.3以後源碼中已經內嵌了php-fpm,不用象以前的php版本一樣專門打補丁了,只需要在configure的時候添加編譯參數即可。
關於php-fpm的編譯參數有–enable-fpm–with-fpm-user=www–with-fpm-group=www–with-libevent-dir=libevent位置。
但是,php5.3.3以後的php-fpm不再支持php-fpm以前具有的/usr/local/php/sbin/php-fpm(start|stop|reload)等命令,需要使用信號控制:
master進程可以理解以下信號:

INT,TERM立刻終止
QUIT平滑終止
USR1重新打開日誌文件
USR2平滑重載所有worker進程並重新載入配置和二進制模塊
有了以上信號,php-fpm進程重啟就方便多了。
例子:
php-fpm關閉:

代碼示例:
kill-INT`cat/usr/local/php/var/run/php-fpm.pid`
php-fpm重啟:

代碼示例:
kill-USR2`cat/usr/local/php/var/run/php-fpm.pid`
說明:
cat部分是php-fpm的進程號,可能是我用的5.4的問題。沒有用php-fpm.pid,就沒有這個文件。
可以用psaux|grepphp-fpm,使用第一個進程的進程號,測試可行。

閱讀全文

與phpfpm平滑重啟相關的資料

熱點內容
皓強工具解壓步驟 瀏覽:690
部隊抗洪搶險命令範文 瀏覽:888
歐姆龍plc編程軟體使用教程 瀏覽:594
ai文件pdf 瀏覽:911
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:654
王者程序員都有誰 瀏覽:76
給牛換腳掌解壓 瀏覽:387
圍棋有多少種演算法 瀏覽:602
unity資源包在哪個文件夾 瀏覽:704
阿里雲伺服器遠程鏈接不成功 瀏覽:482
文件系統pdf 瀏覽:767
原神安卓區服什麼意思 瀏覽:38
貝殼app怎麼線上發布 瀏覽:161
如何挑選安卓系統機頂盒 瀏覽:55
安卓快充使用有什麼注意事項 瀏覽:911