17.07.2013 14:51, Alex Samorukov написав(ла):

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

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

Я согласен, зависит. Но по моим тестам всё равно даже с мускулем выходило что чем меньше пыха тем лучше. В моём случае динамика отдавалась быстрее если ставить в два раза больше процессов чем ядер, но в сумме получалось хуже так как статика хуже кешировалась.

И про локи кстати не надо. При неправильном обращении локи очень сильно жрут ЦПУ и это было видно по мускулю до версии 5.5. При большой нагрузке за один лок может бороться большое количество тридов, но очереди как таковой не существует. Соответственно когда лок освобождается уведомление об этом получают все потоки, все они пытаются его получить и как результат неплохой такой всплеск активности.

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

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

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

Кстати да, про память сказал а про context switching забыл.

--
Sphinx of black quartz, judge my vow.

Ответить