Итак, мальчики и девочки, сегодня мы с вами поговорим о переходном возрасте… Наверное, вы уже заметили, что в последнее время с вами происходят какие-то непонятные изменения. На вашем сервере запущено уже несколько сайтов, но скорость, с которой они работают вас не очень-то устраивает. Да, вот такие они плоды популярности… И что же делать? Экономить деньги на школьных завтраках, чтобы оплатить более качественный хостинг? Нет, нет и ещё раз нет! Я, как отец подрастающего ребёнка, просто не могу допустить того, чтобы подрастающий организм недополучал питания в период роста и развития. Поэтому, вот вам мои советы по настройке и оптимизации сервера и того, что на нём установлено.
Apache
- Поиграйтесь со значением
MaxClients, чтобы найти баланс между производительностью и мощностью сервера. Можно начать со значения 32. - Не позволяйте серверу писать много в логи:
LogLevel warn - Отключите DNS lookups:
HostNameLookups off - Отдельно стоит сказать о директиве
AllowOverride— она отвечает за то, можно ли переопределять настройки сервера. Грубо говоря, будут или нет работать файлы .htaccess. Если эта директива включена глобально:<Directory /> AllowOverride All </Directory>то в каждой директории сервер будет пытаться искать файл .htaccess, поэтому следует либо отключить эту директиву, либо включить её только для тех директорий, где это необходимо.
- И последнее по настройке Apache. Директива
KeepAliveTimeout. Рекомендую уменьшить её значение до 1–2 секунд.
MySQL
Добавьте или измените следующие опции в my.cnf:
- Отключите bin log
log-bin - Включите и увеличте размер
query_cachequery_cache_limit = 2M # по умолчанию было 1M query_cache_size = 64M # по умолчанию было 0 query_cache_type = 1 - Увеличте
table_cache
table_cache = 256 # по умолчанию было 64 - Увеличте
key_buffer
key_buffer_size = 64M # по умолчанию было 8M - Установите параметр
max_connectionsтак, чтобы он равнялся параметруMaxClientsв настройках Apache
PHP
- Установите eAccelerator и примените к нему следующие настройки:
eaccelerator.shm_size="32" eaccelerator.enable=1 eaccelerator.shm_ttl="1800"
Тестируем конфигурацию
Для тестов мы воспользуемся утилитой ab (Apache Benchmark).
ab -n 1000 -c 100 http://yourserver/
Тем самым сы выполним 1000 запросов к серверу, при том 100 запросов будут выполняться одновременно. В полученных результатах смотрите на строчку Requests per second. Я так же рекомендую запустить тест до начала оптимизации и после, чтобы сравнить результаты.
Успехов и удачи!
И как это сработало при тестировании на Мере?