Я улучшил старый (около 5-7 лет) Сервер Fedora до 32 и теперь у вас есть проблема с остановкой процесса - остановлена ОС. Единственный новый "код приложения" - это версия java (open-jdk
), и это не имеет значения для кода Java. И зависание является "перезапускаемым", если оно было запущено из командной строки (и, может быть, иначе? Если да, я еще не знаю, как), поскольку оно переходит в состояние "Остановлено" (сообщает ps
так как Tl
), которую можно отключить, переведя на передний план (подробнее об этом ниже).
Так, что-то изменилось в самой ОС.
Есть несколько способов запустить код, который останавливается, но я для удобства запускал его через командную строку, создавая фон с помощью &
. Как бы он ни был запущен, он запускает демон на основе Java, который ищет работу, и, когда он что-то находит, запускает дочерний процесс - также Java, - который выполняет некоторую обработку самостоятельно, асинхронно.
Если нет дочернего запуска, нет и остановки.
Если есть дочерний запуск, дочерний процесс выполняется некоторое время, а затем все дерево процессов, начиная с запущенного из командной строки демона и далее, переводится в состояние «Остановлено». И я, вероятно, не могу легко дать ему загрузку, достаточную для запуска нескольких дочерних элементов, прежде чем один из них остановит демон диспетчеризации, потому что система настолько быстра, что почти мгновенно достигает точки остановки.
Функции ребенка разбиты на «Прелюдию», «Основную», «Эпилог» и «Очистку». И он сообщает, что делает, поэтому мы знаем, где он находится. ... Он всегда попадает в Main, когда его останавливают, поэтому я точно знаю, что он выполняет различные виды настройки, прежде чем он дойдет до остановки - он не просто останавливается при запуске дочерней Java. Оба процесса помещены в Tl
штат.
Из командной строки jobs
показывает задание как «Остановлено». Тогда ты можешь fg
обратно к самому демону и Затем он запрашивает пароль (Я НИКОГДА не видел такого поведения ?!) и после завершения все остановленные потоки / процессы возобновляются, и он работает до завершения, как будто ничего не произошло. я обычно ^z
а потом bg
чтобы вернуться в предыдущее фоновое состояние ...
На шутку, я пробовал НЕ фоновое и когда дело доходит до проблемного места, я просто получаю запрос на ввод пароля! ... Я никогда раньше не видел ничего подобного ни в одной системе. Это ДОЛЖНО быть сильной уликой.
Изучение Tl
государство пока не принесло абсолютно ничего, хотя T
состояние обоснованно задокументировано, хотя кроме fg
трюк Я пока не знаю, как перезапустить такое остановленное задание. (Способ перезапуска такого остановленного дерева процессов без необходимости ввода пароля был бы хорошим временным обходным решением!) У меня еще не было времени узнать, что все помещает что-то в T
штат. Но это моя следующая цель, после того как я завершу работу над тем, о чем расскажу ниже.
Это абсолютно недопустимое поведение, и мне нужно исправить его как можно скорее.
Я подумал, может быть, это измененное поведение OOM
убийца, но это не убивает рабочие места ?! Но, возможно, поэтому я наблюдал за памятью, и фактической свободной памяти не так много, но всегда есть много доступной виртуальной памяти (пространства подкачки).
Единственная другая причуда, которая может иметь значение, заключается в том, что, когда я обновлял сервер до Fedora Server 32, если я не контролирую загрузку с консоли, вместо этого загружается 31 - ОЧЕНЬ неприятно, и я уже безуспешно пытался это исправить. Похоже, это старая ошибка в grub
поскольку система была «модернизирована». Тем не мение, в настоящее время он работает как 31 - это сервер, и личный перезапуск с консоли - это больно! - может ли это быть причиной ?! Думаю, причина не в этом, но я не знаю.
Я выключил selinux, просто чтобы убедиться, что это не причина, и это не так (предполагая, что функции АНБ действительно можно отключить).
Отчаявшись найти решение как можно скорее, я провел все возможное исследование и поиск в Интернете проблема Fedora 30, которая была закрыта относительно EnableMultipleStreamsException
. Но, похоже, это НЕ проблема. ... Все еще исследуем!
РЕШЕНИЕ Попытки
Я пробовал использовать kill -CONF <pid>
но он только освободил демона и не работал с дочерними процессами, даже когда я применил ту же самую команду непосредственно к ним. Мое безумное предположение состоит в том, что они ищут пароль, который нужно применить откуда-то. ВНИМАНИЕ, изменение состояния с Tl на Sl! Что это значит? ИДК.
ЧТО-ТО В ОС ОСТАНОВИЛО ЭТО ДЕРЕВО ПРОЦЕССОВ!
И я должен это что-то выключить или перейти на другую ОС, как бы это ни было больно.
Кто-нибудь еще видел это раньше, что теперь делать и т. Д.?