Назад | Перейти на главную страницу

Nginx и 1000 установок WordPress - Оптимизация

Я пытаюсь создать довольно необычную (imo) конфигурацию, в которой у меня есть:

Кроме того, у меня каждый час вызывается 1000 заданий cron, которые, в свою очередь, вызывают плагин WP (используя wget), который извлекает данные из API и публикует их в соответствующем блоге.

Все это выполняется на виртуальном сервере с 1024 МБ ОЗУ, 4 общими процессорами и т. Д. Сервер не работает, особенно в то время, когда выполняются задания cron. Nginx постоянно выдает 504 ошибки и у сайта значительное отставание.

  1. Я сумасшедший, если установил 1000 отдельных WP? Следует ли мне использовать WP-MU и поможет ли это существенно? (У меня есть определенные ограничения плагинов, которые я предпочитаю устанавливать отдельно, но при необходимости могу переключиться.)

  2. Вместо того, чтобы иметь 1000 уникальных заданий cron - следует ли вызывать, скажем, сценарий bash, который затем будет обрабатывать 1000 запросов HTTP, которые мне нужны? Можно ли это сделать в последовательном порядке вместо последовательного?

  3. Есть ли у вас какие-либо другие предложения по оптимизации? Должен ли я проксировать Apache вместо того, чтобы просто использовать nginx и т. Д. Любые советы были бы признательны.

заранее спасибо

Обновление: большое спасибо за ваш ответ. Я собираюсь перейти на WP-MU и повторно выполнить задания cron. В настоящее время я использую spawn-fcgi, но перейду на php-fpm. Оцените совет

1) 1000 уникальных установок устранят любые преимущества, которые может дать вам кеширование. В идеале вы должны запустить одну установку (которая будет кэшироваться в памяти через APC или аналогичный) с кучей разных баз данных. Однако WP-SuperCache может помочь с проблемами кеширования, поскольку он должен отображать все в статические файлы HTML. По сути, вы хотите удалить как можно больше динамического контента с каждой страницы.

2) Последовательный запуск всех 1000 заданий, вероятно, плохая идея (вы уверены, что 1000 запросов можно выполнить за час?). В то же время параллельное выполнение 1000 заданий - тоже плохая идея (может ли ваш веб-сервер выдержать 1000 запросов в секунду?). Я бы предложил что-нибудь посередине. Возможно, вы запускаете 10 процессов, каждый из которых ведет 100 блогов со случайной задержкой между ними.

3) Если вы можете использовать чистый nginx + php-fastcgi, придерживайтесь его. Apache ничем вам не поможет.

Вы используете php-fastcgi (например, spawn-fcgi) или php-fpm? Я бы предложил php-fpm, так как вы можете настроить его для запуска большего количества процессов, когда нагрузка выше.

Все хорошие советы от devicenull. Я нахожусь в аналогичном положении для клиента, у меня много установок одного и того же программного обеспечения. Xcache (аналог APC) значительно улучшил производительность, но мне пришлось выделить 4 ГБ памяти для кеширования.

С WP-Super-Cache подавляющее большинство ваших веб-запросов должно быть для чистого HTML / изображений, которые работают очень быстро. Вы уверены, что не ваши 1000 cronjobs вызывают общие задержки сайта? Думаю, на казнь у них уйдет почти час!