Некоторое время назад у меня была проблема с сервером, на котором Apache и Snort занимали 100% процессора, из-за чего sshd не отвечал из-за удаленного доступа. Мне пришлось физически перейти на сервер, чтобы войти в локальный TTY, а затем остановить apache / snort.
Мне интересно, есть ли способ гарантировать подключение по ssh в ситуации 100% загруженного процессора / памяти. Достаточно установить "хороший" приоритет?
Спасибо!
За исключением использования внеполосного метода, нет никакого способа гарантировать, что SSH будет доступен на полностью загруженном сервере. Если ваша служба настолько загружена, что не может обслуживать даже базовый SSH-терминал, у вас есть другие проблемы.
Да, renice
и понижая его nice
value улучшит производительность при больших нагрузках, но вместо этого используется что-то вроде pam_security (показан пример Вот) предотвратит то, что Apache / что-либо еще не станет неуправляемым с самого начала.
Вашим универсальным решением для этого является инструмент внеполосного управления, такой как Dell iDRAC, IBM Remote Supervisor или HP iLO. Он всегда может представлять консоль (может ли ОС реагировать на нее, зависит от вашей конкретной ситуации) и применять желаемые состояния питания по мере необходимости.
У меня был некоторый успех, предоставляющий привилегии реального времени для sshd, однако это происходит за счет необходимости перезагружать компьютер, если один из процессов реального времени завершается.
Итак, если вы хотите пойти по этому пути, запустите второй демон ssh, который предназначен только для экстренных случаев. :)