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

Низкая производительность с веб-сайтом .NET 3.5 на IIS 6, веб-сайт .NET 2.0 работает нормально

Я пытаюсь переместить наши 2 веб-сайта и некоторые связанные приложения с одного виртуального частного сервера на другой. Новый сервер намного мощнее, имеет больше памяти и больше места на диске. Однако один из веб-сайтов плохо работает в новой среде.

Я скопировал конфигурацию с нашего старого сервера, экспортировав настройки IIS и файлы xcopy. Один из веб-сайтов находится на .NET 2.0, и с этим сайтом все в порядке. Однако другой наш сайт (корзина покупок сторонних производителей, использующая .NET 3.5) работает очень медленно, особенно при переходе со страницы корзины покупок на страницу оформления заказа.

Я 2 дня охотился за объяснением этого. За это время я сделал несколько вещей, чтобы посмотреть, смогу ли я хотя бы изменить поведение, но без особого успеха. Вот список того, что я пробовал:

  1. Запуск aspnet_regiis -i -enable и некоторых других опций этого инструмента, таких как -ua
  2. Удаление и повторная установка всех версий .NET
  3. Удаление всех остальных веб-сайтов IIS, кроме рассматриваемого
  4. Удален и вручную добавлен новый узел веб-сайта в IIS
  5. Я вручную просканировал код, чтобы понять, что происходит. На этих двух страницах есть вызов к серверу UPS, которого нет больше нигде в приложении, но я смог подключиться к этому серверу через telnet.
  6. Пропустил руководство по установке приложения, чтобы убедиться, что я не пропустил ни одного шага.
  7. Переустановил сертификат SSL и проверил конфигурацию промежуточного сертификата.
  8. Перезагрузил сервер.
  9. Сравнил ключи реестра, относящиеся к IIS.
  10. XCopied еще одну копию этой версии приложения в каталог (сначала удалив старую) на случай, если оригинал был поврежден.
  11. Перешли к настройкам конфигурации в IIS, включая файл журнала, пулы приложений, SSL и конфигурацию ASP.NET.
  12. Обнаружено, что файл подкачки виртуальной памяти не был настроен. Я попытался настроить один из них, но программа виртуализации (virtuozzo) отключила этот параметр при перезагрузке.

В любом случае, я подумал, что просто выложу это на случай, если что-то упустил. Я провожу тестирование с использованием конфигурации файла hosts, поскольку DNS в настоящее время указывает на старый сервер. Имя хоста необходимо для доступа к сайту. Две конфигурации одного и того же сайта можно сравнить, чередуя эти 2 записи файла hosts:

# New Server (with slowness)
#173.0.131.172  www.foldingchairdepot.com
# Old Server (working fine)
67.215.161.58   www.foldingchairdepot.com

Новый сервер - Windows Server 2003 RC2 Enterprise Edition.

Странно то, что, хотя я наблюдаю медлительность на клиенте, загрузка процессора на сервере практически отсутствует. Я проверил несколькими способами, что определенно достигаю нового сервера с записью файла хоста. Я также пробовал использовать 2 разных интернет-соединения и несколько разных версий браузера.

Мы будем благодарны за любую помощь, чтобы попытаться решить эту проблему.

Проведя еще несколько исследований, я обнаружил, в чем проблема. Оказывается, новый виртуальный частный сервер размещался в другом месте, чем старый. Само по себе это не было проблемой, но база данных все еще находилась в старом месте на расстоянии 1200 миль.

В любом случае, решение моей проблемы - переместить базу данных в тот же объект (и локальную сеть), что и VPS, и я сейчас этим занимаюсь.

Ты определенно сделал домашнее задание. Это и хорошо, и плохо. Это означает, что вы предоставили отличную информацию, но не оставляет никаких легких предложений. ;)

Некоторые предложения:

  1. Я заметил, что домашняя страница «большую часть времени» не работает на старом сайте, и я заметил, что даже некоторые изображения не работают. Например, это изображение. Возможно, это причина сбоя. Если вы можете выяснить, почему файл .gif не работает, это может привести к ответам на остальные вопросы.

  2. Проверьте журналы IIS на наличие подсказок. Если вы еще этого не сделали, вы можете изменить настройки журнала, чтобы включить затраченное время. Это пригодится, как и код состояния. Сравните посещение хорошего сервера с новым сервером и посмотрите, отличаются ли они. Любые отличия будут хорошими лидами.

  3. Ознакомьтесь с Event Viewer и Process Monitor (www.systeminternals.com). Procmon удобен для отслеживания проблем с отказом в доступе.

  4. Попробуйте сравнить статический сайт (несколько HTML-страниц) между серверами, затем простой сайт .asp и, наконец, простой сайт .aspx. Посмотрите, сможете ли вы сузить область, в которой производительность отличается.