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

Оптимизировать производительность Apache

Я ищу способы оптимизировать наш текущий веб-сервер, размещенный внутри компании. Я пытаюсь поставить столько же Соответствующий информация ниже. Пожалуйста, дайте мне знать, если вам потребуется дополнительная информация для оказания помощи.

На сервере работает 1 единый веб-сайт, который представляет собой платформу для онлайн-заказа пиццы, основанную на Zend Framework (версия 1). Статистика трафика за последний месяц составляет примерно 6.000 загрузок страниц в день, в основном во время обеда. В этот период пиковая нагрузка составляет около 1500 нагрузок в час.

Недавно мы перешли с линии aDSL 2/2 Мбит на оптоволокно 100/100 Мбит, и у нас все еще есть проблемы с производительностью во время обеда. Мы предположили, что проблема в 2 Мбит. Веб-сайт работает довольно быстро в периоды низкой загрузки.

Оборудование

CPU: Intel(R) Xeon(R) CPU            5160  @ 3.00GHz (3000.13-MHz K8-class CPU)

Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)

Filesystem   Type     Size    Used   Avail Capacity  Mounted on
/dev/ad7s1a  ufs      4.8G    768M    3.7G    17%    /
devfs        devfs    1.0K    1.0K      0B   100%    /dev
/dev/ad7s1g  ufs      176G    5.2G    157G     3%    /home
/dev/ad7s1e  ufs      4.8G    2.8M    4.5G     0%    /tmp
/dev/ad7s1f  ufs       19G    3.5G     14G    19%    /usr
/dev/ad7s1d  ufs      4.8G    550M    3.9G    12%    /var

ОС сервера

FreeBSD 8.2-RELEASE

Программное обеспечение

apache-2.2.17
php5-5.3.8
mysql-server-5.5

Следы Apache (пример взят из # сверху)

31140 www              1  45    0   377M 41588K lockf   2   0:00  0.00% httpd
31122 www              1  44    0   375M 35416K lockf   2   0:00  0.00% httpd
31109 www              1  44    0   375M 38188K lockf   2   0:00  0.00% httpd
31113 www              1  44    0   375M 35188K lockf   2   0:00  0.00% httpd

Apache использует предварительную версию MPM, APC (альтернативный кэш PHP). Модуль SSL загружен, но не используется (так как на самом деле не работает, поэтому не используется). Есть файл, содержащий настройки для модулей MPM, но, как я вижу, он не включен в файл httpd.conf, строка включения закомментирована. Таким образом, я бы предположил, что MPM prefork также работает со значениями по умолчанию.

Вот некоторые другие найденные мной значения конфигурации Apache, которые включены в https.conf

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

UseCanonicalName Off
HostnameLookups Off

Загружать при проблемах с производительностью

Примечание: запросы API к бэкэнду

Что касается нашей онлайн-платформы, она взаимодействует с нашей серверной системой через API (GET / POST). Для котировок цен на корзины (кешируются до добавления нового элемента), продуктов (кешируются), цен на товары (кешируются). А backend-сервер действительно показывает реальную нагрузку, когда видит проблемы с производительностью в сети. Так что я больше стремлюсь к тому, чтобы запросы API выполнялись бесконечно, задерживая клиентов на веб-сервере. Итак, мой вопрос: это статистика, приведенная выше (трафик / нагрузка), и текущая конфигурация программного обеспечения. По сравнению со спецификациями подключения к Интернету и оборудования, являются ли это признаками перегруженного сервера? И смогу ли я увеличить максимальное количество клиентов на веб-сервере, исходя из доступных ресурсов и фактического размера Apache?

Производительность веб-сайта - важная тема. Насколько я понимаю, проблема, скорее всего, не в Apache.

Однако есть несколько вещей, которые могут помочь вам улучшить вашу производительность.

  • Кеширование! Я не знаю, сколько вы кешируете в своем PHP-коде. Но поскольку вы не используете SSL, и я думаю, у вас много данных только для чтения, попробуйте Лак

  • включить mod_expires

  • Профилируйте свой веб-сайт / серверный API с помощью JMeter

Производительность Apache можно настроить с помощью параметров Worker MPM и Prefork, изменение keepalive и максимального количества резервных потоков может помочь в увеличении производительности и потреблении меньшего объема памяти. Вы можете найти оптимальные настройки для Prefork и worker из Вот

Нет, вышеперечисленное не является признаком перегруженного сервера.

Хотя вы можете испытывать перегрузку сетевого ввода-вывода (поскольку вы не предоставляете фактических данных о нем), это крайне маловероятно, поскольку в часы пик возникает очень мало фактических запросов.

Вам нужно запустить несколько тестов на сервере HTTP, чтобы убедиться, что он работает на максимальной мощности. Если это так, то вам нужно ЭТО исправить.

Для дальнейшего использования вам следует настроить и использовать Статус сервера обработчик для мониторинга apache, как описано здесь: http://httpd.apache.org/docs/2.2/mod/mod_status.html

У вас могут закончиться процессы (определенные MaxSpareServers и StartServers). По умолчанию это всего 10, поэтому, если у вас большое время ответа, этого может быть недостаточно для одного запроса каждые 2 секунды (1500 / час).

Включите server-status модуль для мониторинга используемых процессов. Убедитесь, что вы установили правила доступа так, чтобы это было доступно только для внутреннего пользования.