Максимальное количество процессов linux

Русские Блоги

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

Во-вторых, ограничения ресурсов Linux

1. Ограничения пользовательских ресурсов

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

Конфигурацию ограничений ресурсов можно настроить в файле подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/. Система сначала загружает limits.conf, а затем загружает каталог limits.d в алфавитном порядке. После загрузки файла конфигурации он перезапишет предыдущую конфигурацию. Формат конфигурации следующий:

soft — значение предупреждения, hard — максимальное значение, * означает соответствие всем пользователям

* soft nofile 65535 * hard nofile 65535 * soft nproc 10000 * hard nproc 10000 * soft core 20000 * hard core 20000

Просмотр ограничений пользовательских ресурсов для входа в текущую оболочку

[[email protected] ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7424 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited открытые файлы (-n) 1024 Максимальное количество дескрипторов, которые может открыть процесс pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited макс. пользовательские процессы (-u) 1024 Максимальное количество процессов (включая потоки), которые текущий пользователь может открыть virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

2. ограничение ресурса обслуживания

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

Читайте также:  Переименовать директорию linux терминал

Поскольку в системе CentOS 7 / RHEL 7 вместо предыдущего SysV используется Systemd, область конфигурации файла /etc/security/limits.conf сокращается. Конфигурация в limits.conf применима только для аутентификации PAM. Ограничение ресурсов вошедшего в систему пользователя, оно не влияет на ограничение ресурсов службы systemd.

Его нужно настроить с помощью файлов /etc/systemd/system.conf и /etc/systemd/user.conf. Точно так же все файлы .conf в двух соответствующих каталогах /etc/systemd/system.conf.d/* .conf и /etc/systemd/user.conf.d/*.conf.

Среди них system.conf используется экземплярами системы, а user.conf — экземплярами пользователей. Для общих служб используйте конфигурацию в system.conf. Конфигурация в system.conf.d / *. Conf переопределит system.conf.

Формат конфигурации следующий:

= Тип ресурса слева, размер справа

vi /etc/systemd/system.conf . [Manager] #LogLevel=info #LogTarget=journal-or-kmsg #LogColor=yes #LogLocation=no #DumpCore=yes #CrashShell=no #ShowStatus=yes #CrashChVT=1 #CtrlAltDelBurstAction=reboot-force #CPUAffinity=1 2 . 

Просмотр лимита ресурсов службы

Например, проверьте влияние конфигурации службы nginx:

$ cat /proc/$(cat /run/nginx.pid)/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 unlimited unlimited bytes Max resident set unlimited unlimited bytes Max processes 100000 100000 processes Max open files 100000 100000 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 1030606 1030606 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us

3. Лимит системных ресурсов

Для пользователя и службы ранее были выделены ресурсы, но каково общее количество ресурсов в системе? Сюда входят параметры ядра. Существует много параметров ядра. Нам нужно только знать, как изменить наиболее часто используемые, такие как количество процессов и количество дескрипторов.

Три, количество процессов ограничено

1. Ограничьте количество пользовательских процессов.

По умолчанию в /etc/security/limits.d/ есть файл подконфигурации 20-nproc.conf, который используется для установки максимального количества процессов для каждого пользователя.

Проверка /etc/security/limits.d/20-nproc.conf обнаружит, что пользователь root по умолчанию не ограничен, а максимальное количество обычных пользовательских процессов составляет 4096

Фактически, root и обычные пользователи по умолчанию используют значение # cat / proc / sys / kernel / threads-max / 2, что составляет половину количества системных потоков.

[[email protected] ~]# cat /etc/security/limits.d/20-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 4096 root soft nproc unlimited 

Установите максимальное количество процессов на пользователя

vim /etc/security/limits.d/20-nproc.conf $ cat /etc/security/limits.d/90-nproc.conf # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. # Для всех пользователей установите максимальное количество процессов, которые могут быть открыты, равным 4096 (жестко), а значение предупреждения - 2048 (мягкое); ulimit - мягкий размер * soft nproc 2048 * hard nproc 4096 Ограничьте максимальное количество процессов, которые может открыть пользователь root, до 65535 root soft nproc 65535 root hard nproc 65535

Примечание. Изменение файла конфигурации не повлияет на ограничение процесса для текущего пользователя, вошедшего в систему.

Читайте также:  Rs linux recovery portable

2. Лимит процесса обслуживания

[[email protected] ~]# vi /etc/systemd/system.conf # Измените следующие параметры DefaultLimitNPROC=65535 # Сделайте конфигурацию эффективной systemctl daemon-reload # Если количество дескрипторов определенной службы достигло исходного предела, ее также необходимо перезапустить; systemctl restart nginx.service

Примечание: изменение файла конфигурации не изменит ограничение на количество процессов запущенной в данный момент службы, и ее необходимо перезапустить.

3. Общее количество процессов в системе.

Выше мы установили максимальное количество процессов, которые может открыть каждый пользователь, но это не контролирует общее количество процессов в системе (kernel.pid_max). Предполагая, что kernel.pid_max = 1000, максимальное количество пользовательских процессов пользователя, независимо от того, насколько велико заданное значение, Максимальное количество процессов, которые можно открыть, по-прежнему составляет 1000

Просмотрите глобальный метод pid_max:

# sysctl kernel.pid_max kernel.pid_max = 32768

Временно измените этот метод значения:

echo 65535 > /proc/sys/kernel/pid_max

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

Вышеуказанное действует только временно, оно будет недействительным после перезапуска машины, постоянный эффективный метод:

Добавьте kernel.pid_max = 65535 в /etc/sysctl.conf

# vim /etc/sysctl.conf kernel.pid_max = 65535
echo "kernel.pid_max = 65535" >> /etc/sysctl.conf

Затем перезапустите машину.

В-четвертых, ограничение количества ручек

1. Ограничьте количество пользовательских дескрипторов

Лимит пользователя для входа, как упоминалось выше, можно настроить с помощью файла подконфигурации в /etc/security/limits.conf или /etc/security/limits.d/ следующим образом:

vi /etc/security/limits.conf # /etc/security/limits.conf # Этот файл влияет только на пользователей, которые входят в систему через PAM, и не влияет на ограничения ресурсов системных служб. #This file sets the resource limits for the users logged in via PAM. #It does not affect resource limits of the system services. . #    # #* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student - maxlogins 4 # Ограничьте максимальное количество дескрипторов, которые могут быть открыты одним процессом, до 65535 (по умолчанию 1024) # soft - размер предупреждения, hard - максимальное число * soft nofile 65535 * hard nofile 65535 # End of file

Примечание: изменение файла конфигурации не повлияет на ограничение дескриптора текущего пользователя, вошедшего в систему.

Читайте также:  Linux console test internet speed

2. Предел обработки обслуживания

# Изменить ограничение на дескриптор службы sed -i "s/#DefaultLimitNOFILE=/DefaultLimitNOFILE=655350/g" /etc/systemd/system.conf # Сделайте конфигурацию эффективной sudo systemctl daemon-reload # Если количество дескрипторов определенной службы достигло исходного предела, ее также необходимо перезапустить; sudo systemctl restart nginx.service

Примечание. Изменение файла конфигурации не приведет к изменению ограничения дескриптора запущенной в данный момент службы.

3. Общее количество системных дескрипторов.

Количество процессов, которые могут быть открыты каждым пользователем, и количество дескрипторов, которые могут быть открыты каждым процессом, указаны выше; есть также файл, который устанавливает общее количество дескрипторов, которые могут быть открыты всеми процессами в системе, то есть этот параметр является системным.

Измените максимальное количество системных дескрипторов, метод следующий (действителен после настройки):

echo 6553560 > /proc/sys/fs/file-max

Просмотрите общее количество дескрипторов, используемых в настоящее время в системе:

[[email protected] security]# cat /proc/sys/fs/file-nr 1408 0 95852 // 1408 - используемое число, 95852 - общее

Источник

максимальное количество процессов

Какое максимальное количество процессов в linux? и что будет если пытаться создать процесс, когда достигнут максимум?

PID в линуксе имеет тип int (4 байта для 32-битных, 8 байт для 64-битных) с соответствующим максимальным значением. Что будет, когда достигнут максимум, не знаю.

Psych218 ★★★★★ ( 18.05.15 17:00:06 MSK )
Последнее исправление: Psych218 18.05.15 17:02:16 MSK (всего исправлений: 1)

Смотря по какому курсу считать. А вы с какой целью интересуетесь?

Может форк-бомбу хочет запилить?

Какое максимальное количество процессов в linux?

$ cat /proc/sys/kernel/pid_max 32768 

Но это настраивается, можно сделать больший лимит.

что будет если пытаться создать процесс, когда достигнут максимум?

Счётчик завернётся и начнёт сначала, выбрав свободный номер. Если все номера будут заняты, вангую, что не даст создать процесс. Поэтому есть смысл задать лимит на количество процессов для юзера. Например в генте

no-such-file ★★★★★ ( 18.05.15 17:33:33 MSK )
Последнее исправление: no-such-file 18.05.15 17:36:29 MSK (всего исправлений: 2)

Источник

Оцените статью
Adblock
detector