Я установил новый хостинг 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-адресов), который должен позволить вам определить, применяется ли дросселирование за пределами вашего виртуального сервера или проблема связана с вашим сервером.