国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯】一行代碼就將你的PHP-FPM內(nèi)存占用降低至少一半

30e8336b8229 / 641人閱讀

摘要:而這個(gè)子進(jìn)程只是呆坐在那里,什么事也不做,每個(gè)子進(jìn)程白白消耗超過(guò)的內(nèi)存。這些子進(jìn)程主要是由這個(gè)配置選項(xiàng)產(chǎn)生的。只要設(shè)置,就會(huì)有空閑的子進(jìn)程等在那里等待被使用。事情做完之后,子進(jìn)程會(huì)留在內(nèi)存中秒鐘時(shí)間,然后自己退出。

標(biāo)題直譯:如何減少PHP-FPM (php5-fpm)內(nèi)存占用50%
原標(biāo)題:How to reduce PHP-FPM (php5-fpm) RAM usage by about 50%
英文原文:http://linuxbsdos.com/2015/02...

PHP-FPMPHPFastCGI過(guò)程管理器。在類Unix操作系統(tǒng)(包括Linux以及BSD系統(tǒng))中,PHP-FPM通過(guò)安裝php5-fpm(Linux)或者php56-fpm(FreeBSD 10.1)來(lái)使用。

但是缺省安裝以及按照大量博客推薦安裝的PHP-FPM的最大問(wèn)題是它會(huì)消耗大量資源,包括內(nèi)存和CPU。本博客使用的服務(wù)器也遭遇了類似的命運(yùn)。因?yàn)槲乙彩前凑漳切┙坛贪惭b的,而教程里對(duì)于PHP-FPM的配置選項(xiàng)描述的不夠有效。

你可以在/etc/php5/fpm/pool.d目錄下發(fā)現(xiàn)這些低效的配置選項(xiàng)。舉例來(lái)說(shuō),以下是我的服務(wù)器(當(dāng)然不是目前這個(gè)站點(diǎn))上的那些低效選項(xiàng):

; Choose how the process manager will control the number of child processes.
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500

那臺(tái)服務(wù)器是一臺(tái)DigitalOcean Droplet,配置512M內(nèi)存。它上面運(yùn)行了一個(gè)新網(wǎng)站,即使完全空閑時(shí),也必須要靠交換內(nèi)存才能避免僵死。執(zhí)行top命令顯示了服務(wù)器上占用內(nèi)存最多的進(jìn)程。

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
13891 cont      20     396944  56596  33416 S  0.0 11.3   :14.05 php5-fpm
13889 cont      20     396480  56316  32916 S  0.0 11.2   :17.67 php5-fpm
13887 cont      20     624212  55088  32008 S  0.0 11.0   :14.02 php5-fpm
13890 cont      20     396384  55032  32312 S  0.0 11.0   :13.39 php5-fpm
13888 cont      20     397056  54972  31988 S  0.0 11.0   :14.16 php5-fpm
14464 cont      20     397020  54696  31832 S  0.0 10.9   :09.44 php5-fpm
13892 cont      20     396640  54704  31936 S  0.0 10.9   :12.84 php5-fpm
 
13883 cont      20     396864  54692  31940 S  0.0 10.9   :15.64 php5-fpm
13893 cont      20     396860  54628  32004 S  0.0 10.9   :15.13 php5-fpm
13885 cont      20     396852  54412  32116 S  0.0 10.8   :13.94 php5-fpm
13884 cont      20     395164  53916  32364 S  0.0 10.7   :13.51 php5-fpm
13989 cont      20     394960  53548  32108 S  3.7 10.7   :14.37 php5-fpm
2778 mysql     20    1359152  31704   1728 S  0.7  6.3   1:38.80 mysqld
 
13849 root      20     373832   1180    188 S  0.0  0.2   :03.27 php5-fpm

輸出結(jié)果顯示有12個(gè)php5-fpm子進(jìn)程(用戶名是cont)和一個(gè)主進(jìn)程(用戶名是root)。而這12個(gè)子進(jìn)程只是呆坐在那里,什么事也不做,每個(gè)子進(jìn)程白白消耗超過(guò)10%的內(nèi)存。這些子進(jìn)程主要是由pm=dynamic這個(gè)配置選項(xiàng)產(chǎn)生的。

老實(shí)說(shuō),絕大部分的云主機(jī)擁有者也不知道所有這些配置選項(xiàng)是干什么用的,只是簡(jiǎn)單地復(fù)制粘貼而已。我也不準(zhǔn)備假裝我了解每個(gè)PHP配置文件里的每一個(gè)選項(xiàng)的目的和意義。我在很大程度上也是復(fù)制粘貼的受害者。

但是我經(jīng)常檢查服務(wù)器的資源占用情況,困惑于為什么我的服務(wù)器占用這么多的內(nèi)存和CPU。舉另外一個(gè)例子,是這臺(tái)服務(wù)器上的free -mt命令的結(jié)果:

              total       used       free     shared    buffers     cached
Mem:           490        480          9         31          6         79
-/+ buffers/cache:        393         96
Swap:         2047        491       1556
Total:        2538        971       1566

在沒(méi)有任何訪問(wèn)量的情況下,也幾乎有整整1G的內(nèi)存(實(shí)際內(nèi)存加上交換內(nèi)存)被占用。當(dāng)然,通過(guò)調(diào)整配置pm的數(shù)量可以有所改變,但只是輕微的。只要設(shè)置pm=dynamic,就會(huì)有空閑的子進(jìn)程等在那里等待被使用。

直到讀了一篇文章《A better way to run PHP-FPM》(更好地運(yùn)行PHP-FPM)之后,我開(kāi)始意識(shí)到應(yīng)該如何修改我的配置文件。那篇文章是大約一年前寫的,令人失望的是我從昨天晚上搜索相關(guān)主題時(shí)才看到它。如果你也有服務(wù)器并且使用PHP-FPM的話,我建議你好好讀一下那篇文章。

讀完文章之后,我修改了我的pm選項(xiàng),如下:

; Choose how the process manager will control the number of child processes.
pm = ondemand
pm.max_children = 75
pm.process_idle_timeout = 10s
pm.max_requests = 500

最主要的改動(dòng)就是用pm=ondemand替換了pm=dynamic。這一改動(dòng)對(duì)資源占用的影響是巨大的。下面是改動(dòng)并重新加載php5-fpm之后運(yùn)行free -mt的結(jié)果:

              total       used       free     shared    buffers     cached
Mem:           490        196        293         28          9         70
-/+ buffers/cache:        116        373
Swap:         2047        452       1595
Total:        2538        649       1888

和之前的結(jié)果對(duì)比,內(nèi)存使用量下降了50%。產(chǎn)生這一下降的原因通過(guò)執(zhí)行top命令一目了然:

 2778 mysql     20    1359152  56708   3384 S  0.0 11.3   2:11.06 mysqld                               
26896 root      20     373828  19000  13532 S  0.0  3.8   :02.42 php5-fpm                             25818 root      20      64208   4148   1492 S  0.0  0.8   :01.88 php5-fpm
25818 root      20      64208   4148   1492 S  0.0  0.8   :01.88 php5-fpm                            
17385 root      20      64208   4068   1416 S  0.0  0.8   :02.23 php5-fpm                              1465 ossec     20      15592   2960    480 S  0.0  0.6   :08.60 ossec-analysisd                      
 1500 root      20       6312   2072    328 S  0.0  0.4   :45.55 ossec-syscheckd                          1 root      20      33444   1940    812 S  0.0  0.4   :03.29 init
 

你注意到這里已經(jīng)沒(méi)有子進(jìn)程了嗎?它們?nèi)ツ睦锪耍窟@就是設(shè)置pm=ondemand的作用。這樣設(shè)置之后,只有當(dāng)有需要的時(shí)候,子進(jìn)程才會(huì)被產(chǎn)生。事情做完之后,子進(jìn)程會(huì)留在內(nèi)存中10秒鐘時(shí)間(pm.process_idle_timeout = 10s),然后自己退出。

我只是對(duì)PHP-FPM的配置做了一點(diǎn)小小的修改,就節(jié)省了50%的內(nèi)存。當(dāng)然,這臺(tái)服務(wù)器沒(méi)有承受大并發(fā)的壓力,但我相信它能頂?shù)米『侠淼母哓?fù)載,考慮到它只有512M內(nèi)存。再加上Nginx微緩存的配置,我想它會(huì)做的更好。當(dāng)然還有另外一些PHP-FPMPercona MySQL的配置優(yōu)化我還沒(méi)有做。這里只是給大家分享一個(gè)我覺(jué)得非常有用的小竅門。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/23343.html

相關(guān)文章

  • 最新超詳細(xì)linux部署wordpress步驟

    摘要:場(chǎng)景一臺(tái)沒(méi)有安裝過(guò)的機(jī)器,是必須的,這個(gè)相對(duì)簡(jiǎn)單,本文不贅述的安裝準(zhǔn)備工作上面三個(gè)文件使我們接下來(lái)需要用到的,版本號(hào)不需要一致,不過(guò)最好用最新的,我剛開(kāi)始使用的比較老的,會(huì)出現(xiàn)編譯錯(cuò)誤。 最近公司有需求用到wordpress,其實(shí)我最先也是按照網(wǎng)上的教程一步一步來(lái)的,可是很多教程要不就是關(guān)鍵步驟不清晰,要不就是從哪兒轉(zhuǎn)載一半的貼子。根本沒(méi)法看,這篇文章希望能讓大家看到,我會(huì)盡量將我的每...

    張利勇 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<