w3wp.exe имеет высокую загрузку процессора при каждом запросе - PullRequest
4 голосов
/ 26 октября 2010

Я использую сервер Windows 2008 (VPS с 1 ГБ ОЗУ) с установленным SQL Server Express и IIS 7. На нем я размещаю веб-сайт NopCommerce 1.7 с базой данных около 26 000 продуктов.

Сейчас я единственный пользователь сайта (он находится в разработке), и у меня довольно плохая производительность. Чтобы быть более точным каждый раз, когда я делаю запрос, рабочий процесс уходит на 90-100% загрузки процессора в течение нескольких секунд. Это я или это много для однопользовательского сайта NopCommerce? Любые идеи, почему это происходит и что я могу сделать, чтобы исправить это или продолжить расследование?

PS: рабочий процесс использует от 100 до 400 МБ памяти (частный рабочий набор), а SQL Server с этой базой данных - около 160 МБ. Есть ли у вас какие-либо предложения, кроме очевидного, чтобы получить больше оперативной памяти? Я намерен получить еще один ГБ, но боюсь, что это не решит проблему использования процессора.

1 Ответ

5 голосов
/ 26 октября 2010

Вы уже заявили, что получите больше оперативной памяти, но не удивляйтесь, насколько нехватка оперативной памяти может повлиять на процессор.Если ваша ОЗУ не в состоянии эффективно удерживать большие объекты из-за недостатка места (и я бы сказал, что используется 40% доступной ОЗУ), тогда ЦП должен работать усерднее, чтобы перемещать объекты в виртуальную память и из нее.90% - это немного излишне, но с указанными вами характеристиками сервера это не невозможно.

Скорее всего, проблема в том, что в вашем коде есть дыра.Я предполагаю, что у вас либо бесконечный цикл, либо прямая утечка памяти (ресурсы открываются во время запросов, которые, возможно, не закрыты?).Лучше всего было бы получить средство диагностики отладки IIS , установить его и настроить отчеты, чтобы узнать, что происходит непосредственно на сервере.

...