2011-08-22 86 views
4

昨天出現了一個奇怪的現象:「連接到MongoDB的失敗操作正在進行」小負荷的所有查詢需要很長一段時間,然後現場返回錯誤 MongoDB的「連接失敗操作正在進行。」

在mongostat我們看到大約10-30個連接(非常小,因爲我們 通常與400-500一起工作) 但是當我輸入「netstat -na | grep 27017」時,我看到很大數量的TCP連接(> 150):

http://pastebin.com/3ghtwkVd

爲什麼mongodb關閉連接但TCP仍然打開?

我們不使用持續性連接,並且始終在腳本結尾處執行Mongo:close() 。雲計算系統,如亞馬遜EC2上

站點工作(我們沒有觀察到任何 網絡問題)

10.1.1.16 - MongoDB的 10.1.1.7 - 阿帕奇 的1Gbit/s的服務器之間 OS:Debian的6壓住 的MongoDB:1.8.2(1.6.6與我們有同樣的問題) 的Apache 2 PHP 5.3.6 PHP 蒙戈驅動1.1.0(在1.2.x的連接池是 我們非常不利)

回答

0

看起來像你的驅動程序(如PHP)不是即使使用該方法關閉TCP連接,也可以關閉TCP連接。

如果您使用PHP作爲模塊,請嘗試使用graceful apache重新加載以使PHP模塊卸載並重新加載。這樣,析構函數被調用並且連接被關閉。

如果您使用PHP作爲fastcgi應用程序,請重新啓動(kill/exec)它並再次調用。

如有必要請提交錯誤。