Если php делает запросы к базе, то процессов нужно больше чем ядер. Но
2к это уже много. 50 .. 300 должно быть достаточно.

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

Надо смотреть чем эти php процессы занимаются, раз даже с 2k растет
listen queue.

При съедаемой памяти из рассчёта по 30M на процесс 2k процессов съедят 60G памяти. Если на машине этой памяти нет, то именно из-за количества процессов оно и умирает.

Ну 2000 это действительно бредятина - система будет больше ресурсов тратить на switching, и каждому процессу будет совсем мало времени оставаться.

Ответить