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%, он использует один виртуальный процессор, а остальные более или менее простаивают).

Другие вопросы по тегам