🐧 Как найти правильные значения ulimit для учетной записи пользователя или процесса в системах Linux? |

🐧 Как найти правильные значения ulimit для учетной записи пользователя или процесса в системах Linux?

Мануал

Для нормальной работы системы необходимо убедиться, что после установки различных программ установлены правильные значения ulimit.

В системе Linux предусмотрены средства ограничения количества используемых ресурсов.

Лимиты устанавливаются для каждой учетной записи пользователя Linux.

Однако системные ограничения применяются отдельно к каждому процессу, запущенному и для этого пользователя.

Например, при слишком низких пороговых значениях система может не позволить серверу обрабатывать веб-страницы с помощью Nginx/Apache или приложения PHP/Python.

Ограничения системных ресурсов просматриваются или устанавливаются с помощью команды ulimit.

Давайте посмотрим, как использовать команду ulimit, которая обеспечивает контроль над ресурсами, доступными оболочке и процессам.

Как найти ulimit для пользователя в Linux

Команда ulimit Linux устанавливает или отображает ограничения на ресурсы пользовательского процесса.

Обычно лимиты задаются в файле /etc/security/limits.conf или в блоках systemd.

Два типа лимитов

Все лимиты Linux делятся на мягкие и жесткие:

  • Мягкий лимит (Soft limit)  – Все пользователи могут изменять мягкие лимиты до максимума, установленного жесткими лимитами. Передайте опцию -S в команду ulimit.
  • Жесткий лимит (Hard limit) – Только пользователь root может изменять жесткие лимиты esource. Передайте опцию -H в ulimit.

Просмотр ulimit для учетной записи пользователя Linux

Чтобы просмотреть все мягкие и жесткие лимиты для текущего пользователя, используйте следующий синтаксис:

ulimit -Sa
 ulimit -Ha
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 126787
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) unlimited
cpu time (seconds, -t) unlimited
max user processes (-u) 126787
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited 

Список всех жестких ограничений для пользователя с именем ‘tom’

Вы должны выполнить следующую команду от имени пользователя root или, по крайней мере, иметь доступ к этой учетной записи через sudo/su:

su -- tom -c “ulimit -Ha”
 su -- tom --shell /bin/bash -c “ulimit -Ha”
sudo -u tom bash -c “ulimit -Ha”
 sudo -u tom sh -c “ulimit -Ha”

Найдем все мягкие лимиты для пользователя с именем ‘jerry’.

Снова запустите его от имени root с помощью команды su или sudo:

su -- jerry -c “ulimit -Sa”
su -- jerry --shell /bin/sh -c “ulimit -Sa”
sudo -u jerry bash -c “ulimit -Sa”
sudo -u jerry sh -c “ulimit -Sa”

см . также:

🚰 5 полезных инструментов для обнаружения утечек памяти с примерами

Поиск ‘ulimit’ для пользователя процесса (имя процесса)

Процесс в Linux – это не что иное, как запущенный экземпляр программы.

Например, когда вы запускаете приложение Firefox, вы создали процесс.

Однако некоторые процессы работают в фоновом режиме в течение длительного времени.

Обычно в фоновом режиме работают серверные процессы, и вы не можете использовать команду sudo или su, чтобы узнать их границы.

В данном примере nginx запущен под пользователем www-data в Debian Linux, но доступ к оболочке для учетной записи пользователя www-data заблокирован по умолчанию из соображений безопасности.

Другими словами, следующая команда su или sudo не выполнится на 100%:

su -- www-data -c “ulimit -Sa”
This account is currently not available

Как найти ulimit для процесса

Синтаксис следующий:

cat /proc/PID/limits

Сначала найдите PID (идентификатор процесса) для nginx, выполнив команду ps вместе с командой grep:

ps aux | grep nginx
root        8868  0.0  0.0 127044 24048 ?        Ss   May23   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data   18074  0.0  0.0 127276 24716 ?        S    May23   0:09 nginx: worker process
www-data   18075  0.0  0.0 127276 22284 ?        S    May23   0:00 nginx: worker process

Теперь выполните следующую команду cat:

cat /proc/8868/limits
Limit                    Soft Limit          Hard Limit          Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             unlimited            unlimited            processes
Max open files            1024                 1048576              files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       385944               385944               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

Большинству разработчиков и сисадминов необходимо знать максимальное количество процессов и открытых файлов на один процесс nginx.

В двух словах, мы находим PID с помощью команды «ps aux | grep appname», затем смотрим на файл «limits» этого PID в каталоге /proc/.

Тогда вы будете точно знать, какие значения применяются к этому процессу, чтобы подстроить его производительность.

Заключение

В этом уроке вы научились находить значения ulimit для текущего запущенного процесса и учетной записи пользователя в Linux с помощью встроенной команды ‘ulimit -a’ и файла /proc/${PID}/limits.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий