国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Apache 學(xué)習(xí)筆摘

ThreadsPerChild

每個(gè)子進(jìn)程中包含固定的ThreadsPerChild線程數(shù)


ThreadsPerChild是workerMPM中與性能相關(guān)最密切的指令。ThreadsPerChild的最大缺省值是64,如果負(fù)載較大,64也是不夠的。這時(shí)要顯式使用ThreadLimit指令,它的最大缺省值是20000。上述兩個(gè)值位于源碼樹(shù)server/mpm/worker/worker.c(在源碼包的里面,安裝前修改)中的以下兩行:

#define DEFAULT_THREAD_LIMIT 64
#define MAX_THREAD_LIMIT 20000



這兩行對(duì)應(yīng)著ThreadsPerChild和ThreadLimit的限制數(shù)。最好在configure之前就把64改成所希望的值。注意,不要把這兩個(gè)值設(shè)得太高,超過(guò)系統(tǒng)的處理能力,從而因Apache不起動(dòng)使系統(tǒng)很不穩(wěn)定。

Worker模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild值決定的,應(yīng)該大于等于MaxClients。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿(mǎn)足時(shí),控制進(jìn)程會(huì)派生新的子進(jìn)程。默認(rèn)最大的子進(jìn)程總數(shù)是16,加大時(shí)也需要顯式聲明ServerLimit(最大值是20000)。這兩個(gè)值位于源碼樹(shù)server/mpm/worker/worker.c中的以下兩行:

#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000



需要注意的是,如果顯式聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數(shù)倍,否則Apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值(可能是個(gè)非期望值)。下面是筆者的worker配置段:

<IfModule worker.c>;
StartServers 3
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>;

source:http://bbs.syset.cn/archiver/tid-92.html

worker的工作原理及配置

相對(duì)于prefork,worker是2.0版中全新的支持多線程和多進(jìn)程混合模型的MPM。由于使用線程來(lái)處理,所以可以處理相對(duì)海量的請(qǐng)求,而系統(tǒng)資源的開(kāi)銷(xiāo)要小于基于進(jìn)程的服務(wù)器。但是,worker也使用了多進(jìn)程,每個(gè)進(jìn)程又生成多個(gè)線程,以獲得基于進(jìn)程服務(wù)器的穩(wěn)定性。這種MPM的工作方式將是Apache 2.0的發(fā)展趨勢(shì)。

在configure -with-mpm=worker后,進(jìn)行make編譯、make install安裝。在缺省生成的httpd.conf中有以下配置段:

<IfModule worker.c>;
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>;



worker的工作原理是,由主控制進(jìn)程生成“StartServers”個(gè)子進(jìn)程,每個(gè)子進(jìn)程中包含固定的ThreadsPerChild線程數(shù),各個(gè)線程獨(dú)立地處理請(qǐng)求。同樣,為了不在請(qǐng)求到來(lái)時(shí)再生成線程,MinSpareThreads和MaxSpareThreads設(shè)置了最少和最多的空閑線程數(shù);而MaxClients設(shè)置了所有子進(jìn)程中的線程總數(shù)。如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿(mǎn)足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。

MinSpareThreads和MaxSpareThreads的最大缺省值分別是75和250。這兩個(gè)參數(shù)對(duì)Apache的性能影響并不大,可以按照實(shí)際情況相應(yīng)調(diào)節(jié)。

ThreadsPerChild是workerMPM中與性能相關(guān)最密切的指令。ThreadsPerChild的最大缺省值是64,如果負(fù)載較大,64也是不夠的。這時(shí)要顯式使用ThreadLimit指令,它的最大缺省值是20000。上述兩個(gè)值位于源碼樹(shù)server/mpm/worker/worker.c中的以下兩行:

#define DEFAULT_THREAD_LIMIT 64
#define MAX_THREAD_LIMIT 20000



這兩行對(duì)應(yīng)著ThreadsPerChild和ThreadLimit的限制數(shù)。最好在configure之前就把64改成所希望的值。注意,不要把這兩個(gè)值設(shè)得太高,超過(guò)系統(tǒng)的處理能力,從而因Apache不起動(dòng)使系統(tǒng)很不穩(wěn)定。

Worker模式下所能同時(shí)處理的請(qǐng)求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild值決定的,應(yīng)該大于等于MaxClients。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿(mǎn)足時(shí),控制進(jìn)程會(huì)派生新的子進(jìn)程。默認(rèn)最大的子進(jìn)程總數(shù)是16,加大時(shí)也需要顯式聲明ServerLimit(最大值是20000)。這兩個(gè)值位于源碼樹(shù)server/mpm/worker/worker.c中的以下兩行:

#define DEFAULT_SERVER_LIMIT 16
#define MAX_SERVER_LIMIT 20000



需要注意的是,如果顯式聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxClients,而且MaxClients必須是ThreadsPerChild的整數(shù)倍,否則Apache將會(huì)自動(dòng)調(diào)節(jié)到一個(gè)相應(yīng)值(可能是個(gè)非期望值)。下面是筆者的worker配置段:

<IfModule worker.c>;
StartServers 3
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerChild 0
</IfModule>;

source:http://bbs.syset.cn/archiver/tid-91.html

Apache 中 KeepAlive 配置的合理使用good
2008/01/06 12:47 P.M.

在 Apache 服務(wù)器中,KeepAlive 是一個(gè)布爾值,On 代表打開(kāi),Off 代表關(guān)閉,這個(gè)指令在其他眾多的 HTTPD 服務(wù)器中都是存在的。
  KeepAlive 配置指令決定當(dāng)處理完用戶(hù)發(fā)起的 HTTP 請(qǐng)求后是否立即關(guān)閉 TCP 連接,如果 KeepAlive 設(shè)置為 On,那么用戶(hù)完成一次訪問(wèn)后,不會(huì)立即斷開(kāi)連接,如果還有請(qǐng)求,那么會(huì)繼續(xù)在這一次 TCP 連接中完成,而不用重復(fù)建立新的 TCP 連接和關(guān)閉 TCP 連接,可以提高用戶(hù)訪問(wèn)速度。
  那么我們考慮3種情況:
  1。用戶(hù)瀏覽一個(gè)網(wǎng)頁(yè)時(shí),除了網(wǎng)頁(yè)本身外,還引用了多個(gè) javascript 文件,多個(gè) css 文件,多個(gè)圖片文件,并且這些文件都在同一個(gè) HTTP 服務(wù)器上。
  2。用戶(hù)瀏覽一個(gè)網(wǎng)頁(yè)時(shí),除了網(wǎng)頁(yè)本身外,還引用一個(gè) javascript 文件,一個(gè)圖片文件。
  3。用戶(hù)瀏覽的是一個(gè)動(dòng)態(tài)網(wǎng)頁(yè),由程序即時(shí)生成內(nèi)容,并且不引用其他內(nèi)容。

  對(duì)于上面3中情況,我認(rèn)為:1 最適合打開(kāi) KeepAlive ,2 隨意,3 最適合關(guān)閉 KeepAlive

  下面我來(lái)分析一下原因。

  在 Apache 中,打開(kāi)和關(guān)閉 KeepAlive 功能,服務(wù)器端會(huì)有什么異同呢?

  先看看理論分析。

  打 開(kāi) KeepAlive 后,意味著每次用戶(hù)完成全部訪問(wèn)后,都要保持一定時(shí)間后才關(guān)閉會(huì)關(guān)閉 TCP 連接,那么在關(guān)閉連接之前,必然會(huì)有一個(gè) Apache 進(jìn)程對(duì)應(yīng)于該用戶(hù)而不能處理其他用戶(hù), 假設(shè) KeepAlive 的超時(shí)時(shí)間為 10 秒種,服務(wù)器每秒處理 50 個(gè)獨(dú)立用戶(hù)訪問(wèn),那么系統(tǒng)中 Apache 的總進(jìn)程數(shù)就是 10 * 50 = 500 個(gè),如果一個(gè)進(jìn)程占用 4M 內(nèi)存,那么總共會(huì)消耗 2G 內(nèi)存,所以可以看出,在這種配置中,相當(dāng)消耗內(nèi)存,但好處是系統(tǒng)只處理了 50次 TCP 的握手和關(guān)閉操作。
  如 果關(guān)閉 KeepAlive,如果還是每秒50個(gè)用戶(hù)訪問(wèn),如果用戶(hù)每次連續(xù)的請(qǐng)求數(shù)為3個(gè),那么 Apache 的總進(jìn)程數(shù)就是 50 * 3 = 150 個(gè),如果還是每個(gè)進(jìn)程占用 4M 內(nèi)存,那么總的內(nèi)存消耗為 600M,這種配置能節(jié)省大量?jī)?nèi)存,但是,系統(tǒng)處理了 150 次 TCP 的握手和關(guān)閉的操作,因此又會(huì)多消耗一些 CPU 資源。

  在看看實(shí)踐的觀察。

  我 在一組大量處理動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容的服務(wù)器中,起初打開(kāi) KeepAlive 功能,經(jīng)常觀察到用戶(hù)訪問(wèn)量大時(shí)Apache進(jìn)程數(shù)也非常多,系統(tǒng)頻繁使用交換內(nèi)存,系統(tǒng)不穩(wěn)定,有時(shí)負(fù)載會(huì)出現(xiàn)較大波動(dòng)。關(guān)閉了 KeepAlive 功能后,看到明顯的變化是: Apache 的進(jìn)程數(shù)減少了,空閑內(nèi)存增加了,用于文件系統(tǒng)Cache的內(nèi)存也增加了,CPU 的開(kāi)銷(xiāo)增加了,但是服務(wù)更穩(wěn)定了,系統(tǒng)負(fù)載也比較穩(wěn)定,很少有負(fù)載大范圍波動(dòng)的情況,負(fù)載有一定程度的降低;變化不明顯的是:訪問(wèn)量較少的時(shí)候,系統(tǒng)平均 負(fù)載沒(méi)有明顯變化。


  總結(jié)一下:
  在內(nèi)存非常充足的服務(wù)器上,不管是否關(guān)閉 KeepAlive 功能,服務(wù)器性能不會(huì)有明顯變化;
  如果服務(wù)器內(nèi)存較少,或者服務(wù)器有非常大量的文件系統(tǒng)訪問(wèn)時(shí),或者主要處理動(dòng)態(tài)網(wǎng)頁(yè)服務(wù),關(guān)閉 KeepAlive 后可以節(jié)省很多內(nèi)存,而節(jié)省出來(lái)的內(nèi)存用于文件系統(tǒng)Cache,可以提高文件系統(tǒng)訪問(wèn)的性能,并且系統(tǒng)會(huì)更加穩(wěn)定。



  補(bǔ)充:
  關(guān)于是否應(yīng)該關(guān)閉 KeepAlive 選項(xiàng),我覺(jué)得可以基于下面的一個(gè)公式來(lái)判斷。

  在理想的網(wǎng)絡(luò)連接狀況下,系統(tǒng)的 Apache 進(jìn)程數(shù)和內(nèi)存使用可以用如下公式表達(dá):
HttpdProcessNumber = KeepAliveTimeout * TotalRequestPerSecond / Average(KeepAliveRequests)
HttpdUsedMemory = HttpdProcessNumber * MemoryPerHttpdProcess
  換成中文:
總Apache進(jìn)程數(shù) = KeepAliveTimeout * 每秒種HTTP請(qǐng)求數(shù) / 平均KeepAlive請(qǐng)求
Apache占用內(nèi)存 = 總Apache進(jìn)程數(shù) * 平均每進(jìn)程占用內(nèi)存數(shù)

  需要特別說(shuō)明的是:
  [平 均KeepAlive請(qǐng)求] 數(shù),是指每個(gè)用戶(hù)連接上服務(wù)器后,持續(xù)發(fā)出的 HTTP 請(qǐng)求數(shù)。當(dāng) KeepAliveTimeout 等 0 或者 KeepAlive 關(guān)閉時(shí),KeepAliveTimeout 不參與乘的運(yùn)算從上面的公式看,如果 [每秒用戶(hù)請(qǐng)求] 多,[KeepAliveTimeout] 的值大,[平均KeepAlive請(qǐng)求] 的值小,都會(huì)造成 [Apache進(jìn)程數(shù)] 多和 [內(nèi)存] 多,但是當(dāng) [平均KeepAlive請(qǐng)求] 的值越大時(shí),[Apache進(jìn)程數(shù)] 和 [內(nèi)存] 都是趨向于減少的。
  基于上面的公式,我們就可以推算出當(dāng) 平均KeepAlive請(qǐng)求 <= KeepAliveTimeout 時(shí),關(guān)閉 KeepAlive 選項(xiàng)是劃算的,否則就可以考慮打開(kāi)。

http://hi.baidu.com/%D4%D3%D5%B3/blog/item/702890b414ba05778bd4b2ca.html

APACHE優(yōu)化之a(chǎn)pache的內(nèi)存使用
2008/01/06 12:45 P.M.

apache的內(nèi)存使用

apache進(jìn)程在使用內(nèi)存時(shí),是“漸長(zhǎng)”的。也就是說(shuō),直到這個(gè)進(jìn)程死掉,使用內(nèi)存的數(shù)量是一直增長(zhǎng)而不會(huì)減少的。這樣的話,apache進(jìn)程使用內(nèi)存的多少,就決定于你的應(yīng)用程序最大使用內(nèi)存量了。

keepalive參數(shù)

KeepAliveTimeout 這個(gè)參數(shù)決定了,在什么都不做之前,一個(gè)http進(jìn)程能夠等待多長(zhǎng)時(shí)間? 設(shè)想一下,如果keepalive設(shè)置為on,而 keepalivetimeout設(shè)置為一個(gè)比較大的數(shù)字,apache占用內(nèi)存會(huì)很快的增長(zhǎng)。這是因?yàn)?,一個(gè)apache進(jìn)程完成了一個(gè)任務(wù)(并達(dá)到了 一定的內(nèi)存占用,想一下“漸進(jìn)”模式),并不會(huì)馬上退出,而是等待一個(gè)keepalivetimeout時(shí)間。假設(shè)用戶(hù)的鏈接請(qǐng)求持續(xù)不斷的到來(lái),則積累 起來(lái)的無(wú)用的apache進(jìn)程就會(huì)相當(dāng)多,直到timeout,這些進(jìn)程才會(huì)被殺死。

但是,keepalive的確對(duì)于靜態(tài)的文件,比如圖像文件的傳送是很有效的,因此,keepalive要設(shè)置為on,但是keepalvietimeout要設(shè)置的小些,比如5s

MaxRequestsPerChild

這個(gè)參數(shù)是說(shuō),apache進(jìn)程在處理了多少個(gè)請(qǐng)求之后,必須退出,重新開(kāi)始,以免在處理中的內(nèi)存問(wèn)題。

對(duì)于php腳本來(lái)說(shuō),把這個(gè)參數(shù)設(shè)置的小一些是有好處的,可以避免程序使用的內(nèi)存持續(xù)增長(zhǎng)對(duì)apache帶來(lái)的壓力:讓這個(gè)參數(shù)定期釋放內(nèi)存,因?yàn)閜hp是在腳本執(zhí)行完畢后,自動(dòng)釋放只用的資源(內(nèi)存)的。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
深入理解Nginx模塊開(kāi)發(fā)與架構(gòu)解析
什么情況下該開(kāi)啟Keep-Alive
apache調(diào)優(yōu)
Windows 系統(tǒng)下的Apache性能優(yōu)化 - 火魔網(wǎng)
Apache服務(wù)器訪問(wèn)過(guò)慢分析及解決
修改最大并發(fā)連接數(shù)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服