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

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

如何在Web中配置php-fpm調(diào)優(yōu)?

一、php-fpm.conf 主要配置參數(shù)

代縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書(shū)合作)期待與您的合作!

  • pm = dynamic; 表示使用哪種進(jìn)程數(shù)量管理方式

    dynamic 表示 php-fpm 進(jìn)程數(shù)是動(dòng)態(tài)的,最開(kāi)始是 pm.start_servers 指定的數(shù)量,如果請(qǐng)求較多,則會(huì)自動(dòng)增加,保證空閑的進(jìn)程數(shù)不小于pm.min_spare_servers,如   果進(jìn)程數(shù)較多,也會(huì)進(jìn)行相應(yīng)清理,保證多余的進(jìn)程數(shù)不多于 pm.max_spare_servers;
    
    static 表示 php-fpm 進(jìn)程數(shù)是靜態(tài)的,進(jìn)程數(shù)自始至終都是 pm.max_children 指定的數(shù)量,不再增加或減少。
  • pm.max_children = 300; 靜態(tài)方式下開(kāi)啟的php-fpm進(jìn)程數(shù)量
  • pm.start_servers = 20; 動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量
  • pm.min_spare_servers = 5; 動(dòng)態(tài)方式下的最小php-fpm進(jìn)程數(shù)量
  • pm.max_spare_servers = 35; 動(dòng)態(tài)方式下的最大php-fpm進(jìn)程數(shù)量

    注意:數(shù)值設(shè)置,參考自己的實(shí)際硬件配置,可以參考 總內(nèi)存/30M 來(lái)計(jì)算。

如果 pm 設(shè)置為 static,那么其實(shí)只有 pm.max_children 這個(gè)參數(shù)生效。系統(tǒng)會(huì)開(kāi)啟設(shè)置數(shù)量的 php-fpm 進(jìn)程。

如果 pm設(shè)置為 dynamic,那么 pm.max_children 參數(shù)失效,后面3個(gè)參數(shù)生效。系統(tǒng)會(huì)在 php-fpm 運(yùn)行開(kāi)始的時(shí)候啟動(dòng) pm.start_servers 個(gè) php-fpm 進(jìn)程,然后根據(jù)系統(tǒng)的需求動(dòng)態(tài)在 pm.min_spare_servers 和 pm.max_spare_servers 之間調(diào)整 php-fpm 進(jìn)程數(shù)。

1、pm 方式選擇

事實(shí)上,跟 Apache 一樣,運(yùn)行的 PHP 程序在執(zhí)行完成后,或多或少會(huì)有內(nèi)存泄露的問(wèn)題。這也是為什么開(kāi)始的時(shí)候一個(gè) php-fpm 進(jìn)程只占用 3M 左右內(nèi)存,運(yùn)行一段時(shí)間后就會(huì)上升到 20-30M 的原因了。

對(duì)于內(nèi)存大的服務(wù)器(比如8G以上)來(lái)說(shuō),用靜態(tài)的 max_children 實(shí)際上更為妥當(dāng),因?yàn)檫@樣不需要進(jìn)行額外的進(jìn)程數(shù)目控制,會(huì)提高效率。因?yàn)轭l繁開(kāi)關(guān) php-fpm 進(jìn)程也會(huì)有時(shí)滯,所以內(nèi)存夠大的情況下開(kāi)靜態(tài)效果會(huì)更好。數(shù)量也可以根據(jù) 總內(nèi)存/30M 得到,比如 8GB 內(nèi)存可以設(shè)置為100,那么 php-fpm 耗費(fèi)的內(nèi)存就能控制在 2G-3G 的樣子。

如果內(nèi)存稍微小點(diǎn),比如 1~2G,那么指定動(dòng)態(tài)的進(jìn)程數(shù)量更加有利于服務(wù)器的穩(wěn)定。這樣可以保證 php-fpm 只獲取夠用的內(nèi)存,將不多的內(nèi)存分配給其他應(yīng)用去使用,會(huì)使系統(tǒng)的運(yùn)行更加暢通。

對(duì)于小內(nèi)存的服務(wù)器來(lái)說(shuō),比如 256M 內(nèi)存的 vps,即使按照一個(gè) 20M 的內(nèi)存量來(lái)算,10個(gè) php-cgi 進(jìn)程就將耗掉200M內(nèi)存,那系統(tǒng)的崩潰就應(yīng)該很正常了。

因此應(yīng)該盡量地控制 php-fpm 進(jìn)程的數(shù)量,大體明確其他應(yīng)用占用的內(nèi)存后,給它指定一個(gè)靜態(tài)的小數(shù)量,會(huì)讓系統(tǒng)更加平穩(wěn)一些。

或者使用動(dòng)態(tài)方式,因?yàn)閯?dòng)態(tài)方式會(huì)結(jié)束掉多余的進(jìn)程,可以回收釋放一些內(nèi)存,所以推薦在內(nèi)存較少的服務(wù)器或VPS上使用,具體最大數(shù)量根據(jù) 總內(nèi)存/20M 得到。

比如說(shuō) 512M 的 VPS,建議 pm.max_spare_servers 設(shè)置為 20。至于 pm.min_spare_servers,則建議根據(jù)服務(wù)器的負(fù)載情況來(lái)設(shè)置,比較合適的值在 5~10 之間。

總結(jié):內(nèi)存小的建議用動(dòng)態(tài)(pm = dynamic),內(nèi)存大的建議用靜態(tài)(pm = static)。

2、pm.max_children 設(shè)置多大

這個(gè)值原則上是越大越好,php-cgi的進(jìn)程多了就會(huì)處理的很快,排隊(duì)的請(qǐng)求就會(huì)很少。

設(shè)置”max_children” 也需要根據(jù)服務(wù)器的性能進(jìn)行設(shè)定。

計(jì)算方式如下:

一般來(lái)說(shuō)一臺(tái)服務(wù)器正常情況下每一個(gè)php-cgi所耗費(fèi)的內(nèi)存在20M~30M左右,因此我的”max_children”我設(shè)置成40個(gè),20M*40=800M也就是說(shuō)在峰值的時(shí)候所有PHP-CGI所耗內(nèi)存在800M以內(nèi),低于我的有效內(nèi)存2Gb。

而如果我 的”max_children”設(shè)置的較小,比如5-10個(gè),那么php-cgi就會(huì)“很累“,處理速度也很慢,等待的時(shí)間也較長(zhǎng),占用的CPU也很高。

如果長(zhǎng)時(shí)間沒(méi)有得到處理的請(qǐng)求就會(huì)出現(xiàn) 504 Gateway Time-out 這個(gè)錯(cuò)誤,而正在處理的很累的那幾個(gè)php-cgi如果遇到了問(wèn)題就會(huì)出現(xiàn) 502 Bad gateway 這個(gè)錯(cuò)誤。

max_children較好的設(shè)置方式根據(jù)req/s(吞吐率,單位時(shí)間里服務(wù)器處理的最大請(qǐng)求數(shù),單位req/s)來(lái)設(shè)置,若程序是 100 req/s 的處理能力,那么就設(shè)置 100比較好,這是動(dòng)態(tài)來(lái)調(diào)整的。

3、request_terminate_timeout 設(shè)置多大

計(jì)算方式如下:

如果你的服務(wù)器性能足夠好,且寬帶資源足夠充足,PHP腳本沒(méi)有循環(huán)或BUG的話你可以直接將”request_terminate_timeout”設(shè) 置成0s。0s的含義是讓PHP-CGI一直執(zhí)行下去而沒(méi)有時(shí)間限制。

而如果你做不到這一點(diǎn),也就是說(shuō)你的PHP-CGI可能出現(xiàn)某個(gè)BUG,或者你的寬帶不夠充足或者其他的原因?qū)е履愕腜HP-CGI能夠假死那么就建議你給”request_terminate_timeout”賦一個(gè)值,這個(gè)值可以根 據(jù)你服務(wù)器的性能進(jìn)行設(shè)定。

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

二、配置 php 慢日志,用于監(jiān)控

1、開(kāi)啟slow log方法

如果你使用php-fpm來(lái)管理php的話,你可以通過(guò)如下方法開(kāi)啟:

首先打開(kāi) php-fpm.conf 配置文件。

vim /usr/local/php/etc/php-fpm.conf

PHP 5.3.3 之前設(shè)置如下:

5s
< value name="slowlog">logs/php-fpm-slowlog.log

PHP 5.3.3 之后設(shè)置以下如下:

request_slowlog_timeout = 5s
slowlog = /usr/local/php/var/log/php-fpm-slowlog.log
request_terminate_timeout = 10s

說(shuō)明:

  • request_slowlog_timeout 是腳本超過(guò)多長(zhǎng)時(shí)間,就可以記錄到日志文件;
  • slowlog 是日志文件的存儲(chǔ)路徑;
  • request_terminate_timeout 將執(zhí)行時(shí)間太長(zhǎng)的進(jìn)程直接終止;

2、slow log使用

開(kāi)啟后,如果有腳本執(zhí)行超過(guò)指定的時(shí)間,就會(huì)在指定的日志文件中寫(xiě)入類似如下的信息:

[06-Dec-2017 20:05:31]  [pool www] pid 22271
script_filename = /home/wwwroot/default/tz/tz.php
[0x00007f75e662a398] preg_match_all() /home/wwwroot/default/tz/tz.php:453
[0x00007f75e6627f08] sys_linux() /home/wwwroot/default/tz/tz.php:410

由于我把slow log日志放在 /usr/local/php/var/log/php-fpm-slowlog.log 這里,只需要查看此日志即可!

vim /usr/local/php/var/log/php-fpm-slowlog.log  

4、slow log 分析

下面是一張日志圖片,來(lái)做一個(gè)簡(jiǎn)單的分析

說(shuō)明:

  • script_filename 是入口文件;
  • session_start、session、run、start、sleep : 說(shuō)明是執(zhí)行這個(gè)方法的時(shí)候超過(guò)執(zhí)行時(shí)間的。
  • 每行冒號(hào)后面的數(shù)字是行號(hào)。

開(kāi)啟后,在錯(cuò)誤日志文件(php-fpm.log)中也有相關(guān)記錄。如下:

[06-Dec-2017 20:59:53] NOTICE: finished trace of 31450
[06-Dec-2017 20:59:56] WARNING: [pool www] child 31437, script '/home/wwwroot/default/tz/tz.php' (request: "GET /tz/tz.php") executing too slow (1.047562 sec), logging
[06-Dec-2017 20:59:56] NOTICE: child 31437 stopped for tracing
[06-Dec-2017 20:59:56] NOTICE: about to trace 31437
[06-Dec-2017 20:59:56] NOTICE: finished trace of 31437
[06-Dec-2017 21:00:05] WARNING: [pool www] child 31448, script '/home/wwwroot/default/tz/tz.php' (request: "GET /tz/tz.php") executing too slow (1.013736 sec), logging
[06-Dec-2017 21:00:05] NOTICE: child 31448 stopped for tracing
[06-Dec-2017 21:00:05] NOTICE: about to trace 31448
[06-Dec-2017 21:00:05] NOTICE: finished trace of 31448
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31481, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.134845 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31478, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.169301 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31475, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.009847 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31468, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.019848 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31455, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.147848 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31451, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.076841 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31447, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.119846 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31443, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.177849 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31436, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.092818 sec), logging
[06-Dec-2017 21:00:10] WARNING: [pool www] child 31433, script '/home/wwwroot/default/TTTTT_GAME/index.php' (request: "GET /TTTTT_GAME/index.php") executing too slow (1.162842 sec), logging
[06-Dec-2017 21:00:10] NOTICE: child 31433 stopped for tracing
[06-Dec-2017 21:00:10] NOTICE: about to trace 31433
[06-Dec-2017 21:00:10] ERROR: failed to ptrace(PEEKDATA) pid 31433: Input/output error (5)
[06-Dec-2017 21:00:10] NOTICE: finished trace of 31433
[06-Dec-2017 21:00:10] NOTICE: child 31436 stopped for tracing
[06-Dec-2017 21:00:10] NOTICE: about to trace 31436

三、配置 php-fpm 進(jìn)程可打開(kāi)的最大文件句柄數(shù)

rlimit_files = 1024

默認(rèn)1024,此值可以不需要配置

四、php-fpm占用cpu和內(nèi)存過(guò)高100% 解決辦法

服務(wù)器php-fpm突然占用cpu和內(nèi)存過(guò)高,它的服務(wù)器配置是4核8G內(nèi)存。由于php-fpm占用cpu過(guò)高從而導(dǎo)致經(jīng)常出現(xiàn)“502 Bad gateway”。

服務(wù)器環(huán)境:LNMP一鍵安裝包,

用了“雅黑探針”來(lái)查看服務(wù)器的性能情況,結(jié)果如下:

當(dāng)然,除了用探針之外,如果你在服務(wù)器下用系統(tǒng)命令:top也是可以查看的:

1、CPU 指標(biāo)解釋

Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

  • us:用戶空間占用CPU百分比
  • sy:內(nèi)核空間占用CPU百分比
  • ni:用戶進(jìn)程空間內(nèi)改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU百分比
  • id:空閑CPU百分比
  • wa:等待輸入輸出的CPU時(shí)間百分比
  • hi:硬件中斷
  • si:軟件中斷
  • st:實(shí)時(shí)

解決辦法如下:

多查看日志,根據(jù)日志來(lái)做解決,最后就是再查看配置文件,是否需要配置調(diào)優(yōu)?

由于有一些步驟不太好表達(dá)出來(lái),大家請(qǐng)簡(jiǎn)單的看一下邏輯吧,需要你懂很多方面的東西才能夠明白它。此文中有鏈接的地方請(qǐng)大家一定要看一下,否則你是不能夠明白的。

2、查看它的php-fpm.conf配置

從上面配置文件可以看出,它采用的是動(dòng)態(tài),默認(rèn)的啟動(dòng)進(jìn)程數(shù)是4個(gè),最大的是6個(gè),最小的是4個(gè)。

3、查看linux平均負(fù)載

從上面可以看出,6 個(gè) php-fpm 進(jìn)程占用的 cpu 空間都很高,平均負(fù)載(load average)情況如下:

1分鐘平均負(fù)載:2.32;

5分鐘平均負(fù)載:2.18;

15分鐘平均負(fù)載:3.95;

可以說(shuō)它現(xiàn)在的平均負(fù)載接近了它的cpu總核數(shù):4;需要考慮服務(wù)器配置升級(jí)!

4、Linux 平均負(fù)載 Load Average

1、 Load Average

系統(tǒng)負(fù)載(System Load)是系統(tǒng)CPU繁忙程度的度量,即有多少進(jìn)程在等待被CPU調(diào)度(進(jìn)程等待隊(duì)列的長(zhǎng)度)。

平均負(fù)載(Load Average)是一段時(shí)間內(nèi)系統(tǒng)的平均負(fù)載,這個(gè)一段時(shí)間一般取1分鐘、5分鐘、15分鐘。

2、查看Load Average

top命令,w命令,uptime等命令都可以查看系統(tǒng)負(fù)載;

3、Load Average 的3個(gè)數(shù)值說(shuō)明

我拿上圖中的 load average:1.97,2.14,2.99 來(lái)舉例:

  • 第一位1.97:表示最近1分鐘平均負(fù)載
  • 第二位2.14:表示最近5分鐘平均負(fù)載
  • 第三位2.99:表示最近15分鐘平均負(fù)載

4、Load Average 值的含義

1、單核處理器

(例如:1個(gè)1核cpu)

假設(shè)我們的系統(tǒng)是單CPU單內(nèi)核的,把它比喻成是一條單向馬路,把CPU任務(wù)比作汽車。

當(dāng)車不多的時(shí)候,load <1;

當(dāng)車占滿整個(gè)馬路的時(shí)候 load=1;

當(dāng)馬路都站滿了,而且馬路外還堆滿了汽車的時(shí)候,load>1;

2、多核處理器

(例如:2個(gè)cpu或一個(gè)2核的cpu)

我們經(jīng)常會(huì)發(fā)現(xiàn)服務(wù)器Load > 1但是運(yùn)行仍然不錯(cuò),那是因?yàn)榉?wù)器是多核處理器(Multi-core)。

假設(shè)我們服務(wù)器一個(gè)CPU是2核,那么將意味我們擁有2條馬路,我們的Load = 2時(shí),所有馬路都跑滿車輛。

提示:

芯片廠商往往在一個(gè)CPU內(nèi)部,包含多個(gè)CPU核心,這被稱為多核CPU。

在系統(tǒng)負(fù)荷方面,多核CPU與多個(gè)CPU效果類似,所以考慮系統(tǒng)負(fù)荷的時(shí)候,必須考慮這臺(tái)電腦有幾個(gè)CPU、每個(gè)CPU有幾個(gè)核心。然后,把系統(tǒng)負(fù)荷除以總的核心數(shù),只要每個(gè)核心的負(fù)荷不超過(guò)1.0,就表明電腦正常運(yùn)行。

3、查看服務(wù)器 cpu 信息

cat /proc/cpuinfo  

4、查看服務(wù)器 cpu 總核心數(shù)

grep 'model name' /proc/cpuinfo | wc -l 
或
grep -c 'model name' /proc/cpuinfo  

5、Load Average 警惕值(單核)

Load < 0.7時(shí):系統(tǒng)很閑,馬路上沒(méi)什么車,要考慮多部署一些服務(wù)

0.7 < Load < 1時(shí):系統(tǒng)狀態(tài)不錯(cuò),馬路可以輕松應(yīng)對(duì)

Load == 1時(shí):系統(tǒng)馬上要處理不多來(lái)了,趕緊找一下原因

Load > 1時(shí):馬路已經(jīng)非常繁忙了,進(jìn)入馬路的每輛汽車都要無(wú)法很快的運(yùn)行

6、Load Average 關(guān)鍵值(單核)

通常我們先看15分鐘load,如果load很高,再看1分鐘和5分鐘負(fù)載,查看是否有下降趨勢(shì)。

1分鐘負(fù)載值 > 1,那么我們不用擔(dān)心,但是如果15分鐘負(fù)載都超過(guò)1,我們要趕緊看看發(fā)生了什么事情。所以我們要根據(jù)實(shí)際情況查看這三個(gè)值。

現(xiàn)在相信大家都知道,"load average"一共返回三個(gè)平均值:1分鐘系統(tǒng)負(fù)荷、5分鐘系統(tǒng)負(fù)荷,15分鐘系統(tǒng)負(fù)荷;

如果只有1分鐘的系統(tǒng)負(fù)荷大于1.0,其他兩個(gè)時(shí)間段都小于1.0,這表明只是暫時(shí)現(xiàn)象,問(wèn)題不大。

如果15分鐘內(nèi),平均系統(tǒng)負(fù)荷大于1.0(調(diào)整CPU核心數(shù)之后),表明問(wèn)題持續(xù)存在,不是暫時(shí)現(xiàn)象。所以,你應(yīng)該主要觀察"15分鐘系統(tǒng)負(fù)荷",將它作為電腦正常運(yùn)行的指標(biāo)。

7、結(jié)合具體情況具體分析(單核)

  • 1分鐘Load>1,5分鐘Load<1,15分鐘Load<1:短期內(nèi)繁忙,中長(zhǎng)期空閑,初步判斷是一個(gè)“抖動(dòng)”,或者是“擁塞前兆”
  • 1分鐘Load>1,5分鐘Load>1,15分鐘Load<1:短期內(nèi)繁忙,中期內(nèi)緊張,很可能是一個(gè)“擁塞的開(kāi)始”
  • 1分鐘Load>1,5分鐘Load>1,15分鐘Load>1:短、中、長(zhǎng)期都繁忙,系統(tǒng)“正在擁塞”
  • 1分鐘Load<1,5分鐘Load>1,15分鐘Load>1:短期內(nèi)空閑,中、長(zhǎng)期繁忙,不用緊張,系統(tǒng)“擁塞正在好轉(zhuǎn)”

184 total :184個(gè)總進(jìn)程數(shù)

4 running:4個(gè)正在運(yùn)行的進(jìn)程數(shù)

143 sleeping:180個(gè)睡眠的進(jìn)程數(shù)

0 stoppe:0個(gè)停止的進(jìn)程數(shù)

0 zombie:0個(gè)凍結(jié)進(jìn)程數(shù)

5、更改 php-fpm.conf 配置文件 來(lái)做調(diào)優(yōu)

由于服務(wù)器是8G內(nèi)存,按理說(shuō)應(yīng)該可以啟動(dòng) 200 個(gè)左右的 php-fpm 進(jìn)程,于是我修改如下:

除了以上配置測(cè)試了之外,我還把“pm = dynamic”修改成了“pm= static”配置來(lái)做測(cè)試,結(jié)果都不理想,具體結(jié)果向下看:

6、再一次查看linux平均負(fù)載

從上面配置可以看出來(lái),每一個(gè)php-fpm雖然占用的cpu空間少了,但是總量依然還是接近100%。

而且平均負(fù)載(load average)情況如下:

1分鐘平均負(fù)載:289.73;

5分鐘平均負(fù)載:264.27;

15分鐘平均負(fù)載:179.20;

可以說(shuō)它現(xiàn)在的平均負(fù)載接遠(yuǎn)遠(yuǎn)超過(guò)了總cpu核數(shù):4;必須升級(jí)服務(wù)器配置。

之所以這么高,除了它本身服務(wù)器配置跟不上之外,還有一個(gè)就是我把pm.max_spare_servers設(shè)置成了512,如果一個(gè)線程占用20M內(nèi)存,則需要512*20;而它現(xiàn)在的服務(wù)器只有8G內(nèi)存4核CPU;因此這個(gè)負(fù)載才能達(dá)到了200多。這里也算是測(cè)試的一個(gè)小失誤吧!

正常情況下,一個(gè)線程占用內(nèi)存20~30M,8G內(nèi)存設(shè)置100~200就足夠了。

184 total :678個(gè)總進(jìn)程數(shù)

4 running:211個(gè)正在運(yùn)行的進(jìn)程數(shù)

143 sleeping:327個(gè)睡眠的進(jìn)程數(shù)

0 stoppe:140個(gè)停止的進(jìn)程數(shù)

0 zombie:0個(gè)凍結(jié)進(jìn)程數(shù)

總結(jié):

因?yàn)槭д`測(cè)試,我再重新把配置文件修改成:“pm= static”和 "pm.max_children =100",依然cpu和內(nèi)存還是占用很高,負(fù)載非常的高,這完全是沒(méi)有道理的。

試想一下:一個(gè) 4 核 8G 內(nèi)存的服務(wù)器,居然線程設(shè)置越大,CPU占用越高(設(shè)置在內(nèi)存最大允許范圍),設(shè)置越小 CPu 占用越小,這是不正常的。最主要的是,php-fpm線程雖然小,占用cpu空間少了,但是出現(xiàn)502的次數(shù)就多了。從而更加說(shuō)明了目前的服務(wù)器目前的配置支撐不了現(xiàn)有的業(yè)務(wù)。

現(xiàn)在我朋友向總部申請(qǐng)了8核16G內(nèi)存的服務(wù)器,申請(qǐng)成功后,默認(rèn)開(kāi)始啟動(dòng)設(shè)置的線程是100,最大線程是200;現(xiàn)在已經(jīng)恢復(fù)正常,如下圖:

從這里也可以說(shuō)明,有時(shí)候出問(wèn)題并不是你自己的原因,就是服務(wù)器硬件配置跟不上的原因。


網(wǎng)頁(yè)題目:如何在Web中配置php-fpm調(diào)優(yōu)?
文章出自:http://weahome.cn/article/gpgpgp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部