2010-05-25 92 views
2

Apache是​​否阻止I/O或非阻塞IO?Apache是​​否阻止I/O?

+1

如果它將被阻止,它將無法一次處理數千個連接,這是它的能力。可能有一個可能的調整,但沒有。 – Poni 2010-05-25 03:24:54

回答

2

它爲每個連接分配一個進程,所以它可能被阻塞(除非它觀察與套接字I/O在同一線程上的超時?)。

爲了確保您應該在源代碼中查找套接字創建調用,並遵循對套接字描述符的訪問......我甚至不確定Apache是​​否必須執行分叉模式,也許它具有異步模式太。


編輯

對了,還有一堆的 「Multi-Processing Modules」,它決定如何處理多個HTTP請求。

+0

閱讀上面的評論 - 爲每個連接分叉是不合理的,而不是性能明智的說法。 – Poni 2010-05-25 03:26:05

+0

@Poni真,看起來像現代的選擇,只是讓你指定最大數量的線程(或子),其中每個線程將異步執行一定數量的作業。 – 2010-05-25 04:29:01

+0

如果是非阻塞IO,apache和nginx之間併發能力的主要區別是什麼? – 2010-05-26 03:49:13

0

Apache正在阻止I/O afaik。 nginx使用基於事件的非阻塞單線程,內存使用比apache要低得多。 Apache每個連接使用一個線程,這就是它如何處理多個連接。

1

Apache支持兩者。默認其阻塞。有使用NIO事件的非阻塞模塊。 其基於性能的調整來決定使用哪種方法。

http://hc.apache.org/

提供靜態內容,它能夠更好地使用非阻塞,但對於一個servlet容器使用它能夠更好地使用阻塞[線程局部變量。

+1

OP的問題不明確,但我猜想它涉及到着名的Apache HTTP Server(httpd)而不是Apache HttpComponents,一個Java庫。 – Will 2013-05-03 01:48:18