У меня есть большая проблема, и это то, что производственное приложение моей компании, которое я, к сожалению, не могу закрыть и перезапустить (я не уверен, как и не хочу делать никаких ошибок), выплевывает много исключений на слишком много файлов открыть при попытке открыть сокет для чтения с 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-приложение.
Заранее спасибо!
ИЗМЕНИТЬ другое решение было бы, если бы была какая-либо команда, где я мог бы посмотреть, как эта программа запускалась с самого начала со всеми возможными флагами. Тогда я, возможно, смогу перезапустить его с успехом. Это устаревшее приложение.