Особые настройки apache + mysql для легковесного сайта
У меня есть небольшой сайт с Joomla и Moodle. Кажется, что оба они очень медленные. Сервер (CentOS выпуск 5.5 (Final)) представляет собой виртуальный выделенный сервер с объемом оперативной памяти около 2 ГБ. Я не ожидаю, что когда-нибудь будет более 10-15 человек одновременно (и если это будет высоким)
Какие настройки я могу изменить в apache, mysql или даже в ОС, чтобы повысить производительность моего сайта?
Меня не беспокоит нехватка ресурсов, если я получу слишком много посетителей.
Если вам нужны более конкретные данные, оставьте комментарий, и я отредактирую вопрос.
Скорость базы данных:
+--------------------+----------------------+------------------+
| Data Base Name | Data Base Size in MB | Free Space in MB |
+--------------------+----------------------+------------------+
| information_schema | 0.00390625 | 0.00000000 |
| joomla | 0.33125496 | 0.07981014 |
| moodle | 7.73092937 | 0.01922131 |
| mysql | 0.52505302 | 0.00000000 |
| phpmyadmin | 0.01499939 | 0.00106049 |
+--------------------+----------------------+------------------+
5 rows in set (0.07 sec)
Apache загружает модули:
core prefork http_core mod_so mod_auth_basic mod_auth_digest mod_authn_file mod_authn_alias mod_authn_anon mod_authn_default mod_authz_host mod_authz_user mod_authz_owner mod_authz_default mod_include mod_log_config mod_env mod_ext_filter mod_mime_magic mod_expires mod_deflate mod_headers mod_setenvif mod_mime mod_status mod_autoindex mod_info mod_negotiation mod_dir mod_alias mod_rewrite mod_cache mod_suexec mod_disk_cache mod_file_cache mod_cgi mod_version mod_php5 mod_ssl
$ cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
#don't use old password format
old_passwords=0
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links=0
#Alwaysuse the better InnoDB
default-storage-engine=InnoDB
innodb_buffer_pool_size=512
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Я ищу конкретные настройки, которые могут изменить скорость сервера.
1 ответ
Mysql всегда нравится RAM. Преобразование (по крайней мере, большинства) таблиц (в joomla & moodle, а не в других) в формат InnoDb и увеличение объема используемой памяти также значительно улучшат скорость. innodb_buffer_pool_size - это конфигурация mysql. Используемый по умолчанию размер составляет всего 8 МБ - если ваша база данных действительно настолько мала (и я, честно говоря, был бы немного удивлен, если бы она вообще использовалась вообще), то предоставление ей даже 16 МБ будет иметь значение, и Скорее всего, я бы просто дал 512MB для innodb_buffer_pool_size в любом случае. Со всем содержимым базы данных в памяти, это выводит диск почти из уравнения.
Установка Xdebug позволит вам определить, какие части сайта работают медленно, функция за функцией, строка за строкой. Webgrind проанализирует вывод Xdebug, чтобы показать вам.
Чтобы узнать больше, вам нужно будет собрать некоторые статистические данные о том, что делает сервер - что-то вроде запуска collified, а затем просмотр создаваемых графиков. Даже если посмотреть на вывод команды top, запуск в командной строке может помочь увидеть, что происходит.