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

Проблема с производительностью на drupal

Я запускаю веб-сайт drupal 7 на сервере Linux (с 4 ядрами и 12 ГБ ОЗУ) с LEMP (nginx + php5-fpm + mysql). В установке drupal включено большое количество модулей (все из которых необходимы). Я также использую apc + boost + memcache + authcache для кеширования. Кеширование, похоже, работает (я вижу, что страницы обслуживаются из кеша), и у сайта приемлемое время отклика. Я провел стресс-тесты с веб-сайтом, работающим по URL-адресу, например www-1.example.com. (www-1.example.com указывает на IP-адрес моего веб-сервера, скажем, xxxx), и результаты в порядке (до 100 одновременных пользователей) Проблема начинается, когда я меняю DNS, так что www.example.com также указывает к xxxx Затем процессор моего веб-сервера (все 4 ядра) за короткое время достигает 100%. Я безуспешно экспериментировал со следующими параметрами в файле www.conf:

Конфигурация 1:

pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 200

Результат: 100% использование процессора, низкое использование памяти

Окончательная конфигурация:

pm.max_children = 300
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 20
pm.max_requests = 200

Результат: низкое использование процессора, 100% использование памяти

Может ли кто-нибудь помочь мне найти оптимальную конфигурацию или понять, что может привести к 100% загрузке процессора? Как рассчитать максимальное количество одновременных использований, которые могут выполняться без проблем, на основе параметров сервера?

Использование процессора в классической виртуальной машине lemp иногда вызвано тем, что php ожидает, пока mysql разработает скрипт, вставки и запросы. Кроме того, типичная cms, такая как Magento, дочерний элемент php fpm может съесть до 300 МБ оперативной памяти, поэтому 100 дочерних элементов или 300 приведут к вялой и замене виртуальной машины.

Сначала вы должны уменьшить (на мой взгляд, максимум 20/25 дочерних элементов php) потомков, а затем связать вызовы php mysql и запрос профиля, требующий много времени для выполнения. 80% проблем там ...