2013-02-24 70 views

回答

6

這在Apache performance tuning documentation,在「accept()序列化 - 多個套接字」下解釋。簡而言之,至少在某些操作系統下,傳入連接會喚醒全部 Apache進程正在等待select()poll()中的傳入連接,但會導致accept()在除其中一個之外的所有進程上都失敗。這是低效的,所以使用互斥鎖來確保一次只有一個進程接受傳入連接。

+0

+1這是合理的。 – rook 2013-02-24 04:55:49

2

閱讀您鏈接到的來源中的評論。似乎互斥鎖並不真正保護accept操作,但需要輪詢的偵聽套接字列表(請注意,當只有一個偵聽套接字時,不會使用互斥鎖,至少不會在未破壞的系統上使用,其中accept工作正確)。如果這可能在運行時改變,那麼代碼可能是正確的。但我有一種感覺,他們只是在做一些無意義的事情。這是Apache,所以你不應該期望高質量或甚至合理的代碼...

+4

那麼,它*有*我+1 +1直到結束語.. – 2013-02-24 04:53:48