В настоящее время я имею дело с ситуациями, когда приложение просто работает несколько секунд или даже минут и сразу же умирает без простого журнала и ошибки события в метриках Dropwizard
Процесс не должен простоумри, должно быть либо исключение, либо аварийный дамп.Если ваша машина перегружена, ваш процесс может быть убит в Linux для защиты системы.Если это произойдет, он должен войти в систему /var/log/messages
См. https://unix.stackexchange.com/questions/136291/will-linux-start-killing-my-processes-without-asking-me-if-memory-gets-short
Если ваша программа случайным образом вызывает System.exit(int)
, ваш SecurityManager должен предотвратить это или хотя бы зарегистрировать его.
Таким образом, цель состоит в том, чтобы оптимизировать память полностью зарегистрированного jvm.
К сожалению, многие из упомянутых вами журналов буферизуются, поэтому, если процесс будет остановлен, вы, вероятно, потеряетепоследние несколько записей, возможно последние несколько минут входа.Эти журналы полезны для диагностики проблем с производительностью, но могут не помочь определить, почему процесс неожиданно умирает.
настроить производительность памяти / gc, чтобы избежать oom
Это другой видпроблемы.Вам нужно попробовать
- , чтобы дать процессу намного больше памяти, и посмотреть, в какой момент процесс не умирает.
- , если это работает, вашему процессу требуется больше памяти, если вашпроцесс продолжает потреблять память, со временем у вас может быть утечка памяти.
- , если вы продолжаете получать ошибки OutOfMemoryEr в аналогичных местах кода, это, скорее всего, место, где он потребляет слишком много памяти.
- Скорее всего, у вас недостаточно памяти для задач, которые он выполняет.Затем я бы посмотрел на профиль памяти, используя профилировщик, такой как регистратор полетов, чтобы посмотреть, сможете ли вы уменьшить объем используемой памяти.В какой-то момент вы либо решаете проблему за счет сокращения использования, либо должны выделить процессу больше памяти.
Учитывая, что память дешева, а время у вас нет, может быть проще увеличить память.т.е. имейте в виду, сколько памяти вы можете купить за день вашего времени.