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

VPS-хостинг очень медленный. В чем узкое место?

Я установил новый хостинг VPS для запуска веб-сайта Drupal, но он работает очень медленно.

Это Ubuntu 10, Apache, php5.2

Я включил модуль Multi-Processing Module (MPM) и настроил его следующим образом:

StartServers 4 MinSpareServers 2 MaxSpareServers 10 ServerLimit 20 MaxClients 20 MaxRequestsPerChild 200

Но он все еще слишком медленный ... это срез VPS: RAM 256MB BW 150GB

Что может быть причиной ? Спасибо

Обновить (Свопы)

             total       used       free     shared    buffers     cached
Mem:           245        220         24          0          1         26
-/+ buffers/cache:        192         52
Swap:          511        110        401

Убедитесь, что вы не регулярный доступ к области подкачки для что-нибудь - дисковый ввод-вывод является очень распространенным узким местом, особенно на Xen VPS с относительно небольшими выделениями ОЗУ (при условии, что вы работаете в Slicehost, учитывая ваше упоминание об использовании «среза»).

Хотя наличие места подкачки кажется плюсом (особенно потому, что ваш VPS не разбрызгивается и не умирает, когда вы пытаетесь запустить несколько требовательных к памяти приложений, таких как Apache с динамическим содержимым PHP и MySQL), это быстро приведет к некачественной производительности, особенно если вы вы находитесь на хост-узле VPS, где другие делают то же самое.

Редактировать: Я очень рекомендую LowEndBox вики (LowEndBox фокусируется на виртуальных средах с распределением памяти в том же районе, что и ваша собственная), чтобы получить советы по оптимизации, чтобы Apache и MySQL работали бесперебойно в вашей виртуальной среде.

Это почти определенно не проблема конфигурации Apache, но вам нужно профилировать свое приложение, чтобы узнать, на что тратится его время, вместо того, чтобы слепо угадывать, в чем проблема. Xdebug - популярный инструмент для профилирования PHP, и включение журнала медленных запросов MySQL может помочь, если MySQL работает внутри вашего VPS.

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

Сначала попробуйте стандартные настройки mpm:

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

Возможно, вам также стоит взглянуть на это: http://articles.slicehost.com/2010/5/20/configuring-the-apache-mpm-on-debian Вам также следует уменьшить настройки KeepAlive.

А как насчет оперативной памяти? Вы уверены, что у вас достаточно и сервер не меняет местами? (бесплатно -m)

Вы также должны проверить свою базу данных, это относительно просто со сценарием Tuning Primer: http://www.day32.com/MySQL/

Кстати. на сервере с ОЗУ всего 256 МБ я бы посоветовал вам использовать другой веб-сервер, например Lighttpd или Nginx (с PHP-FPM).

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

Убедитесь, что localhost относится к тому же виртуальному хосту, который настроен для внешнего доступа, и попробуйте выполнить некоторые измерения по URL-адресам внутри http: // localhost / (например, браузер через туннель ssh, браузер, работающий на виртуальном сервере, или просто напишите скрипт php для захвата некоторых URL-адресов), который должен позволить вам определить, применяется ли дросселирование за пределами вашего виртуального сервера или проблема связана с вашим сервером.