Apache優(yōu)化配置——工作模式-創(chuàng)新互聯(lián)

Apache所運(yùn)行的硬件環(huán)境都是對性能影響大的因素

公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出臨渭區(qū)免費(fèi)做網(wǎng)站回饋大家。

各個(gè)硬件指標(biāo)中,對性能影響大的是內(nèi)存,其次是硬盤的速度

●Apache的工作模式

1、prefork模式(一個(gè) 非線程型的)

⑴、主要工作方式:當(dāng)Apache服務(wù)器啟動后,mpm_prefork模塊會預(yù)先創(chuàng)建多個(gè)子進(jìn)程(默認(rèn)為5個(gè)),每個(gè)子進(jìn)程只有一個(gè)線程,當(dāng)接收到客戶端的請求后,mpm_prefork模塊再將請求轉(zhuǎn)交給子進(jìn)程處理,并且每個(gè)子進(jìn)程同時(shí)只能用于處理單個(gè)請求。如果當(dāng)前的請求數(shù)將超過預(yù)先創(chuàng)建的子進(jìn)程數(shù)時(shí),mpm_prefork模塊就會創(chuàng)建新的子進(jìn)程來處理額外的請求。Apache總是試圖保持一些備用的或者是空閑的子進(jìn)程用于迎接即將到來的請求,這樣客戶端的請求就不需要在接收后等候子進(jìn)程的產(chǎn)生。

⑵prefork在效率上要比worker要高,但是內(nèi)存使用大多不擅長處理高并發(fā)的場景

⑶Apache在prefork工作模式下影響性能的重要參數(shù)說明:

#prefork MPM

<ifModule mpm_prefork_module>

        StartServers    5        #Apache啟動時(shí)默認(rèn)開始的子進(jìn)程數(shù)

        MinSpareServers    5        #最小的閑置子進(jìn)程數(shù)

        MaxSpareServers    10        #大的閑置子進(jìn)程數(shù),

        MaxRequestWorkers    250        #MaxRequestWorkers設(shè)置了允許同時(shí)大接入的請求數(shù)量,任何超過MaxRequestWorkers限制的請求將進(jìn)入等候隊(duì)列

        MaxConnectionsPerChild    500        #設(shè)置的是每個(gè)子進(jìn)程可處理的請求數(shù)。每個(gè)進(jìn)程在處理了“MaxConnectionsPerChild”請求后將自動銷毀。0意味著無限,即子進(jìn)程永不銷毀。設(shè)置為1時(shí)可防止意外的內(nèi)存泄漏。設(shè)置為2時(shí)表示在服務(wù)器負(fù)載下降的時(shí)候會自動減少子進(jìn)程數(shù)??筛鶕?jù)服務(wù)器的負(fù)載來調(diào)整此值

★注:

①M(fèi)axRequestWorkers是這些指令中最為重要的一個(gè),設(shè)定的是Apache可以同時(shí)處理的請求,是對Apache性能影響大的參數(shù)。如果請求總數(shù)已經(jīng)達(dá)到這個(gè)值(通過ps -ef | grep http | wc -l來確認(rèn))那么后面的請求就要排隊(duì),直到某個(gè)已處理請求完畢。這就是系統(tǒng)資源還剩下很多而http訪問卻很慢的主要原因。雖然理論上這個(gè)值越大,可以處理的請求就越多,建議將初始值設(shè)為以MB為單位的大物理內(nèi)存/2,然后根據(jù)負(fù)載情況進(jìn)行動態(tài)調(diào)整。

②prefork控制進(jìn)程在最初建立“StartServers”子進(jìn)程后,為了滿足MinSpareServers設(shè)置的需要創(chuàng)建一個(gè)進(jìn)程,等待一秒鐘,繼續(xù)創(chuàng)建兩個(gè),再等待一秒鐘,繼續(xù)創(chuàng)建四個(gè)......如此按指數(shù)級增加創(chuàng)建的進(jìn)程數(shù),最多達(dá)到每秒32個(gè),直到滿足MinSpareServers設(shè)置的值為止,這種模式可以不必再請求到來時(shí)再產(chǎn)生新的進(jìn)程,從而減小了系統(tǒng)開銷以增加性能。MaxSpareServers設(shè)置了大的空閑進(jìn)程數(shù),如果空閑進(jìn)程數(shù)大于這個(gè)值,Apache會kill掉一些多余的進(jìn)程,這個(gè)值不要設(shè)的過大,但如果設(shè)的值比MinSpareServers小,Apache會自動把其調(diào)整為MinSpareServers+1。如果站點(diǎn)負(fù)載較大,可考慮同時(shí)加大MinSpareServers和MaxSpareServers。

③ServerLimit和MaxClients(MaxRequestWorkers)的區(qū)別:在Apache時(shí)代,控制大進(jìn)程數(shù)只有MaxClients這個(gè)參數(shù),并且這個(gè)參數(shù)大值為256,并且是寫死了的,試圖設(shè)置為超過256是無效的,這是由于Apache1時(shí)代的服務(wù)器硬件是限制的。但是Apache2時(shí)代由于服務(wù)器硬件的升級,硬件已經(jīng)不再是限制,所以ServerLimit這個(gè)參數(shù)來控制大進(jìn)程數(shù),ServerLimit值>=MaxClient值才有效。ServerLimit要放在MaxClients之前,值不要小于Maxclients。

④查看Apache加載的模塊:apachectl -t -D DUMP_MODULES 或 apachectl -M 或 apachectl -l

    查看Apache的工作模式:httpd -v 或 httpd -l

⑤修改prefork參數(shù)和啟動prefork模式

   vi /usr/local/http-2.4.23/conf/extra/httpd-mpm.conf

    vi /usr/local/http-2.4.23/conf/httpd.conf 添加兩行:LoadModule mpm_prefork_module/mod_mpm_prefork.so 和 Include conf/extra/httpd-mpm.conf

    重啟httpd服務(wù)

2、Worker模式(多線程多進(jìn)程)

⑴與prefork的比較:prefork速度要稍高于worker,然而它需要的CPU和memory資源也稍多于worker

⑵Apache在worker工作模式下影響性能的重要參數(shù)說明

#worker MPM

<ifModule mpm_worker_module>

    StartServers    3        #Apache啟動時(shí)默認(rèn)開始的子進(jìn)程數(shù)

    MinSpareThreads    75        #最小空閑數(shù)量的工作進(jìn)程

    MaxSpareThreads    250        #大空閑數(shù)量的工作線程

    ThreadPerChild    25        #每個(gè)子進(jìn)程產(chǎn)生的線程數(shù)量

    MaxRequestWorkers    400        #MaxRequestWorkers設(shè)置了允許同時(shí)大接入的請求數(shù)量,任何超過MaxRequestWorkers限制的請求將進(jìn)入等候隊(duì)列

    MaxConnectionsPerChild    0        #設(shè)置的是每個(gè)子進(jìn)程可處理的請求數(shù)。每個(gè)進(jìn)程在處理了“MaxConnectionsPerChild”請求后將自動銷毀。0意味著無限,即子進(jìn)程永不銷毀。

★注:

①Worker由主控制進(jìn)程生成“StartServers”子進(jìn)程,每個(gè)子進(jìn)程中包含固定的ThreadsPerChild線程數(shù),各個(gè)線程獨(dú)立地處理請求。同樣,為了不在請求到來時(shí)再生成線程,MinSpareThreads和MaxSpareThreads設(shè)置了最少和最多的空閑線程數(shù)。而MaxRequestWorkers設(shè)置了同時(shí)連入的clients大總數(shù),如果現(xiàn)有子進(jìn)程中的線程總數(shù)不能滿足負(fù)載,控制進(jìn)程將派生新的子進(jìn)程。MinSpareThreads和MaxSpareThreads的大缺省值分別是75和250.這兩個(gè)參數(shù)對Apache的性能影響并不大,可以按照實(shí)際情況相應(yīng)調(diào)節(jié)

② ThreadsPerChild是worker MPM 中與性能相關(guān)最密切的指令,ThreadsPerChild的大缺省值是64,如果負(fù)載較大,64位也是不夠的,這時(shí)要使用ThreadLimit指令,他的大缺省值是20000

③Worker模式下所能同時(shí)處理的請求總數(shù)是由子進(jìn)程總數(shù)乘以ThreadsPerChild值決定的,應(yīng)該大于等于MaxRequestWorkers。如果負(fù)載很大,現(xiàn)有的子進(jìn)程數(shù)不能滿足時(shí),控制進(jìn)程會派生新的子進(jìn)程。默認(rèn)大的子進(jìn)程總數(shù)是16,加大時(shí)也需要顯示聲明ServerLimit。需要注意的是,如果顯示聲明了ServerLimit,那么它乘以ThreadsPerChild的值必須大于等于MaxRequestWorkers,而且MaxRequestWorkers必須是ThreadsPerChild的整數(shù)倍,否則Apache將會自動調(diào)節(jié)到一個(gè)相應(yīng)值。

④進(jìn)程與線程的區(qū)別(線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體)

a、地址空間:進(jìn)程內(nèi)的一個(gè)執(zhí)行單元;進(jìn)程至少有一個(gè)線程;它們共享進(jìn)程的地址空間;而進(jìn)程有自己獨(dú)立的地址空間

b、資源擁有:進(jìn)程是資源分配和擁有的單位,同一進(jìn)程內(nèi)的線程共享進(jìn)程的資源

c、線程是處理器調(diào)度的基本單位,但進(jìn)程不是

d、二者均可并發(fā)執(zhí)行:進(jìn)程和線程都是由操作 系統(tǒng)所體會的程序運(yùn)行的基本單元, 系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性

e、簡單來說,就是一個(gè)程序至少有一個(gè)進(jìn)程,一個(gè)進(jìn)程至少有一個(gè)線程

    線程的劃分尺度小于進(jìn)程,使得多線程程序的并發(fā)性高

    進(jìn)程在執(zhí)行過程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存,從而極大地提高了程序的運(yùn)行效率

3、Event模式

這是Apache最新的工作模式,是worker模式的變種,它把服務(wù)進(jìn)程從連接中分離出來,worker模式不同的是在于它解決了,keep-alive長連接的時(shí)候占用線程資源被浪費(fèi)的問題,在event工作模式中,會有一些專門的線程用來管理這些keep-alive類型的線程,當(dāng)有真實(shí)請求過來的時(shí)候,將請求傳遞給服務(wù)器的線程,執(zhí)行完畢后,又允許它釋放。這增強(qiáng)了在高并發(fā)場景下的請求處理。event模式不能很好的支持https的訪問

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:Apache優(yōu)化配置——工作模式-創(chuàng)新互聯(lián)
本文地址:http://www.muchs.cn/article24/diejje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、虛擬主機(jī)、外貿(mào)建站、企業(yè)建站靜態(tài)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)