1.Apache prefork模型:
apache的默認(rèn)的模型預(yù)派 生模式,有 一個(gè)主控制進(jìn)程,然后 生成多個(gè) 子進(jìn)程,使 用select模型,最 大并發(fā)1024,每個(gè) 子進(jìn)程有 一個(gè)獨(dú) 立的線程響應(yīng) 用戶請(qǐng)求,相對(duì) 比較占 用內(nèi)存,但是 比較穩(wěn)定,可以設(shè)置最 大和最 小進(jìn)程數(shù),是最古 老 的 一種模式,也是最穩(wěn)定的模式,適 用于訪問(wèn)量 不 是很 大的場(chǎng)景。優(yōu)點(diǎn):穩(wěn)定缺點(diǎn): 大量 用戶訪問(wèn)慢,占 用資源,1024個(gè)進(jìn)程不 適 用于 高并發(fā)場(chǎng)景
2.Apache woker模型:
一種多進(jìn)程和多線程混合的模型,有 一個(gè)控制進(jìn)程,啟動(dòng)多個(gè) 子進(jìn)程,每個(gè) 子進(jìn)程 里 面包含固定的線程,使 用線程程來(lái)處理 請(qǐng)求,當(dāng)線程不 夠使 用的時(shí)候會(huì)再啟動(dòng) 一個(gè)新的 子進(jìn)程,然后在進(jìn)程 里 面再啟動(dòng)線程處理 請(qǐng)求,由于其使 用了 線程處理 請(qǐng)求,因此可以承受更 高的并發(fā)。優(yōu)點(diǎn):相 比prefork 占 用的內(nèi)存較少,可以同時(shí)處理 更多的請(qǐng)求缺點(diǎn):使用keepalive的長(zhǎng)連接方式(會(huì)話保持狀態(tài)),某個(gè)線程會(huì) 一直被占據(jù),即使沒(méi)有傳輸數(shù)據(jù),也需要 一直等待到超時(shí)才會(huì)被釋放。如果過(guò)多的線程,被這樣占據(jù),也會(huì)導(dǎo)致在 高并發(fā)場(chǎng)景下的 無(wú)服務(wù)線程可 用。(該問(wèn)題在prefork模式下,同樣會(huì)發(fā) 生)
3. Apache event模型:
比worker多了一個(gè)監(jiān)聽(tīng)進(jìn)程Apache中最新的模式,2012年 發(fā)布的apache 2.4.X系列 正式 支持event 模型,屬于事件驅(qū)動(dòng)模型(epoll),每個(gè)進(jìn)程響應(yīng)多個(gè)請(qǐng)求,在現(xiàn)在版本 里 的已經(jīng)是穩(wěn)定可 用的模式。它和worker模式很像,最 大的區(qū)別在于,它解決了 keepalive場(chǎng)景下, 長(zhǎng)期被占 用的線程的資源浪費(fèi)問(wèn)題(某些線程因?yàn)楸籯eepalive,空掛在哪 里 等待,中間 幾乎沒(méi)有請(qǐng)求過(guò)來(lái),甚 至等到超時(shí))。event MPM中,會(huì)有 一個(gè)專(zhuān) 門(mén)的線程來(lái)管理 這些keepalive類(lèi)型的線程,當(dāng)有真實(shí)請(qǐng)求過(guò)來(lái)的時(shí)候,將請(qǐng)求傳遞給服務(wù)線程,執(zhí) 行 完畢后, 又允許它釋放。這樣增強(qiáng)了 高并發(fā)場(chǎng)景下的請(qǐng)求處理 能 力 。優(yōu)點(diǎn):?jiǎn)尉€程響應(yīng)多請(qǐng)求,占據(jù)更 少的內(nèi)存, 高并發(fā)下表現(xiàn)更 優(yōu)秀,會(huì)有 一個(gè)專(zhuān) 門(mén)的線程來(lái)管理 keep-alive類(lèi)型的線程,當(dāng)有真實(shí)請(qǐng)求過(guò)來(lái)的時(shí)候,將請(qǐng)求傳遞給服務(wù)線程,執(zhí) 行 完畢后, 又允許它釋放缺點(diǎn):沒(méi)有線程安全控制