Есть такая проблема: есть приложение на Java и оно периодически обвисает.
Нужно имплементировать солюшен который позволит это превентить, то есть приложение
будет принимать значение таймаута и самоликвидироватся если что — это не сложно.
Но возникла мысль — нельзя ли извлечь какую то информацию перед тем как прибивать,
которая поможет найти проблему? Там список тредов например и их состояния итд.
Нет ли опыта у кого?
Здравствуйте, Pharod, Вы писали:
P>Есть такая проблема: есть приложение на Java и оно периодически обвисает. P>Нужно имплементировать солюшен который позволит это превентить, то есть приложение P>будет принимать значение таймаута и самоликвидироватся если что — это не сложно. P>Но возникла мысль — нельзя ли извлечь какую то информацию перед тем как прибивать, P>которая поможет найти проблему? Там список тредов например и их состояния итд. P>Нет ли опыта у кого?
Может лучше взять профайлер и найти причину некоректного поведения, чем вставлять подпорку через одно место?
Здравствуйте, Pharod, Вы писали:
P>Но возникла мысль — нельзя ли извлечь какую то информацию перед тем как прибивать, P>которая поможет найти проблему? Там список тредов например и их состояния итд. P>Нет ли опыта у кого?
Еще можно зависшему java процессу на *nix-ах послать "kill -3 <pid>" и посмотреть на чем висят его потоки.
Здравствуйте, Pharod, Вы писали:
P>Привет,
P>Но возникла мысль — нельзя ли извлечь какую то информацию перед тем как прибивать, P>которая поможет найти проблему? Там список тредов например и их состояния итд. P>Нет ли опыта у кого?
Pharod wrote:
> Есть такая проблема: есть приложение на Java и оно периодически обвисает. > Нужно имплементировать солюшен который позволит это превентить, то есть > приложение > будет принимать значение таймаута и самоликвидироватся если что — это не > сложно.
Используй Tanuki Service Wrapper. Он это умеет и много что еще.
Здравствуйте, Pharod, Вы писали:
P>Здравствуйте, Blazkowicz, Вы писали:
B>>Может лучше взять профайлер и найти причину некоректного поведения, чем вставлять подпорку через одно место?
P>Это продакшен, решение нужно им сейчас — а когда мы сможем воспроизвести и пофиксить — большой вопрос. P>Не все в мире так идеально как хочется.
on linux: kill -QUIT <java process id>
result -> catalina.out (for tomcat) — processes activity
Здравствуйте, Pharod, Вы писали:
P>Нет ли опыта у кого?
Подобные проблемы обычно решали развитой системой логирования.
Однажды, был достаточно долгий спор по поводу необходимости написания процесса, следящего за основным процессом и при его зависании производящем перезапуск. В конце-концов решили этого не делать, дабы не уходить от проблем ненадежности программы подобным способом, а решать их непосредственно сталкиваясь с очередной ошибкой.