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

Apache использует много ЦП для небольшого сайта

У меня есть сервер CentOS 5.5 VPS с настройкой RAM 512 МБ.

На нем размещен 1 веб-сайт через Apache / PHP / MySQL, созданный на Magento, популярной платформе электронной коммерции.

Когда я просматриваю веб-сайт, загрузка и запуск занимает около 10 секунд. top показывает мне следующее:

Я понимаю, что Magento - относительно тяжелая программа, которая выполняет много обработки, но для одного веб-сайта это просто смешно.

Он еще не запущен, но меня беспокоит то, что когда он появится и несколько человек будут просматривать домашнюю страницу одновременно, это может вызвать проблемы.

Я не специалист по серверу, поэтому не знаю, что делать с настройкой. 512 МБ ОЗУ должно быть достаточно для запуска этого веб-сайта.

Моя конфигурация Apache ниже, любые предложения будут отличными!

Timeout 120
KeepAlive Off
StartServers       2
MinSpareServers    2
MaxSpareServers    7
ServerLimit       25
MaxClients        25
MaxRequestsPerChild  500

Magento - ресурсоемкая компания. Если у вас не включено все кеширование Magento, он будет медленным на сервере с 5-кратными этими характеристиками.

Поэтому убедитесь, что вы включили все кеширование.

Также magento потребляет много памяти, даже когда кеширование включено, поэтому вам может повезти получить 5 одновременных соединений с 512 мегабайтами оперативной памяти.

Я был системным администратором в компании, которая начинала с Magento, а затем создала собственное решение, потому что было дешевле создать собственную платформу, а затем использовать Magento и использовать оборудование для масштабирования.

В зависимости от того, как устроена ваша установка Apache / PHP, это будет PHP-код, который занимает процессорное время, а не сам Apache (если вы запускаете через modPHP, тогда использование CPU PHP засчитывается в Apache, если вы хотите, чтобы процесс PHP CGI / FastCGI был перечислено отдельно в topвывод).

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

Может случиться так, что он выполняет повторяющуюся один раз задачу, которая предварительно рассчитывает кучу материала, которую затем кэширует для дальнейшего использования, и в этом случае проблема может отсутствовать в последующих запросах.

Также может быть, что ваш VPS перегружен с точки зрения ЦП, поэтому то, что займет секунду или меньше при выделенном доступе к ядру CPu, может занять 10, потому что ваш VPS борется с другими за использование ЦП. Я видел много виртуальных машин, загруженных на одну двухъядерную машину, что нормально, когда большинство виртуальных машин относительно простаивают по процессору (что характерно для компьютеров web / sql, поскольку они проводят большую часть своего времени в ожидании сетевого или дискового ввода-вывода. вместо того, чтобы заниматься занятой работой с процессором, но далеко не всегда так).

Вы пытались сравнить производительность на копии установки, запускающей виртуальную машину на одной из ваших машин? Если он работает хорошо там, то это означает, что что-то не определено с вашим VPS, если он работает медленно на вашей (предположительно, в противном случае выгруженной) локальной виртуальной машине, тогда проблема, скорее всего, связана с сценариями или их конфигурацией. Вы также можете попробовать запустить простой тест ЦП, чтобы увидеть, не работает ли виртуальная машина «медленно». Я предлагаю однопоточный однопоточный тест, поскольку похоже, что все, что держит Apache занятым, - это один процесс / поток (общее использование vCPU 10-20% в зависимости от того, что вы считаете, в то время как этот процесс Apache указан на уровне ~ 80%, подразумевается, что он использует один виртуальный процессор, а остальные более или менее простаивают).

Достаточно очевидно, где находится ваше первое узкое место. Посмотрите на свой ТОП-результат, в частности 8,7% ва - вы привязаны к вводу / выводу. Итак, что вы думаете, это загрузка процессора, ваши жесткие диски изо всех сил пытаются обрабатывать данные достаточно быстро.

Это чрезвычайно типично для VPS, где ввод-вывод является общим ресурсом, поэтому чья-то активность серьезно повлияет на вашу производительность.

Magento не большой и медленный и может работать так же хорошо, как и любое другое веб-приложение, но если ваш сервер медленный, то это точно не поможет.

Прочтите это http://s.onas.si/xg4h для некоторых советов по конфигурации

Но другие ответы верны: хотя у вас все еще может быть быстрое время загрузки страницы с 1 пользователем, вы почти наверняка не будете с любым числом выше этого.

Я написал довольно хорошее описание того, как Magento будет вести себя на VPS здесь. https://serverfault.com/a/367861/113375

Ваша конфигурация apache накладывает довольно жесткие ограничения на объем трафика, который будет обрабатывать этот сайт.

Как говорит Майк, Magento очень большой и медленный.

Поскольку httpd использует процессор, я предполагаю, что PHP работает как mod_php. Убедитесь, что у вас достаточно памяти для запуска PHP, и используйте кеш-код операции. Также убедитесь, что вы делаете все обычные вещи для настройки своего приложения.