Я нахожусь в ситуации, когда у веб-сайта будет большое количество веб-пользователей и несколько внутренних веб-мастеров.
Веб-мастера загружают изображения (+ другие задачи с высокой памятью), и это увеличивает выделение памяти дочерним процессам httpd до 100-150 МБ. Чтобы остановить подкачку, я в настоящее время устанавливаю MaxClients в httpd.conf на 20. Однако это снижает максимальное количество одновременных запросов. Будет ли это проблемой, когда сайт заработает?
Какая конфигурация лучшая?
Информация: Drupal 6, PHP 5, Apache 2.2 (Prefork atm)
Я думаю о Worker MPM, двух экземплярах apache или низком MaxRequestsPerChild.
Дело в том, что никто не знает, какая конфигурация лучше всего подходит для вашей собственной установки, но есть несколько рекомендаций, которые вы можете использовать, чтобы ее найти. В книге «Создание масштабируемых веб-сайтов» это довольно подробно рассматривается.
Для начала нужно указать, какой уровень обслуживания приемлем. Например, для размещения 10 одновременных пользователей, при 90-м процентиле время загрузки страницы менее секунды и 99,99% времени безотказной работы.
Затем выполните сравнительный анализ, чтобы выяснить, сколько пользователей вы в настоящее время можете разместить. Если вы не можете достичь своих целей (как указано выше), вам нужна либо оптимизация (отнимает ваше время), либо дополнительное оборудование (отнимает ваши (босса) деньги). Кроме того, знайте, что выгода от оптимизации уменьшается, если вы тратите на нее больше времени. При настройке параметров приложения стремитесь к низко висящим фруктам. Тогда двигайся дальше. В какой-то момент вам понадобится больше / более быстрое оборудование.
С Drupal переход на Pressflow, Varnish, Memcache и APC - это ваша большая оптимизация. Я бы сделал это первым.
Также обратите внимание на свою архитектуру и убедитесь, что она масштабируется. При необходимости вы сможете добавить больше веб-серверов в кластер.
Надеюсь это поможет.