Как то я обещал, что напишу, о том
как настроить на локальном хостинге под Windows связку Apache, PHP и
MySql для получения максимальной производительности.
Многие программисты при разработке и
тестировании сайтов используют локальный персональный компьютер под
управлением OS Windows на котором эмулируют работу реальном
хостинге. Можно самому установить Apache, PHP и MySql на компьютер,
можно воспользоваться готовыми пакетами инсталяций типа Denver, XAMPP и
другие. Настроки по умолчанию установленных пакетов оставляют желать
лучшего и вот почему.
У меня довольно мощные персоналки,
но удивило то, что разность генерации одних и техже страниц на реальном
хостинге при примерно одиноаковой конфигурации железа с локальным
сервером составляет 10-100 раз! Неужели Windods настолько плох для
Apache, PHP и MySql? Но ведь работает же достаточно быстро и эффективно
IIS и ASP на серверах и на локальном сервере у меня на IIS все шустро
шевелится. Оказывается все дело в "кривых руках" так сказать :)
Анализируя проблему и сравнивая
всевозможными методами замеры производительности маркеров в скриптах,
внимательно изучая конфигурационные файлы как серверов Apache и MySql
так и IIS и MS Sql Server, рыская по многочисленным форумам нашел
причины. По умолчанию включенные в дистрибутивы Apache, PHP и
MySql настройки предназначены скорее всего под Linux/Unix платформы.
Отсюда и растут грабли.
Оптимизация Apache 2 и PHP.
При малом количестве файлов участвующих в
генерации страниц практически незаметна разница генерации между Unix и
Windows, однако часто сайты используют всевозможные движки или
библиотеки, а они состоят из сотен, а то и тысяч фалов. Например Joomla
1.5 состоит из более чем 6000 файлов мелкого размера. В основном это
скрипты PHP. На доступ к ним и считывание по мере генерации страницы и
тратится основное время.
Что делать?
Опытным путем было установлено что нужно оптимизировать файловый кеш и кеш памяти. Что меняем?
php.inirealpath_cache_size=16000k (default - 16k) realpath_cache_ttl=1200 (default - 120) |
Это основные настройки
которые существенно влияют на производительность, можно поиграться и
другими, но они уже дают не столь значащий результат и зависят больше от
конкретного случая.
Также рекомендую настроить системный кеш.
Оптимизация MySql.
named-pipe. При использовании именованного канала время подключения составляет менее 0,01 - 0,005 сек,
и при последующих запросах практически стремится к нулю. Но о том как
его использовать и настроить написано очень мало на форумах, я с трудом
нашел на форумах у буржуев, как настроить и как правильно использовать
именованный канал потом при подключении.
Включаем его в конфигурации my.cnf и при обращении из скриптов PHP в данном случае нужно обращаться к серверу локальному как ".". Также рекомендую в php.ini прописать mysql.default_host=".",
чтобы по умолчанию при неуказанном имени сервера в соединении
использовать именованный канал вместо порта tcp/ip.
my.cnf
[mysqld]
enable-named-pipe
|
mysql.default_host = "." |
Это основные настройки
которые существенно влияют на производительность, можно поиграться и
другими, но они уже дают не столь значащий результат и зависят больше от
конкретного случая.
Комментариев нет:
Отправить комментарий