У меня есть управляемый VPS, работающий в стандарте CloudLinux 6.6 x86_64.
У него есть несколько веб-сайтов с MySQL, PHP и Apache, работающих с CPanel.
Я работаю над системой PHP, которая должна управлять PID и определять его статус.
Я определил smallint
поле (2 байта) в моей базе данных MySQL для хранения PID.
Но сегодня я заметил кое-что странное:
Служба «действовала» и говорила, что процесс не запущен, хотя на самом деле задача завершилась.
Я посмотрел, и там были процессы с PID до 997282 (пока самый высокий).
Я попытался просмотреть это в Google и ничего это мне помогает.
Я нашел информацию только о файле /proc/sys/kernel/pid_max
который я использовал, чтобы прочитать его и получить оттуда максимальный PID, который 1048576
.
Это нормально, если PID больше 65535?
Вид несвязанного: сервер кричит о перезагрузке, когда PID превышает 10000?
Любую дополнительную информацию, которая может вам понадобиться, я готов предоставить до определенного момента, когда секрет не будет раскрыт.
PID утилизируются. Когда процесс завершает работу, его PID может быть использован позже другим процессом, поэтому вы не «исчерпаете» или вам не потребуется перезагрузка просто потому, что существует PID, близкий к максимальному значению. Но см. Ниже ...
Я не изменяю этот параметр sysctl без необходимости; например работа в загруженной системе с множеством короткоживущих процессов или в многопоточном приложении с долго выполняющимися процессами.
Обычно я устанавливаю 99999 или в некоторые случаи, 999999 ...
В одном примечательном случае у меня был сервер базы данных, на котором закончились идентификаторы процессов. Идентификаторы PID были исчерпаны в среднем 9 000–10 000 одновременных подключений к базе данных. Каждый породил несколько потоков, достигнув предела 32 768, настроенного в ОС. Это повысило среднюю загрузку системы из-за большой очереди выполнения.
Повышение максимального значения ПИД снижает давление.
Редактировать:
Если это VPS, я думаю, что у хоста будет высокое значение pid_max, потому что идентификаторы PID используются совместно гостями в системе. Вероятно, чтобы обеспечить запас.
Теоретическое максимальное число pid для 32-битных систем составляет 32768, а для 64-битных систем - 4194304. Вы можете определить другое ограничение, которое ниже этих чисел, в файле, который вы упомянули в своем вопросе (/proc/sys/kernel/pid_max
).
Если pid_max
достигается (запущенными процессами), система не позволяет создавать новые процессы до тех пор, пока существующие не выйдут и не будут очищены. Так что у вас нет проблем, если в вашей системе нет 1048576 Бег процессы.