Я поддерживаю пользовательское CMS-подобное приложение.
Всякий раз, когда документ отправляется, выполняется несколько задач, которые можно грубо сгруппировать по следующим категориям:
- Запросы MySQL.
- Анализ HTML-содержимого.
- Обновление индекса поиска.
Категория 1 включает обновления различных таблиц MySQL, относящихся к содержимому документа.
В категорию 2 входит анализ содержимого HTML, хранящегося в полях MySQL LONGTEXT, для выполнения некоторых автоматических преобразований тегов привязки. Я подозреваю, что в этой задаче проводится большое количество вычислений.
В категорию 3 включены обновления простого индекса поиска на основе MySQL, используя только несколько полей, соответствующих документу.
Все эти задачи должны быть завершены для того, чтобы представление документа считалось завершенным.
Аппарат, на котором размещено это приложение, имеет два четырехъядерных процессора Xeon (всего 8 ядер). Однако всякий раз, когда документ отправляется, весь исполняемый PHP-код ограничивается одним процессом, выполняющимся на одном из ядер.
Мой вопрос:
Какие схемы, если таковые имеются, вы использовали для разделения нагрузки на обработку веб-приложений PHP/MySQL между несколькими ядрами ЦП? Мое идеальное решение в основном порождало несколько процессов, позволяло им выполнять параллельно на нескольких ядрах, а затем блокировать до тех пор, пока все процессы не будут выполнены.
Похожие вопросы:
Каков ваш любимый инструмент профилирования производительности PHP?