У меня есть небольшой сайт с Joomla и Moodle. Кажется, что оба они очень медленные. Сервер (CentOS release 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 всегда любит оперативную память. Преобразование (по крайней мере, большинства) таблиц (в Joomla и Moodle, но не в других) в формат InnoDb и увеличение используемой памяти также значительно повысит скорость. innodb_buffer_pool_size — это конфигурация MySQL. Размер используемой памяти по умолчанию составляет всего 8 МБ — если ваша база данных действительно такая маленькая (и я бы, честно говоря, немного удивился, если бы она вообще использовалась), то даже 16 МБ имели бы значение, и, скорее всего, я бы просто дал 512 МБ для innodb_buffer_pool_size в любом случае. Со всем содержимым базы данных в памяти диск практически исключается из уравнения.
УстановкаXdebugпозволит вам узнать, какие части сайта работают медленно, функция за функцией, строка за строкой. Вебгриндпроанализирует вывод Xdebug и покажет вам.
Чтобы узнать больше, вам нужно будет собрать некоторую статистику о том, что делает сервер - что-то вроде запуска collcted, а затем просмотреть графики, которые производятся. Даже просто просмотр вывода 'top', запуск в командной строке может очень помочь увидеть, что происходит.