真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

解決PHP-FPM進(jìn)程導(dǎo)致的服務(wù)器內(nèi)存占用

最近php-fpm服務(wù)器經(jīng)常內(nèi)存偏高。

成都創(chuàng)新互聯(lián)公司,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營(yíng)銷型網(wǎng)站制作、響應(yīng)式網(wǎng)站、展示型做網(wǎng)站、網(wǎng)站制作等服務(wù),幫助中小企業(yè)通過(guò)網(wǎng)站體現(xiàn)價(jià)值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷推廣問(wèn)題。

最簡(jiǎn)單也是馬上見(jiàn)效的方法是重啟服務(wù),干脆重啟服務(wù)器,這個(gè)對(duì)于某些臨時(shí)進(jìn)程導(dǎo)致的內(nèi)存虛高可能有效,這里顯然是不行滴。很可能影響到業(yè)務(wù)。

解決

查看服務(wù)器內(nèi)存及進(jìn)程狀況

解決PHP-FPM進(jìn)程導(dǎo)致的服務(wù)器內(nèi)存占用

php-fpm參數(shù)概述

下面對(duì)每個(gè)參數(shù)的意義進(jìn)行簡(jiǎn)要的概述分析

pm=dynamic

該項(xiàng)共有三種設(shè)置方式 static 、 dynamic 、ondemand

  • 一種是pm = static,始終保持一個(gè)固定數(shù)量的子進(jìn)程,這個(gè)數(shù)由pm.max_children定義,這種方式很不靈活,也通常不是默認(rèn)的。

  • 另一種是pm = dynamic,他是這樣的,啟動(dòng)時(shí),會(huì)產(chǎn)生固定數(shù)量的子進(jìn)程(由pm.start_servers控制)可以理解成最小子進(jìn)程數(shù),而最大子進(jìn)程數(shù)則由pm.max_children去控制,這樣的話,子進(jìn)程數(shù)會(huì)在最大和最小數(shù)范圍中變化,還沒(méi)有完,閑置的子進(jìn)程數(shù)還可以由另2個(gè)配置控制,分別是pm.min_spare_servers和pm.max_spare_servers,也就是閑置的子進(jìn)程也可以有最小和最大的數(shù)目,而如果閑置的子進(jìn)程超出了pm.max_spare_servers,則會(huì)被殺掉。(注意,pm.max_spare_servers應(yīng)小于pm.max_children)

  • 第三種就是pm = ondemand模式,這種模式和pm = dynamic相反,把內(nèi)存放在第一位,他的工作模式很簡(jiǎn)單,每個(gè)閑置進(jìn)程,在持續(xù)閑置了pm.process_idle_timeout秒后就會(huì)被殺掉,有了這個(gè)模式,到了服務(wù)器低峰期內(nèi)存自然會(huì)降下來(lái),如果服務(wù)器長(zhǎng)時(shí)間沒(méi)有請(qǐng)求,就只會(huì)有一個(gè)php-fpm主進(jìn)程,當(dāng)然弊端是,遇到高峰期或者如果pm.process_idle_timeout的值太短的話,無(wú)法避免服務(wù)器頻繁創(chuàng)建進(jìn)程的問(wèn)題,因此pm = dynamic和pm = ondemand誰(shuí)更適合視實(shí)際情況而定。

可以看到,pm = dynamic模式非常靈活,也通常是默認(rèn)的選項(xiàng)。但是,dynamic模式為了最大化地優(yōu)化服務(wù)器響應(yīng),會(huì)造成更多內(nèi)存使用,因?yàn)檫@種模式只會(huì)殺掉超出最大閑置進(jìn)程數(shù)(pm.max_spare_servers)的閑置進(jìn)程,比如最大閑置進(jìn)程數(shù)是30,最大進(jìn)程數(shù)是50,然后網(wǎng)站經(jīng)歷了一次訪問(wèn)高峰,此時(shí)50個(gè)進(jìn)程全部忙碌,0個(gè)閑置進(jìn)程數(shù),接著過(guò)了高峰期,可能沒(méi)有一個(gè)請(qǐng)求,于是會(huì)有50個(gè)閑置進(jìn)程,但是此時(shí)php-fpm只會(huì)殺掉20個(gè)子進(jìn)程,始終剩下30個(gè)進(jìn)程繼續(xù)作為閑置進(jìn)程來(lái)等待請(qǐng)求,這可能就是為什么過(guò)了高峰期后即便請(qǐng)求數(shù)大量減少服務(wù)器內(nèi)存使用卻也沒(méi)有大量減少,也可能是為什么有些時(shí)候重啟下服務(wù)器情況就會(huì)好很多,因?yàn)橹貑⒑螅琾hp-fpm的子進(jìn)程數(shù)會(huì)變成最小閑置進(jìn)程數(shù),而不是之前的最大閑置進(jìn)程數(shù)。

max_requests

即是說(shuō)每個(gè)進(jìn)程若超過(guò)這個(gè)數(shù)目(跟php進(jìn)程有一點(diǎn)點(diǎn)關(guān)系,關(guān) 系不大),就自動(dòng)殺死.

max_children

最大進(jìn)程數(shù),一般來(lái)說(shuō)一臺(tái)服務(wù)器正常情況下每一個(gè)php-fpm所耗費(fèi)的內(nèi)存在40M左右,理想最大進(jìn)程數(shù)可計(jì)算為1000/40=25,但是實(shí)際上內(nèi)存不止有php-fpm在占用,故可根據(jù)實(shí)際情況來(lái),適當(dāng)減小使得內(nèi)存不會(huì)因php-fpm進(jìn)程過(guò)多而耗盡。而如果我 的”max_children”設(shè)置的較小,比如5-10個(gè),那么php-fpm就會(huì)“很累”,處理速度也很慢,等待的時(shí)間也較長(zhǎng)。如果長(zhǎng)時(shí)間沒(méi)有得到處 理的請(qǐng)求就會(huì)出現(xiàn)504 Gateway Time-out這個(gè)錯(cuò)誤。

request_terminate_timeout

據(jù)你服務(wù)器的性能進(jìn)行設(shè)定。一般來(lái)說(shuō)性能越好你可以設(shè)置越高,20分鐘-30分鐘都可以。由于我的服務(wù)器PHP腳本需要長(zhǎng)時(shí)間運(yùn)行,有的可能會(huì)超過(guò)10分 鐘因此我設(shè)置了1200秒,這樣不會(huì)導(dǎo)致php-fpm死掉而出現(xiàn)502 Bad gateway這個(gè)錯(cuò)誤。

pm.start_servers

動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量

pm.min_spare_servers

動(dòng)態(tài)方式下的最小php-fpm閑置進(jìn)程數(shù)

pm.min_spare_servers

動(dòng)態(tài)方式下的最大php-fpm閑置進(jìn)程數(shù)量

由于方便管理把php-fpm配置文件拆開(kāi)了。在/opt/plesk/php/7.1/etc/php-fpm.d目錄下

解決PHP-FPM進(jìn)程導(dǎo)致的服務(wù)器內(nèi)存占用

這樣我們就可以定位到是哪個(gè)占用

[root@orion php-fpm.d]# ls

aabus.com.conf  coachrun.com.conf  jadiamortgage.com.conf  jadia.net.conf  livechat.taketours.com.conf  lltours.com.conf  sunshineboston.com.conf

[root@orion php-fpm.d]# vim livechat.taketours.com.conf

這是之前的配置文件:

pm = ondemand                       #按需ondemand
pm.max_children = 5                 #最大進(jìn)程數(shù)
pm.max_spare_servers = 1            #動(dòng)態(tài)方式下的最大php-fpm閑置進(jìn)程數(shù)量
pm.min_spare_servers = 1            #動(dòng)態(tài)方式下的最小php-fpm閑置進(jìn)程數(shù)
pm.process_idle_timeout = 10s   #按需方式下多長(zhǎng)時(shí)間殺掉php-fpm子進(jìn)程,直到master進(jìn)程
pm.start_servers = 1                #動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量

修改后的配置:

pm = ondemand
pm.max_children = 5
pm.max_spare_servers = 2
pm.min_spare_servers = 2
pm.process_idle_timeout = 10s
pm.start_servers = 1
pm.max_requests = 1024              指的是每個(gè)子進(jìn)程在處理了1024個(gè)請(qǐng)求數(shù)量之后就重啟

跟蹤一陣時(shí)間后發(fā)現(xiàn)內(nèi)存在30000kb左右波動(dòng),進(jìn)程使用的物理內(nèi)存百分比才0.1%
解決PHP-FPM進(jìn)程導(dǎo)致的服務(wù)器內(nèi)存占用

參考文章: https://www.centos.bz/2018/03/php-fpm%E8%BF%9B%E7%A8%8B%E8%BF%87%E5%A4%9A%EF%BC%8C%E5%86%85%E5%AD%98%E8%80%97%E5%B0%BD/


網(wǎng)頁(yè)題目:解決PHP-FPM進(jìn)程導(dǎo)致的服務(wù)器內(nèi)存占用
網(wǎng)頁(yè)路徑:http://weahome.cn/article/pgosjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部