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

資訊專欄INFORMATION COLUMN

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

wangdai / 3415人閱讀

摘要:你還記得調(diào)頻嗎,它可以在和上使用,可以將頻率設(shè)置為來(lái)提高性能和系統(tǒng)響應(yīng)能力。在這個(gè)級(jí)別上,約有的進(jìn)程仍然閑置。

讓我們快速了解如何更好的設(shè)置 PHP-FPM,以實(shí)現(xiàn)高吞吐量和低延遲

默認(rèn)情況下,大多數(shù)設(shè)置都將 PHP-FPM 的 PM(進(jìn)程管理器)設(shè)置為 dynamic,并且如果遇到內(nèi)存不足的問(wèn)題,還需要使用 ondemand

讓我們看一下 php.net 文檔中的選項(xiàng),并介紹我最喜歡的設(shè)置 - static:

pm = dynamic: 子進(jìn)程的數(shù)量根據(jù)以下配置動(dòng)態(tài)設(shè)置 pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers

pm = ondemand: 進(jìn)程在請(qǐng)求時(shí)按需創(chuàng)建,而不是動(dòng)態(tài)的,其中 pm.start_servers 進(jìn)程數(shù)量在服務(wù)啟動(dòng)時(shí)創(chuàng)建

pm = static: 子進(jìn)程的數(shù)量由 pm.max_children 決定

PHP-FPM(PM)與 CPUFreq 的相似之處

這看起來(lái)有點(diǎn)偏離主題,但我希望將其結(jié)合到我們的 PHP-FPM 調(diào)優(yōu)主題中

我們都遇到過(guò) CPU 緩慢的問(wèn)題,無(wú)論是筆記本,虛擬機(jī)還是服務(wù)器。

你還記得 CPU 調(diào)頻嗎?(CPUFreq),它可以在 linux 和 Windows 上使用,可以將 CPU 頻率設(shè)置為 ondemand 來(lái)提高性能和系統(tǒng)響應(yīng)能力。

現(xiàn)在,我們來(lái)比較一下這些描述并尋找相似之處:

Governor = ondemand: 按需快速動(dòng)態(tài)調(diào)整 CPU 頻率, 一有 cpu 計(jì)算量的任務(wù),就會(huì)立即達(dá)到最大頻率運(yùn)行,空閑時(shí)間增加就降低頻率

Governor = conservative: 按需快速動(dòng)態(tài)調(diào)整 CPU 頻率, 比 ondemand 的調(diào)整更保守

Governor = performance: 總是運(yùn)行于最大頻率

有關(guān)更多詳細(xì)信息,請(qǐng)參閱 CPUFreq 調(diào)控器選項(xiàng)的完整列表

有沒(méi)有注意相似之處呢 ?

使用 pm static 來(lái)實(shí)現(xiàn)最高性能

pm static 設(shè)置在很大程度上取決于您的服務(wù)器有多少空閑內(nèi)存。
基本上,如果你的服務(wù)器內(nèi)存很低,那么 pm ondemanddynamic 可能是更好的選擇。
如果您擁有足夠的內(nèi)存,則可以設(shè)置 pm static 來(lái)避免大部分 PM 開(kāi)銷。
換句話說(shuō),當(dāng)您進(jìn)行數(shù)學(xué)運(yùn)算時(shí),應(yīng)將 pm.static 設(shè)置為服務(wù)器可運(yùn)行的最大數(shù)量的進(jìn)程數(shù),它就不會(huì)有內(nèi)存不足或緩存壓力的問(wèn)題

在上面的截圖中,PHP-FPM 的配置為 pm = staticpm.max_children = 100
它有 32GB的內(nèi)存,在截圖期間,Google Analytics 中約有 200 個(gè) “活躍用戶”(過(guò)去 60 秒)。
在這個(gè)級(jí)別上,約有 70% 的 PHP-FPM 進(jìn)程仍然閑置。
這意味著 PHP-FPM 設(shè)置為服務(wù)器資源的最大容量后,它不會(huì)去在意當(dāng)前流量,空閑進(jìn)程會(huì)保持聯(lián)機(jī)狀態(tài),等待流量高峰立即響應(yīng),而不必等到請(qǐng)求來(lái)了之后再創(chuàng)建進(jìn)程

我將 pm.max_requests 設(shè)置的非常高,因?yàn)檫@是一個(gè)沒(méi)有 PHP 內(nèi)存泄漏的生產(chǎn)服務(wù)器。
如果您對(duì)當(dāng)前和將來(lái)的 PHP 代碼有 110% 的信心,可以將 pm.max_requests = 0pm static 一起使用

何時(shí)使用 ondemand 和 dynamic

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

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

您可能會(huì)嘗試調(diào)整 pm 配置,但仍然會(huì)看到同樣的錯(cuò)誤
在這種情況下,pm.min 太低,并且因?yàn)榱髁亢头逯挡▌?dòng)很大,使用 pm dynamic 可能難以調(diào)整

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

但是,當(dāng)您擁有多個(gè) pm 進(jìn)程池時(shí),pm dynamic, 特別是 ondemand 是可以為您節(jié)省時(shí)間的

結(jié)論

當(dāng)流量波動(dòng)比較大的時(shí)候,,PHP-FPM 的 ondemanddynamic 會(huì)因?yàn)楣逃虚_(kāi)銷而限制吞吐量。 您需要了解您的系統(tǒng)并設(shè)置 PHP-FPM 進(jìn)程數(shù),以匹配服務(wù)器的最大容量。
pm.max_children 開(kāi)始,根據(jù) pm dynamicondemand 的最大使用情況去設(shè)置

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

附上一張 A/B 測(cè)試圖

最后希望這是一篇有用的文章

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

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

相關(guān)文章

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

    摘要:進(jìn)程管理器和的相似之處現(xiàn)在,我們要說(shuō)些偏離主題,但我覺(jué)得和調(diào)優(yōu)有關(guān)的事情。但是,一旦你有可用的閑置內(nèi)存,那么把設(shè)置成的最大值將減少許多進(jìn)程管理器所帶來(lái)的開(kāi)銷。 showImg(https://segmentfault.com/img/remote/1460000016435381);讓我們來(lái)迅速了解一下怎樣設(shè)置 PHP-FPM,以便達(dá)到高吞吐,低延遲以及穩(wěn)定的使用 CPU 和內(nèi)存的完美...

    CNZPH 評(píng)論0 收藏0
  • 如何翻譯好一篇技術(shù)文章

    摘要:你有沒(méi)有看到了一篇比較不錯(cuò)的文章,想翻譯出來(lái)分享給大家,但卻發(fā)現(xiàn)無(wú)從下手,只好放棄了的經(jīng)歷呢這篇文章或許能夠幫助到你。但是我們需要記住,我們翻譯一篇文章的時(shí)候,需要做到本土化。 你有沒(méi)有看到了一篇比較不錯(cuò)的文章,想翻譯出來(lái)分享給大家,但卻發(fā)現(xiàn)無(wú)從下手,只好放棄了的經(jīng)歷呢?這篇文章或許能夠幫助到你。 在提筆翻譯之前,我們有幾個(gè)前提條件,如果您能夠滿足這些條件,那么您的翻譯過(guò)程或許會(huì)比較順...

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

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

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

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

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

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

    ermaoL 評(píng)論0 收藏0

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

0條評(píng)論

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