我有一個使用CherryPy編寫的Web應用程序,它在127.0.0.1:4321
上本地運行。我們使用mod-rewrite和mod-proxy來讓Apache充當反向代理; Apache也處理我們的SSL加密,並可能最終被用來傳輸我們所有的靜態內容。Apache套接字不關閉?
對於小型工作負載,這一切都可以正常工作。不過,我最近使用urllib2
來編寫一個壓力測試腳本,可以模擬100個客戶端的工作負載。過了一段時間,每個客戶端從Apache獲得503錯誤,表明Apache無法連接到127.0.0.1:4321
。 CherryPy的正常工作,但我的Apache的錯誤日誌顯示像下面幾行:
[Thu Oct 02 12:55:44 2008] [error] (OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : proxy: HTTP: attempt to connect to 127.0.0.1:4321 (*) failed
Google上搜尋這個錯誤表明阿帕奇可能已經用完了套接字文件描述符。由於我只有100個客戶端正在運行,這意味着連接沒有被關閉,可能是我的urllib2
連接和Apache(我肯定在urlopen
的返回值上調用.close()
)或Apache和CherryPy之間的連接。
我已確認我的urllib2
請求正在發送HTTP Connection: close
標頭,儘管如果重要的話,Apache配置爲KeepAlive On
。
在它的事項,我使用Python 2.5,Apache 2.2的,CherryPy的3.0.3和服務器在Windows服務器上運行的情況下,2003年
那麼,什麼是我的下一個步驟,制止這個問題?
這立即解決了問題。萬分感謝! – 2008-10-03 15:16:15