答:Apache是一個模塊化服務,支持的模塊比較多,採用servlet處理模型,同步阻塞模型,工做模式多變,對於高併發的場景處理速度會比較慢,運行穩定。支持異步讀寫,能夠經過正則表達式作動靜分離。正則表達式
答:httpd有三種工做模式。緩存
prefork模式能夠算是很古老可是很穩定的模式。httpd服務在剛啓動時,就會fork出一些子進程(默認爲5個),一個子進程對應一個線程,而後等待request進來,而且老是試圖保持一些空閒的子進程,之因此這樣作,是爲了減小頻繁建立和銷燬進程的開銷。在同一個時間點內,一個線程只能處理一個進程。安全
worker模式和prefork模式比起來,是使用了多進程+多線程的模式,它也是預先fork了幾個子進程,每一個子進程可以生成一些服務線程和一個監聽線程,該監聽線程及接入請求並傳遞給服務線程處理和應答。worker工做模式佔用的內存較少,在高併發下表現還算優異。不過必需要考慮線程安全的問題,由於多個子進程是共享父進程的內存地址的。若是使用keep-alive的長鏈接方式,也許中間幾乎沒有請求,這是就會發生阻塞,線程被掛起,須要一直等待到超時纔會被釋放。若是過多的線程,就這樣被佔據,也會致使在高併發場景下的無服務線程可用。(該問題一樣會發生在prefork模式)。多線程
這是Apache最新的工做模式,它和worker模式很像,最大的區別在於,它解決了keep-alive場景下,線程被長期被佔用的的資源浪費問題。併發
event工做模式中,會有一個專門的線程來管理這些keep-alive類型的線程,當有真實請求過來的時候偶,將請求傳遞給服務線程,執行完畢後,又容許它釋放。這樣,一個線程就能處理多個請求了,實現異步非阻塞。異步
event工做模式在遇到某些不兼容的模塊時,它會失效,並退回到worker模式,一個工做線程處理一個請求。官方自帶的模塊,所有都是支持event工做模式的。ide