2012-06-11 53 views
0

我目前正面臨着在Linux上運行在Jetty 7.4.5.v20110725上的java webapp的問題。從開始時間戳幾天後,我的Web應用靜態內容的文件描述符即將用盡。我使用useFileMappedBuffer = true(在webDefaults.xml中)啓動jetty服務器。我正在使用jdk1.6.0_30。如果您對如何解決此問題有任何建議,請告訴我們。Jetty 7.4.5服務器在使用FileFileMappedBuffer = true時泄露文件描述符

請注意,當useFileMappedBuffer = false(在webDefaults.xml中)時不會發生此問題。

回答

0

如果您的應用程序下次耗盡時間戳,請嘗試找出哪些文件已打開以及打開的連接是否導致問題。

嘗試通過調用(我認爲這是lsof -p,但儘量還是看lsof的手冊頁,因爲我寫這在我心裏)列出打開的文件:

lsof -p <jettypid> 

這會告訴你什麼是文件由碼頭流程開放。尋找這可能應該已經被關閉的文件等

然後做一個:

netstat -an 

這將顯示您建立的網絡連接。查看CLOSE_WAIT狀態中是否有很多連接,表明連接沒有正確關閉。

也看看你的系統範圍內的OS限制使用:

ulimit -a 

它會告訴你有多少文件描述符可以通過一個單一的過程中打開。如果您的網站流量很高,且最常見的默認值爲1024 max fd,那麼您可能需要提出這個問題。如果您認爲流量是問題,請查看本指南:http://wiki.eclipse.org/Jetty/Howto/High_Load

但是您已經聲明問題確實在兩天後纔會發生。這通常表示未正確關閉連接,文件資源等。

如果不確定如何處理上述命令的輸出,請隨意粘貼它們。

獨立的問題我建議你升級到最新的jetty 7.x.