Назад | Перейти на главную страницу

Шаги по оптимизации сервера IIS для PHP

Я унаследовал очень медленный сайт PHP, работающий на IIS, и я пытаюсь максимизировать его производительность. Проблема заключается во времени до первого байта (TTFB) с TTFB 1500 мс для почти пустой страницы и в среднем 2500 мс TTFB на большинстве страниц. Время запросов к базе данных (база данных размещена на другом сервере) приемлемо, а скорость подключения / загрузки составляет не более десятков мс; скорость обработки PHP кажется единственной проблемой, он использует почти 100% одного ядра двухъядерного процессора сервера для обслуживания одностраничный запрос.

В настоящее время он работает под управлением IIS 6.0, PHP 5.2.5 и Cake PHP 1.2, и я работаю над его обновлением до IIS 7.0, PHP 5.3.6 и Cake 1.3.10, а также устанавливаю компонент кэширования PHP после того, как я получу Версия PHP обновлена. PHPinfo () показывает "серверный API" как ISAPI, у нас установлен Fast CGI, предпочтительнее Fast CGI, верно?

Есть ли еще какие-то шаги, которые я должен выполнить, чтобы убедиться, что сервер работает оптимально для PHP? Я хочу убедиться, что получаю максимальную отдачу от сервера, прежде чем я попытаюсь запустить Apache вместе с IIS, чтобы вместо этого запустить мой сайт PHP (на производственном сервере есть другие сайты, находящиеся на том же сервере).

Вы почти наверняка получите больше отдачи от отката кода; немного легкого профилирования и оптимизации от кого-то, кто знает, что он делает, должно получить какой-то контроль (1500 мс полного ядра - это много циклов процессора). Только после того, как вы поймете, насколько плох код, вы можете начать смотреть на сервер - гораздо меньше мест, где вы можете испортить это (до уровня, когда требуется 1,5 секунды процессорного времени для создания чего-либо. все равно полезно - это смешно).

Вы можете попробовать использовать Фалангер. Это компилятор PHP для .Net, и, поскольку вы используете сервер Windows с IIS, это кажется лучшим вариантом, так как он увеличит производительность приложения PHP.

Как говорили другие, основная проблема заключается в неэффективности того, как было построено приложение, поэтому, если вы можете это исправить, сделайте это.

Как только это решено, я заметил заметное увеличение производительности после перехода на IIS 7 с FastCGI и небезопасным для потоков PHP 5.3. Я думаю, что основная часть улучшений связана с FastCGI и NTS PHP 5.3, что вполне возможно и легко сделать в IIS 6.

Для меня это сократило время обработки страницы примерно на 40%.