我有一個大問題,那就是我公司的生產應用程式不幸地無法關閉並重新啟動(我不確定如何關閉並重新啟動,而且我不想犯任何錯誤)在太多文件上拋出大量異常當嘗試打開套接字以從ftp 伺服器讀取資料時開啟。
2013-01-02 16:19:03,222 ERROR [main] software.background.Program(Program.java:doExecute{225}) - Exception during ftp transfer
someclasses.ftp.FtpException: Could not create connection to xxxx
at someclasses.communication.ftp.FtpImpl.connect(FtpImpl.java:114)
at Program.doExecute(Program.java:176)
at Program.main(Program.java:287)
Caused by: java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Socket.java:397)
at java.net.Socket.<init>(Socket.java:371)
at java.net.Socket.<init>(Socket.java:189)
at someclasses.Ftp.connect(Ftp.java:386)
據我了解,已達到打開文件/套接字等的每個應用程式限制。有什麼辦法可以暫時增加這個最大值而不關閉應用程式嗎?我已經運行了該命令ulimit
,它指出unlimited
。我嘗試檢查它使用該lsof -p PID
命令打開了多少個連接,但它顯示“未找到命令”。
如果有人能幫助我找到 lsof 具有的另一個類似效果(我認為這是一台紅帽機器)並提供如何暫時修復此問題的建議,我會很高興?最令人愉快的解決方案是增加應用程式可以打開的檔案/套接字。這只是一個普通的 java 應用程式。
先致謝!
編輯 另一個解決方案是,如果有任何命令可以讓我從頭開始查找該程式如何使用所有最終標誌運行。然後我也許可以成功地重新啟動它。這是一個舊版應用程式。
答案1
這一切都隨著應用程式的重新啟動而結束。我將 ulimit -n 更改為 2048 並重新載入配置。但是,所有進程都繼承了舊配置,並且必須重新啟動應用程式。