Мой вопрос: есть ли у JVM какой-то ресурс, связанный с потоками или процессами, который может привести к скачку производительности ProcessBuilder после месяца или более нормального использования? Использование java 6 update 21 для всех приложений.
За последние несколько месяцев мы заметили, что один сервер в нашем центре обработки данных (Sparc M4000 под управлением Solaris 10) может без проблем работать около 6-8 недель. Однако быстро производительность приложения, использующего класс ProcessBuilder для запуска скриптов, резко падает, так как ProcessBuilder.start иногда требует более минуты для возврата. После перезагрузки и в течение нескольких недель нормальное время возврата составляет от 10 до 100 миллисекунд.
Я написал отдельное небольшое приложение, которое создает 5 потоков, и каждый поток запускает команду «ls» с использованием ProcessBuilder 10 раз последовательно, затем я собираю статистику, чтобы отслеживать исходную проблему. Это приложение закрывается после каждого запуска и запускается из cron только один раз в час. Обычно это занимает всего секунду или две.
Прошлой ночью время ProcessBuilder снова увеличилось до более чем минуты для каждого вызова ProcessBuilder.start после 45 дней безотказной работы и нормального поведения.
top показывает отсутствие памяти или процессора. Я попытался сделать jstack в тестовом приложении, но получил ошибку «Не удается создать агент thread_db».
Любые идеи?