Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve stability of cluster http invokers when current node is alive but very slow #133

Open
haulmont-git opened this issue Jul 7, 2015 · 0 comments
Assignees
Labels
type: enhancement New feature or request

Comments

@haulmont-git
Copy link

По нашему опыту эксплуатации периодически случаются ситуации, когда сервер среднего слоя не падает (краш jvm или всей машины, не-старт томката), а зависает или сильно тормозит.
Это могут быть:

  • дедлоки по разным причинам
  • состояние на старте сервера, когда томкат уже слушает http порт, но все запросы подвисают
  • OOM-ситуация. Например код или отчёт загружают много данных в память. Сборщик мусора начинает бешено молотить, постоянно останавливает все потоки JVM на длительную сборку мусора. В таком полуживом состоянии сервер может провести много минут, пока не сработает "GC overhead limit exceeded".

Проблема в том, что ни один из клиентов (клиентские слои и десктоп клиенты) не переключаются на другой узел, т.к. нет IOException, просто сервер отвечает на запросы необычно медленно.
Все пользователи страдают от тормозов, не имея возможности переключиться на другой узел. Нет возможности провести детальную диагностику JVM (thread dumps, heap dumps и т.п.), т.к. JVM нужно перезапустить как можно быстрее, дабы с узла ушли клиенты.

Я не уверен точно, как нужно делать обнаружение подобных зависаний, но может быть сработает какой-то фоновый шедулер, который периодически выдает очень простой запрос с таймаутом на текущий узел сервера.
Если таймаут истекает, то есть смысл переключиться на другой узел кластера (с какими-то порогами на повторное переключение).


Original issue: https://youtrack.haulmont.com/issue/PL-5626

@haulmont-git haulmont-git added cuba type: enhancement New feature or request labels Apr 27, 2018
@haulmont-git haulmont-git added this to the Undefined milestone Apr 27, 2018
@rapekas rapekas removed the cuba label Apr 27, 2018
@knstvk knstvk removed this from the Undefined milestone May 4, 2018
@jreznot jreznot modified the milestone: Undefined May 18, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants