Мы попали в странный вопрос на одном из серверов клиентов, где Java сталкивается «Слишком много файлов»,Охота на «слишком много файлов» вызывают
Проверка дескрипторов с помощью LSOF производит большой список «носка» дескрипторы с «невозможно определить протокол».
Я подозреваю, что это происходит из-за сокетов, которые открывались слишком долго, но поскольку в нашем дампе потока содержится много их, я не знаю, кто именно виновник.
Есть ли хороший способ определить, какие потоки точно открывают эти сокеты?
Спасибо.
«Один из подходов - запустить приложение с использованием профилировщика. Это может найти проблему, даже если вы не можете точно воспроизвести проблему клиента». Может ли профайлер поймать такие проблемы? – SyBer
Соответствующее использование профилировщика может обнаружить наличие утечки ресурса (например, Socket), которая в противном случае не может быть замечена. –
Мы выяснили, что профилировщик MyKit имеет встроенный мониторинг сокетов, что очень полезно для поиска открытых сокетов, и это в конечном итоге решило все наши дескрипторы утечек. – SyBer