Я ищу способы оптимизировать наш текущий веб-сервер, размещенный внутри компании. Я пытаюсь поставить столько же Соответствующий информация ниже. Пожалуйста, дайте мне знать, если вам потребуется дополнительная информация для оказания помощи.
На сервере работает 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
модуль для мониторинга используемых процессов. Убедитесь, что вы установили правила доступа так, чтобы это было доступно только для внутреннего пользования.