Почему Tomcat перезагружается = истинная причина CPU 100%? - PullRequest
0 голосов
/ 10 декабря 2018

В режиме разработки мне нужна горячая перезагрузка.Раньше я использовал все виды языков, например PHP, Node.js и даже Go lang, все языки поддерживают горячую перезагрузку с нулевой проблемой.Но только в Tomcat, если я установлю reloadable=true, это приведет к загрузке процессора на 100%.В их официальном документе говорится, что Catalina будет «отслеживать» изменения файлов классов, поэтому вы не должны указывать это как истину.Но, конечно, мне нужно установить его в true, иначе как я могу повторно развернуть его после изменения файлов класса?Почему мониторинг вызовет CPU на 100%?Я что-то не так настраиваю?Спасибо!

1 Ответ

0 голосов
/ 31 марта 2019

Механизм запуска Java Tomcat отличается от PHP.Для лучшей производительности Java загрузит все файлы классов в память, поэтому не будет знать, изменяется ли файл на диске.Для отслеживания таких изменений необходимо часто читать диск и сравнивать контрольную сумму каждого файла, если обнаружена разница, затем загружать новый файл в память, которые потребляют огромный объем дискового ввода-вывода и вызывают загрузку ЦП на 100%.Для PHP это довольно просто: PHP не загружает все файлы .php в память, но загружает их по требованию, что может быть медленным для некоторого сценария, но идеально подойдет для изменения файлов.Я считаю, что это главное отличие.

Итак, вывод таков: НИКОГДА не используйте reloadable=true для Tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...