Регулируем максимальное количество тредов (потоков) в ОС linux

Не так давно столкнулся с проблемой — не мог понять почему сервер зависал. Оказалось — мой приложения на java (jimbot) очень много использовали потоков и им не хватало максимального лимита! Это возникло в ситуации, т.к. сервер очень мощный, а ОС одна…

Максимальное же кол-во потоков в linux стоит 32768. Это число можно увеличить, в своём случае я увеличил до 65536.

Это делается очень просто! В командной стоке прописываем:

sysctl -w kernel.pid_max=65536

и

sysctl -w kernel.msgmni=65536
pid_max — максимальное количество идентификаторов процессов (65536 максимально)
msgmni — максимальное количество идентификаторов очереди сообщений (65536 максимально)

Теперь максимальное кол-во тредов у нас 65536.

УЧТИТЕ! ЧТО ПОСЛЕ ПЕРЕЗАПУСКА СЕРВЕРА ЗНАЧЕНИЕ ВЕРНЁТСЯ ОБРАТНО НА 32768!

Для того, чтобы всегда было значение 65536, то пропишите их в /etc/sysctl.conf.

Ещё некоторые полезные команды:

sysctl -a | grep -E ‘ 3[0-9]{4}$’ — показывает лимиты на треды и прочее.