Поиск по сайту:

Настройте полностью неограниченную конфигурацию limit.conf для тестовых серверов.


Без ограничений! Нам всем может нравиться отсутствие ограничений, но действительно ли это хорошая идея? Обычно, когда нет ограничений, «будут драконы». То же самое и с limit.conf, хотя для тестирования серверов действительно безлимитный limit.conf помогает!

Что такое limit.conf?

Файл limits.conf содержит настройки ограничения ресурсов для операционной системы Linux. Когда ваш компьютер с Linux был установлен, файл был создан как часть установки и содержал значения для ресурсов, таких как размер виртуальной памяти, максимальное количество файлов и многое другое.

Эти значения устанавливаются в заранее заданных пределах, чтобы гарантировать, что ваша система Linux не будет легко перегружена. В противном случае мошенническая программа или процесс могут легко привести к остановке системы, которая в противном случае работала бы. Представьте, например, ситуацию, когда вы установили максимальное количество открытых файлов на неограниченное, а мошеннический процесс (будучи процессом с ошибкой или даже вредоносным программным обеспечением, таким как вирус или вредоносная программа) теперь начинает открывать файл. после файла в системе.

Скоро в системе закончатся ресурсы, необходимые для обработки всех этих открытых файлов. Будь то процессор в вашей системе (ЦП) или память или даже диск в некоторых случаях, когда, например, мы можем настроить максимальный размер файла ядра как неограниченный, и мы запускаем большие процессы в системе с большим объемом памяти и мало свободного места или небольшой корневой диск.

Таким образом, используя файл конфигурации limits.conf, пользователь (или системный администратор) может указать ограничения на ресурсы, доступные пользователю и системе.

Формат файла limits.conf (который находится в /etc/security/) хорошо определен. Как правило, мы указываем применимый домен (например, пользователя, группу и даже подстановочные знаки, такие как *), тип (мягкое или жесткое ограничение), элемент, к которому относится правило (например, nofile, который определяет максимальное количество открытых файлов, элемент locks, который определяет максимальное количество блокировок файлов, которые может удерживать пользователь, и т. д.) и, наконец, значение (фактическое установка/максимум).

Заголовок файла limits.conf четко определяет это с подходящим количеством деталей:

Если вы хотите узнать больше о каждом конкретном элементе и других параметрах конфигурации в файле limits.conf, просто выполните:

man limits.conf

По подсказке вашего терминала.

Неограниченный

В общем, ни в коем случае нельзя использовать безлимит в limits.conf. Тогда, спросите вы, зачем эта статья? Что ж, всякий раз, когда есть правило, есть и допустимое исключение. Исключением в данном случае являются тестовые серверы. Когда вы занимаетесь тестированием или обеспечением качества любого рода, вы часто сталкиваетесь с ограничениями системы.

Неограниченное использование с правильной настройкой среды тестирования/контроля качества для управления системными ресурсами является допустимым исключением из правил сохранения разумных и специфичных для системы ограничений внутри limits.conf. Для всех остальных серверов, как указано, предпочтительна и рекомендуется конфигурация для каждого сервера.

Без лишних слов давайте представим скрипт, который устанавливает для всех переменных и параметров в limits.conf неограниченные значения. Этот сценарий основан на сценарии setup_server.sh под лицензией GPLv2 в репозитории mariadb-qa на GitHub. Вы также можете изучить этот сценарий для других файлов, которые вы можете использовать для неограниченных настроек для настройки тестового сервера, например настройки /etc/sysctl.conf и /etc/systemd/logind. конф

Чтобы настроить сервер на неограниченный доступ, выполните следующий сценарий в командной строке терминала (тестового) сервера, который вы хотите настроить как неограниченный.

Предупреждение: обратите внимание, что делать это на рабочей машине, вероятно, не очень хорошая идея, если у вас нет четкого понимания изменений, которые вы вносите, как частично объяснено в этой статье, и делаете это по конкретной и уважительной причине. Выполнение этого изменения также имеет серьезные последствия для безопасности, и рекомендуется делать это только на машине, которая находится за брандмауэром и VPN, то есть не на общедоступном сервере. TLDR; Приступая к реализации этого на свой страх и риск.

Вы также должны знать, что использование большого числа (более ~ 20000) для soft и hard nproc может привести к нестабильности системы и зависаниям в Centos 7, но не в Ubuntu 18, 19 и 20. Я и другие инженеры со мной использовал эту настройку в течение некоторого времени для тестирования серверов, и для этого приложения она идеальна. Обратите внимание, что все настройки не ограничены, кроме nofile, для которого 1048576 является максимальным.

sudo bash -c "cat << EOF > /etc/security/limits.conf
* soft core unlimited
* hard core unlimited
* soft data unlimited
* hard data unlimited
* soft fsize unlimited
* hard fsize unlimited
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 1048576
* hard nofile 1048576
* soft rss unlimited
* hard rss unlimited
* soft stack unlimited
* hard stack unlimited
* soft cpu unlimited
* hard cpu unlimited
* soft nproc unlimited
* hard nproc unlimited
* soft as unlimited
* hard as unlimited
* soft maxlogins unlimited
* hard maxlogins unlimited
* soft maxsyslogins unlimited
* hard maxsyslogins unlimited
* soft locks unlimited
* hard locks unlimited
* soft sigpending unlimited
* hard sigpending unlimited
* soft msgqueue unlimited
* hard msgqueue unlimited
EOF"

После того, как вы выполнили это, просто перезапустите сервер, чтобы загрузить все новые параметры конфигурации. Вы не заметите никакой разницы, за исключением того, что ваши тестовые прогоны, если они были очень ресурсоемкими, больше не будут останавливаться из-за различных проблем с конфигурацией ограничений.

Тем не менее, как указано выше, вам потребуется, как часть вашей среды тестирования, надежный процесс наблюдения и мониторинга ресурсов сервера, который гарантирует, что ваш сервер не будет чрезмерно загружен, что часто приводит к зависаниям и требованиям к перезагрузке. В будущей статье я могу предоставить основы для такого сценария, из которых вы можете расширить, чтобы охватить свои собственные настройки.

Подведение итогов

Существуют допустимые варианты использования для настройки /etc/security/limits.conf на все возможные максимумы. Как правило, они встречаются редко (за исключением тестовых серверов).

В этой статье мы узнали больше о limits.conf: почему он существует и как изменить его конфигурацию. Мы изучили формат, синтаксис и идиомы limits.conf и составили список простого скрипта, который может установить все наши настройки на неограниченные.

Даже если вы хотите настроить свой сервер на меньшие ограничения, сценарий легко адаптировать и интегрировать (как код GPLv2, как описано) в ваши собственные сценарии: просто измените unlimited на нужные значения. Это также простой способ быстро настроить сервер на нужные значения и, таким образом, унифицировать и запрограммировать настройку фермы серверов limits.conf.

Наслаждайтесь!