2016-03-22 3 views
1

У меня есть фляга, работающая в фоновом режиме на сервере Ubuntu.Процесс Java остается в рабочем состоянии и потребляет CPU

В определенный момент запуска приложения consumming слишком много ресурсов процессора (400%) и 4 ребенка процесс пребывания в R состояние:

HTOP state before/after problem

NB: проблема генерации НЕ из-за количества используя, он вызван только через определенное время (3-4 дня). Мы должны убить java и повторно запустить его.

EDIT ADD GC Log:

Я сделал Java -verbose: дс, и вот что я получил от перезапуска приложения и если приложение показать проблему объяснено выше.

РЕДАКТИРОВАТЬ ADD OLD GEN Вход:

В первом графике, ось х не в секунду, так как журнал не давал метку времени, когда ГХ делается. Также в ScreenShot внизу Visual GC запускается в Visual VM в период, когда возникает проблема.

Graph Line for the GC

Вот лог свалка:

http://www.filedropper.com/threaddump2

+0

, пожалуйста, предоставьте нам дополнительную информацию, есть ли у вас журналы? – HCarrasko

+0

@Hector Я не знаю, какие журналы можно добавить в мое приложение, которое может быть полезным! – EspritBat

ответ

2

Одной из возможных причин (и это чистая спекуляция, так как мы не имеем никакой информации, чтобы идти дальше) является то, что процесс Java является заканчивается память и начинает делать полные коллекции мусора, которые являются интенсивными. Включите ведение журнала, чтобы определить, если вы получаете ошибку OutOfMemory, и если вы это сделаете, включите ведение журнала gc и попытайтесь определить источник утечки памяти.

Посмотрев на свой график, я бы сказал, что у вас определенно есть утечка ресурсов, если ось x больше, чем секунды. Было бы интересно, если бы вы могли опубликовать поведение поколенного поколения на конечной стадии и при более высоком разрешении.

Хорошо, глядя на новые графики, я немного удивлен. Я не могу примирить поведение первого графика с новыми графами. Кажется, у вас нет проблем с памятью. Старый ген в основном пуст, как молодой ген. У вас есть журналы из вашего приложения?

Новые графики не дают более значимой информации, вы можете подумать о создании дампа потока, когда приложение переходит в haywire. Используйте jstack <pid> >> thread_dump.log

+0

какой журнал вы говорите? – EspritBat

+0

У вас обычно есть журнал приложений? У вас нет server.log или что-то в этом роде? Вы ничего не получаете на std.err? – Erik

+0

Я делаю свой журнал приложений и перенаправляю 'system.out.println' в другой файл журнала. Но нет ошибки или исключения. – EspritBat