Apache использует много процессора для небольшого сайта
У меня есть сервер CentOS 5.5 VPS с 512 МБ оперативной памяти.
Существует 1 веб-сайт, размещенный на нем через Apache/PHP/MySQL, который построен в Magento, популярной среде электронной коммерции.
Когда я просматриваю веб-сайт, загрузка и запуск занимает около 10 секунд. top
показывает мне следующее:
Я понимаю, что Magento - это довольно тяжелый программный продукт, который много обрабатывает, но это нелепо для одного сайта.
Он еще не запущен, но меня беспокоит то, когда это происходит, и несколько человек одновременно просматривают домашнюю страницу, это может вызвать проблемы.
Я не серверный парень, поэтому не знаю, что делать с точки зрения конфигурации. 512 МБ ОЗУ должно быть достаточно для запуска этого 1 сайта.
Мой конфиг Apache ниже, любые предложения будут отличными!
Timeout 120
KeepAlive Off
StartServers 2
MinSpareServers 2
MaxSpareServers 7
ServerLimit 25
MaxClients 25
MaxRequestsPerChild 500
4 ответа
Совершенно очевидно, где ваше первое узкое место. Посмотрите на ваш выход TOP, а именно 8,7% ва - вы связаны с вводом / выводом. Итак, что вы думаете об использовании процессора, ваши жесткие диски изо всех сил пытаются обслуживать данные достаточно быстро.
Это очень типично для VPS, где IO является общим ресурсом, поэтому чья-то активность сильно повлияет на вашу производительность.
Magento не большой и медленный и может работать так же хорошо, как и любое другое веб-приложение - но если ваш сервер медленный, то это, безусловно, не поможет.
Прочитайте этот http://s.onas.si/xg4h чтобы получить советы по настройке
Но другие ответы верны, что, хотя у вас по-прежнему может быть быстрое время загрузки страницы с 1 пользователем, вы почти наверняка не получите ни одно число выше этого.
Я написал довольно хороший анализ того, как Magento будет вести себя на VPS, здесь /questions/460187/soobschestvo-magento-hosting-nuzhnyi-sovetyi-kakoj-hosting-budet-rabotat-byistro/460201#460201
Magento - это боров ресурсов. Если у вас не включено все кэширование magento, оно будет медленным на сервере с 5-кратным увеличением этих спецификаций.
Поэтому убедитесь, что вы включили все кэширование.
Кроме того, magento - это проблема с памятью, даже когда включено кэширование, поэтому вам может повезти получить 5 одновременных соединений с 512 мг оперативной памяти.
Я был системным администратором в компании, которая начала с magento, а затем создала собственное решение, потому что дешевле было создать собственную платформу, а затем использовать magento и подбирать оборудование для ее масштабирования.
Ваша конфигурация apache накладывает довольно жесткие ограничения на объем трафика, который будет обрабатывать этот сайт.
Как говорит Майк, Magento очень большой и медленный.
Поскольку httpd использует процессор, я предполагаю, что PHP работает как mod_php. Убедитесь, что вы предоставляете достаточно памяти для запуска PHP, и используйте кэш кода операции. Также убедитесь, что вы делаете все обычные вещи для настройки вашего приложения.
В зависимости от того, как настроены ваши настройки Apache / PHP, это будет PHP-код, который отнимает процессорное время, а не сам Apache (если вы запускаете через modPHP, тогда использование CPU PHP учитывается в Apache, если вам нужен процесс CGI/FastCGI PHP. перечислены отдельно в top
выходной).
Я ничего не знаю о Magento (их маршруты поддержки были бы лучшим местом для обращения за помощью, специфичным для их сценариев), возможно, существует некоторая неверная конфигурация, которая заставляет его пытаться выполнить слишком много работы - дважды проверьте документацию, чтобы увидеть, если это есть какие-либо советы по оптимизации использования процессора.
Может случиться так, что он запускает задачу "каждый раз, сейчас, снова и снова", которая предварительно вычисляет кучу вещей, которые затем кэшируется для последующего использования, и в этом случае проблема может отсутствовать в последующих запросах.
Также может случиться так, что ваш VPS перегружен с точки зрения процессора, так что то, что займет секунду или меньше при выделенном доступе к ядру CPu, может занять 10, потому что ваш VPS борется с другими за использование процессора. Я видел много виртуальных машин, втиснутых в одну двухъядерную машину, что нормально, когда большинство виртуальных машин относительно загружены процессором (что характерно для машин типа web / sql, поскольку они проводят большую часть своего времени в ожидании сетевого или дискового ввода-вывода). вместо того, чтобы делать занятую работу с процессором, но далеко не всегда так).
Вы пытались сравнить производительность копии установки, на которой запущена виртуальная машина на одной из ваших машин? Если он работает там лучше, чем указывает на то, что с вашим VPS что-то не указано, если он медленен на вашей (предположительно в противном случае не загруженной) локальной виртуальной машине, тогда проблема скорее всего связана с скриптами или их конфигурацией. Вы также можете попробовать запустить простой тест производительности ЦП, чтобы увидеть, "медленно ли загружается" виртуальная машина - я предлагаю однопоточный тест с одним процессом, поскольку похоже, что работа Apache занята - это один процесс / поток (общее использование vCPU 10-20% в зависимости от того, что вы считаете, в то время как этот процесс Apache указан с ~80%, он использует один виртуальный процессор, а остальные более или менее простаивают).