Сайт ASP.NET иногда зависает и / или показывает нечетный текст вверху страницы во время загрузки на серверах с балансировкой нагрузки - PullRequest
5 голосов
/ 06 апреля 2010

У меня есть несколько серверов (dev, 2 x test, 2 x prod), работающих на одном сайте asp.net.

Серверы test и prod находятся в сбалансированных парах (prod1 с prod2 и test1 с test2).

Пара тестовых серверов демонстрирует некоторое (супер) замедление или зависание во время загрузки примерно одной из десяти страниц. Иногда в самом верху страницы появляется строка текста, которая выглядит примерно так:

00 OK Date: Thu, 01 Apr 2010 01:50:09 GMT Server: Microsoft-IIS/6.0 X-Powered_By: ASP.NET X-AspNet-Version:2.0.50727 Cache-Control:private Content-Type:text/html; charset=ut

(начало и конец "обрезаны".)

Кто-нибудь видел что-нибудь подобное раньше? Любая идея, что это значит или что это вызывает?

Изменить: Я тоже часто вижу это, когда щелкаю что-то - это выглядит как красный текст на желтой странице:

XML Parsing Error: not well-formed
Location: http://203.111.46.211/3DSS/CompanyCompliance.aspx?cid=14
Line Number 1, Column 24:2mMTehON9OUNKySVaJ3ROpN" />
                         -----------------------^

Если я вернусь и нажму снова, это сработает (я вижу страницу, на которой нажал, а не сообщение об ошибке выше).

Обновление:

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

HTTP / 1.1 302 Найдено дата: среда, 21 апреля 2010 г. 04:53:39 GMT Сервер: Microsoft-IIS / 6.0 X-Powered-By: ASP.NET X-AspNet-версия: 2.0.50727 Расположение : /3DSS/EditSections.aspx?id=3&siteId=56&sectionId=46 Set-Cookie: .3DSS = A6CAC223D0F2517D77C7C68EEF069ABA85E9HFYV64F & FA4209E2621B8DCE38174AD699C9F0221D30D49E108CAB8A828408CF214549A949501DAFAF59F080375A50162361E4AA94E08874BF0945B2EF; Путь = /; HttpOnly Cache-Control: private Content-Type: text / html; charset = utf-8 Content-Length: 184

объект переехал сюда

Где "здесь" - это ссылка, которая указывает на URL, такой же, как тот, который я запрашиваю, за исключением того, что в нем есть дополнительная папка, что означает что-то вроде:
http://123.1.2.3/MySite//MySite/Page.aspx?option=1

вместо:
http://123.1.2.3/MySite/Page.aspx?option=1

Обновление:

Мой коллега обнаружил некоторую информацию о том, что это может быть связано с тем, что тестовые серверы работают под управлением iis в 64-битной версии (64-битная версия win 2003) (prod-серверы имеют 32-битную версию win 2003).

Итак, мы попытались указать IIS использовать 32-разрядный код:
cscript% SYSTEMDRIVE% \ inetpub \ adminscripts \ adsutil.vbs SET W3SVC / AppPools / Enable32bitAppOnWin64 1

% SYSTEMROOT% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis.exe -i

эта страница поддержки MS )

Но iis вообще перестал работать (сервер «недоступен» на белой странице вместо веб-сайтов).

Обратное выше (см. Ссылку) сначала тоже не сработало. Вкладка ASP.NET исчезла из свойств нашего веб-сайта IIS, и нам пришлось в течение часа возиться, удаляя (aspnet_regiis.exe -u) и переустановив 32-битный ASP.NET и добавив Default.aspx обратно в документы по умолчанию.

Мы, вероятно, попробуем еще раз через несколько дней, если у кого-то есть что-то добавить, пожалуйста, сделайте.

Обновление: Кажется, это расходится со всем, что мы узнали до сих пор, но наше тестирование показывает, что эта проблема возникает только в Firefox, а не в IE или Chrome (!! ??).

Обновление: решение
Для тех, кто найдет это позже:
По предложению Аристоса (см. Принятый ответ) мы искали код для HTTP-заголовка «Content-Length». была страница, которая его установила, страница, которая вытаскивает изображение из БД для отображения логотипа компании (выплевывает его прямо в ответ, то есть: вместо ссылки сказать «log56.gif» вы можете ссылка на «ThisImagePage.aspx? id = 56», и он будет обслуживать указанный GIF из БД).
Мы закомментировали строку:

HttpContext.Current.Response.AddHeader("Content-Length", File.Length.ToString());

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

Ответы [ 4 ]

3 голосов
/ 27 апреля 2010

MGOwen Я поделюсь своим опытом по аналогичной проблеме, которая у меня была.

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

Я обнаружил, что проблема была в том, что я установил Content-Length в заголовке, а затем по какой-то причине, когда собирался получить контент-Длина, не изменилась / или была вычислена как ложная, и в результате возникла ошибка, аналогичная вашей.

Поэтому проверьте, не настроили ли на ваших страницах значение Content-Length , а затем используйте фильтр gZip.Если да, то удалите параметр Content-Length в вашей программе.

В общем, я говорю, что длина имеет проблему на вашей странице, а длина является переменной в Content-Length .

- и в вашем заголовке длина контента существует! -

update
Также еще один человек считает, что я заметил, что если ваша страница отправляется как gZip, гдеэто у тебя в голове?если это полный заголовок вашей страницы.

1 голос
/ 23 апреля 2010

Текст, который вы видите, является заголовком страницы. Я предполагаю, что и это, и ошибка синтаксического анализа xml вызваны отключением вывода в браузер или, что еще более странным образом, только частью фрагмента из передаваемого ответа.

Я бы начал с балансировщика нагрузки и посмотрел, есть ли доступные журналы. После этого я попытался бы отключить сжатие IIS, о котором упоминал Аристос, и посмотреть, оказывает ли это влияние (в IIS получить свойства в папке «Веб-сайты», а затем перейти на вкладку «Служба» или узнать, включено ли сжатие / изменено этот конкретный сайт).

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

1 голос
/ 26 апреля 2010

машины имеют один и тот же ключ?
Это наряду с доступом к состоянию сеанса может вызвать странные ошибки.

0 голосов
/ 06 апреля 2010

Кажется, эта проблема связана с IIS и .net.

Нажмите Пуск -> Выполнить и введите следующую команду, если вы используете .NET 2.0 framework: % Windir% \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_regiis -i

Подробное обсуждение здесь: http://social.msdn.microsoft.com/Forums/en-US/xmlandnetfx/thread/47f6eb6a-b062-4f4d-8b7f-b4afb1b2725d

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...