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

資訊專欄INFORMATION COLUMN

PHP-FPM 調(diào)優(yōu):使用 ‘pm static’ 來最大化你的服務(wù)器負(fù)載能力

CNZPH / 902人閱讀

摘要:進(jìn)程管理器和的相似之處現(xiàn)在,我們要說些偏離主題,但我覺得和調(diào)優(yōu)有關(guān)的事情。但是,一旦你有可用的閑置內(nèi)存,那么把設(shè)置成的最大值將減少許多進(jìn)程管理器所帶來的開銷。


讓我們來迅速了解一下怎樣設(shè)置 PHP-FPM,以便達(dá)到高吞吐,低延遲以及穩(wěn)定的使用 CPU 和內(nèi)存的完美狀態(tài)。在默認(rèn)的情況下,大多數(shù)設(shè)置都將 PHP-FPM PM(進(jìn)程管理器)設(shè)置為 dynamic ,或者當(dāng)你有可用內(nèi)存的問題時常建議你使用 ondemand。接下來,讓我們根據(jù) php.net 的官方文檔來比較一下這兩個管理選項和我最常用的設(shè)置 —— static 之間的區(qū)別:

pm = dynamic:子進(jìn)程的數(shù)量是根據(jù)以下指令來動態(tài)生成的:pm.max_children,?pm.start_servers,?pm.min_spare_servers,?pm.max_spare_servers.

pm = ondemand:在服務(wù)啟動的時候根據(jù) pm.start_servers 指令生成進(jìn)程,而非動態(tài)生成。

pm = static:子進(jìn)程的數(shù)量是由 pm.max_children 指令來確定的。

查看完整列表,深入了解 php-fpm.conf 的所有指令。

PHP-FPM 進(jìn)程管理器(PM)和 CPUFreq Governor 的相似之處

現(xiàn)在,我們要說些偏離主題,但我覺得和 PHP-FPM 調(diào)優(yōu)有關(guān)的事情。好了,我們都有過在某些時候的 CPU 緩慢問題,無論是筆記本電腦、VM 或者是專用的服務(wù)器。還記得 CPU 頻率縮放問題嗎?(CPUFreq governor)這些設(shè)置在類 Unix 系統(tǒng)和 Windows 上是有效的,可以通過修改 CPU governor,將其從 ondemand 修改為 performance 來提高性能并加快系統(tǒng)的響應(yīng)。現(xiàn)在,讓我們來比較下列 CPUFreq governor 描述和 PHP-FPM PM 有哪些相似之處:

Governor = ondemand:根據(jù)當(dāng)前負(fù)荷動態(tài)調(diào)整 CPU 頻率。先將 CPU 頻率調(diào)整至最大,然后隨著空閑時間的增加而縮小頻率。

Governor = conservative:根據(jù)當(dāng)前負(fù)荷動態(tài)調(diào)整頻率。比設(shè)置成 ondemand 更加緩慢。

Governor = performance:始終以最大頻率運行 CPU。

查看 CPUFreq governor 選項詳細(xì)列表 ,獲取更多相關(guān)信息。

注意到相似之處了嗎?這就是我這個比較的首要目的,為了找到一個最好的方式來寫這篇文章,推薦你將 PHP-FPM 的 pm static 當(dāng)作你的第一選擇。

使用 CPU Governor 的 performance 設(shè)置是一個非常安全的性能提升方式,因為它能完美的使用你服務(wù)器 CPU 的全部性能。唯一需要考慮的因素就是一些諸如散熱、電池壽命(筆記本電腦)和一些由 CPU 始終保持 100% 所帶來的一些副作用。一旦設(shè)置為 performance,那么它確實是你 CPU 最快的設(shè)置。相關(guān)實例請閱讀 "force_turbo" 在 Raspberry Pi 上的設(shè)置,它教你在 RPi 板上使用 performance Governor,由于 CPU 時鐘速度較低,性能改善將更加明顯。

使用 pm static 優(yōu)化你的服務(wù)器性能

PHP-FPM 的 static 設(shè)置取決于你服務(wù)器有多少閑置內(nèi)存。大多數(shù)情況下,如果你服務(wù)器的內(nèi)存不足,那么 PM 設(shè)置成 ondemanddynamic 將是更好的選擇。但是,一旦你有可用的閑置內(nèi)存,那么把 PM 設(shè)置成 static 的最大值將減少許多 PHP 進(jìn)程管理器(PM)所帶來的開銷。換句話說,你應(yīng)該在沒有內(nèi)存不足和緩存壓力的情況下使用 pm.static 來設(shè)置 PHP-FPM 進(jìn)程的最大數(shù)量。此外,也不能影響到 CUP 的使用和其他待處理的 PHP-FPM 操作。

在上面的截圖中,這臺服務(wù)器的設(shè)置( pm?=?staticpm.max_children?=100)最多使用了 10GB 的內(nèi)存。請注意高亮的列。Google 分析圖中大概有 200 個活躍用戶(60秒內(nèi))。在這種用戶量下,有 70% 的 PHP-FPM 子進(jìn)程被閑置。這意味著,無論當(dāng)前流量如何,PHP-FPM 始終保持著足夠多的進(jìn)程。閑置的進(jìn)程始終保持在線,就算達(dá)到了流量的峰值也能快速響應(yīng),而不是等待 PM 生成子進(jìn)程,然后在 x pm.process_idle_timeout 秒后將此進(jìn)程結(jié)束。我將 ?pm.max_requests 設(shè)置的非常高,因為這是一個不可能發(fā)生內(nèi)存泄漏的 PHP 生產(chǎn)服務(wù)器。如果你對你的 PHP 腳本有著 110% 的信心,那么你可用選擇使用?pm.max_requests?=?0。但建議適當(dāng)?shù)闹貑⒎?wù)。將請求數(shù)量設(shè)置的很高,是為了避免過高的 PM 開銷。例如,設(shè)置 pm.max_requests?=?1000?,但這需要根據(jù) pm.max_children 的設(shè)置和實際每秒的請求數(shù)量來決定。

截圖使用 ?Linux top 通過 "u"(user)選項和 PHP-FPM 用戶名進(jìn)行過濾。并只顯示了前 50 個左右(未統(tǒng)計)的進(jìn)程,但基本上 top 命令也只會顯示適合你終端窗口大小的內(nèi)容 —— 在本例中,使用 %CPU 排序。要查看全部的 100 條 PHP-FPM 進(jìn)程的話,你需要使用以下命令:

top -bn1 | grep php-fpm
何時使用 ondemand 和 dynamic

使用?pm dynamic,您可能會出現(xiàn)類似于下面的錯誤:

WARNING: [pool xxxx] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4 idle, and 59 total children

您可能會嘗試調(diào)整 pm 配置,但仍然會看到同樣的錯誤
在這種情況下,pm.min?太低,并且因為流量和峰值波動很大,使用?pm dynamic?可能難以調(diào)整

一般的建議是使用?pm ondemand。 然而,情況會變的更糟,因為?ondemand?會在沒有流量時關(guān)閉空閑進(jìn)程,然后最終會產(chǎn)生與流量波動很大一樣的開銷問題 (除非您設(shè)置空閑超時的時間非常非常的長)

但是,當(dāng)您擁有多個 pm 進(jìn)程池時,pm dynamic, 特別是?ondemand?是可以為您節(jié)省時間的。例如在共享的 VPS 上,有 100+ 的 cPanel 賬號和 200+ 的域名,使用 pm.static 或者是 pm.dynamic 都是不可能的,即使在沒有任何流量的情況下,內(nèi)存會被瞬間用完,而 pm.ondemand 意味著所有空閑的子進(jìn)程都會被完全關(guān)閉,節(jié)省了大量內(nèi)存。cPanel 的開發(fā)者已經(jīng)意識到了這個問題,現(xiàn)在的 cPanel 默認(rèn)就是設(shè)置為 pm.ondemand

結(jié)論

當(dāng)流量波動比較大的時候,,PHP-FPM 的?ondemand?和?dynamic?會因為固有開銷而限制吞吐量。 您需要了解您的系統(tǒng)并設(shè)置 PHP-FPM 進(jìn)程數(shù),以匹配服務(wù)器的最大容量。
從?pm.max_children?開始,根據(jù)?pm dynamic?或?ondemand?的最大使用情況去設(shè)置

您會注意到,在?pm static?模式下,因為您將所有內(nèi)容都保存在內(nèi)存中,所以隨著時間的推移,流量峰值會對 CPU 造成比較小的峰值,并且您的服務(wù)器負(fù)載和 CPU 平均值將變得更加平滑。 每個需要手動調(diào)整的 PHP-FPM 進(jìn)程數(shù)的平均大小會有所不同

更新:附上一張 A/B 測試圖。

轉(zhuǎn)自 PHP / Laravel 開發(fā)者社區(qū) https://laravel-china.org/top...

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

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

相關(guān)文章

  • PHP-FPM 調(diào)優(yōu):為了高性能使用 pm static

    摘要:你還記得調(diào)頻嗎,它可以在和上使用,可以將頻率設(shè)置為來提高性能和系統(tǒng)響應(yīng)能力。在這個級別上,約有的進(jìn)程仍然閑置。 讓我們快速了解如何更好的設(shè)置 PHP-FPM,以實現(xiàn)高吞吐量和低延遲 默認(rèn)情況下,大多數(shù)設(shè)置都將 PHP-FPM 的 PM(進(jìn)程管理器)設(shè)置為 dynamic,并且如果遇到內(nèi)存不足的問題,還需要使用 ondemand 讓我們看一下 php.net 文檔中的選項,并介紹我最喜歡...

    wangdai 評論0 收藏0
  • php-fpm進(jìn)程數(shù)管理

    摘要:是實現(xiàn)的進(jìn)程管理器用于替換的大部分附加功能,適用于高負(fù)載網(wǎng)站。能夠創(chuàng)建的最大子進(jìn)程數(shù)量,它在使用多個配置的進(jìn)程池的時候,控制全局的子進(jìn)程數(shù)量。同時根據(jù)進(jìn)程池的數(shù)量來看一個進(jìn)程管理器的子進(jìn)程數(shù)量限制。 PHP-FPM 先來了解一些名詞概念: CGI是Common Gateway Interface(通用網(wǎng)管協(xié)議),用于讓交互程序和Web服務(wù)器通信的協(xié)議。它負(fù)責(zé)處理URL的請求,啟動一個進(jìn)...

    hlcfan 評論0 收藏0
  • PHP-FPM設(shè)置max_chindren、max_requests

    摘要:首先,我們關(guān)注下的運行方式模式始終保持一個固定數(shù)量的子進(jìn)程,這個數(shù)由定義,這種方式很不靈活,也通常不是默認(rèn)的。指的是每個子進(jìn)程在處理了多少個請求數(shù)量之后就重啟。 首先,我們關(guān)注下 PHP-FPM 的運行方式:pm = static模式: 始終保持一個固定數(shù)量的子進(jìn)程,這個數(shù)由pm.max_children定義,這種方式很不靈活,也通常不是默認(rèn)的。優(yōu)點是不用動態(tài)的判斷負(fù)載情況,提升性能;...

    hedge_hog 評論0 收藏0
  • PHP-FPM設(shè)置max_chindren、max_requests

    摘要:首先,我們關(guān)注下的運行方式模式始終保持一個固定數(shù)量的子進(jìn)程,這個數(shù)由定義,這種方式很不靈活,也通常不是默認(rèn)的。指的是每個子進(jìn)程在處理了多少個請求數(shù)量之后就重啟。 首先,我們關(guān)注下 PHP-FPM 的運行方式:pm = static模式: 始終保持一個固定數(shù)量的子進(jìn)程,這個數(shù)由pm.max_children定義,這種方式很不靈活,也通常不是默認(rèn)的。優(yōu)點是不用動態(tài)的判斷負(fù)載情況,提升性能;...

    ermaoL 評論0 收藏0
  • php-fpm的配置和優(yōu)化

    摘要:等平臺平臺由于我開發(fā)以為主,所以就用的環(huán)境配置來學(xué)習(xí)。啟動進(jìn)程的用戶和用戶組,進(jìn)程運行的用戶必須要設(shè)置。模式模式,表示啟動進(jìn)程是動態(tài)分配的,隨著請求量動態(tài)變化的。 centos等linux平臺 /usr/local/php/php /usr/local/php/etc/php.ini /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-...

    AZmake 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<