Возможно ли, чтобы удаленная консоль Linux оставалась отзывчивой (я использую SSH, но коробка также работает медленно локально), когда система находится под высокой нагрузкой.
Я хотел бы иметь возможность удаленного входа на сервер для его мониторинга, даже если система кажется перегруженной.
Если сервер вот-вот заменит себя до смерти, и огромное количество процессов борются за ЦП и другие ресурсы, то это немного сложно сделать. Иногда, если сервер очень перегружен, даже новое ssh-соединение может быть сложно установить.
В подобных ситуациях у меня обычно есть другой сервер в той же сети, и у меня на экране есть ssh-соединение с этого сервера на перегруженный сервер. Когда перегруженный сервер становится слишком перегруженным, я подключаюсь к этому другому серверу и возобновляю сеанс экрана.
Но у вас есть и другие варианты.
Можно разделить процессы на несколько доменов, используя cpusets функция ядра. Таким образом вы можете предоставить своим приложениям один домен и разрешить им использовать только несколько ядер и некоторый объем памяти. Затем вы можете создать еще один домен для системного администрирования, чтобы вы должен есть место для ваших потребностей ssh.
Однако прежде чем это сделать, вы должны быть уверены, откуда взялась высокая нагрузка на систему. Это из-за очень высокой загрузки ЦП? Приложения постоянно обращаются к диску и замедляют операции ввода-вывода? Приложения съедают всю оперативную память и подкачка вызывает медленную работу? Ожидается ли использование памяти / других ресурсов, или в вашем приложении скрывается ошибка, из-за которой оно внезапно поглощает всю оперативную память или процессор?
Если последнее, то можно установить psmon или аналогичное программное обеспечение. psmon может контролировать вашу систему и, например, отключать и перезапускать наблюдаемые процессы, если они занимают более X мегабайт ОЗУ или постоянно занимают более Y% ЦП.
А если ожидается высокий уровень использования ресурсов, вам следует подумать об обновлении оборудования.
Это может быть сложно, в зависимости от того, что для вас означает высокая нагрузка. Лучше всего войти в систему до того, как сервер окажется под большой нагрузкой. Поскольку это не вариант (невозможно войти в систему весь день), я бы попытался немного ограничить обычных пользователей (достаточно, чтобы вы вошли в систему и сэкономили время).
Я бы посоветовал поиграть с /etc/limits.conf
(видеть man limits.conf
), чтобы ограничить память и повысить приоритет для пользователей без полномочий root. Таким образом, для административных пользователей все еще есть окно ресурсов для входа в систему.