Меня очень беспокоит проблема с производительностью, с которой я сталкиваюсь на одном из наших производственных серверов. Я работаю в хостинговой компании, поэтому вы можете себе представить, насколько разнородны работающие здесь приложения.
Все началось с звонка клиента, который пожаловался на скорость загрузки Joomla. Устанавливается IIS6 (Windows 2003) с PHP5 и FAST CGI, которые обычно работают довольно хорошо. Я проверил время загрузки, и он действительно оказался прав. 7 или 8 секунд для загрузки, когда обычно это можно сделать за 2.
Увидев эти результаты, я начал сначала проверять процессор и оперативную память. Всегда нормально, 2 ГБ ОЗУ свободно, 3% -8% активности процессора. Это то, что я называю расслабленным сервером;). К сожалению, копнув немного глубже, я обнаружил, что счетчики PhysicalDisk довольно высоки (выше 10), особенно очереди чтения.
Я использовал Process Explorer, чтобы увидеть, какой из этих процессов имеет более высокие дельты, но все казалось нормальным. Поскольку проблема связана с PHP-страницами, я проверил определенные счетчики IIS, такие как «Фактические соединения», «Количество требований CGI» и «Количество требований ISAPI».
CGI -> 3 to 7
ISAPI -> 5 to 9
Connections-> 90 to 120 (wich appears at the top of the graph)
Больше, чем решение (я знаю, что это трудно найти), я хотел бы знать, есть ли у вас конкретная методология для решения таких проблем.
Если бы это был Linux / Unix, я мог бы дать вам огромный список, но для MSWindows ....?
7-8 секунд - это время, необходимое для получения HTML-кода или всей страницы? Есть много инструментов, которые помогут это выяснить - я использую Firefox + firebug + pagespeed. Это также должно дать вам много информации о том, в чем заключаются проблемы.
Если проблема действительно заключается в чтении PHP-кода с диска, убедитесь, что у вас достаточно памяти для кеширования и что сервер настроен для поддержки служб. Использовать APC.
Вы храните контент и журналы на одном диске? Если да, можете ли вы их разделить? В идеале PHP-код и данные тоже должны быть разделены.
HTH