У нас это было несколько раз. Внезапно наш производственный сервер не отвечает, потому что процесс находится в бесконечном цикле, или сервер MySQL перестает обслуживать новые запросы, потому что один запрос блокирует все ...
Мы подключаемся к серверу по SSH и используем ps aux
или top
найти виновного, или mytop
или SHOW FULL PROCESSLIST
в MySQL, чтобы найти идентификатор процесса, вызывающего нарушение, и kill
Это. Затем, конечно, мы пытаемся воссоздать ситуацию на тестовом сервере и исправить ошибку.
Но иногда сервер так хорошо вешает свой ps aux
/ top
/ mytop
/ SHOW FULL PROCESSLIST
не пройдет - заблокированы даже админы.
Как лучше всего гарантировать, что администратор всегда может получить доступ к серверу и отключить нарушающие процессы или запросы (как в Linux, так и в MySQL)?
Я проверил приятно 1), но постоянное открытое соединение с nice -20 кажется немного чрезмерным и трудным для работы (не говоря уже о том, что это опасно для root).
Мы используем серверы Dell, на которых установлена сетевая карта удаленного доступа (DRAC), которая позволяет нам получать доступ к серверу по внешнему каналу через ssh или веб-браузер. Мы можем перейти на экран консоли или выключить и снова включить сервер. Большинство крупных производителей серверов поддерживают похожие устройства.
Это не поможет вам, если вы хотите войти на сервер, на котором доступно 0 ресурсов для входа в систему. За исключением резервирования ресурсов для входа в систему, это лучший вариант после физического доступа к серверу.
Похоже, у вас есть проблемы с проблемными приложениями. Почему у вас есть приложения, которые заходят в бесконечные циклы, и запросы MySQL, которые истощают ресурсы вашего сервера?
Думаю, мой ответ был недостаточно хорош, и кто-то почувствовал необходимость его удалить.
монит или бог, упреждайте захват, устанавливая пределы. Если вы используете виртуальное железо, а не голое железо, назначьте все, кроме одного ядра, вашему процессу и сохраните одно ядро для доступа к консоли. KVM over IP иногда позволяет вводить комбинацию клавиш на консоли. Если сетевая активность делает это, выключите eth0, пока все не успокоится, подключитесь к eth1.
Модуль pam_limits.so - отличный инструмент для ограничения памяти, открытия файлов и т. Д. хороший приоритет для пользователей и групп.
rpm -ql pam | grep limits
man limits.conf
less /etc/security/limits.conf
Может быть SLURM может быть ответом. Это диспетчер ресурсов QoS для кластерных систем на базе Linux.