Масштабирование Apache / PHP так же просто, как увеличение числа ядер ЦП?

У меня есть сервер Linux / Debian с процессором Intel i7 с 4 ядрами и 8 потоков. Когда я запускаю свое сверхмощное задание Apache / PHP, оно использует 1 поток, а когда я запускаю параллельные задания Apache / PHP, каждое из них использует свой собственный поток.

Итак, если я хочу быть готовым к высокому трафику, это просто вопрос максимального увеличения количества ядер (путем выбора других процессоров), чтобы иметь возможность обрабатывать больше одновременных заданий, при условии, что у него достаточно памяти и что база данных / файловая система не не создают дополнительных проблем?

Я пробовал запускать 8 и 10 заданий одновременно, и он использовал все потоки, а загрузка ЦП была в основном 100% (но работала безупречно), так что кажется, что теория не полностью ошибочна - но есть ли что-то иначе, что могло бы разрушить это линейное мышление?

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

PS. Apache / PHP использует mod_php с отключенной потоковой безопасностью, поэтому он использует Prefork MPM. Не уверен, что осмелюсь использовать Worker MPM, поскольку я не уверен в безопасности потоков ...

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

1
задан 24 September 2018 в 15:41
2 ответа

Судя по тому, что вы описываете (100% загрузка ЦП), ваше приложение кажется ограниченным ЦП. Таким образом, добавление большего количества ядер ЦП или переход на машину с более быстрыми ядрами, вероятно, улучшат вашу производительность.

Многие облачные провайдеры взимают с вас всего несколько центов в час за аренду мощных виртуальных машин с большим количеством ядер ЦП и большим объемом оперативной памяти. Просто протестируйте на 16 или 32 ядрах, чтобы узнать, как ваша производительность зависит от количества процессоров / ядер.

И да, я рекомендую сначала увеличить количество ядер в вашей системе, прежде чем вы увеличиваете количество системы.

1
ответ дан 3 December 2019 в 20:12

Всегда существует предел масштабируемости, и это может быть любой компонент системы.

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

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

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

1
ответ дан 3 December 2019 в 20:12

Теги

Похожие вопросы