2013-03-25 6 views
0

У нас есть классический веб-сайт ASP на IIS 7.5.Классический сайт ASP иногда висит

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

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

Я не заметил никаких правил, когда сайт перестанет отвечать. Иногда, он отлично работает все время, иногда он просто останавливается.

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

Но, если я открою другой браузер, скажу, что я в Chrome и открываю IE, сайт в новом браузере снова быстро.

Моя единственная подсказка, если я удалю cookie сеанса ASP на стороне клиента, тогда загрузка страниц быстро повторится в том же браузере. Таким образом, это, очевидно, что-то связано с файлом cookie ASP. Может ли механизм IIS или ASP каким-то образом блокировать сеанс ASP?

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

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

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

Спасибо!

EDIT: я нашел, когда происходит медленная реакция, я не могу загрузить даже пустую страницу ASP (я создал страницу с одной строки кода, просто с Response.Write «работает»). Конечно, если я открою эту страницу в другом браузере, она будет работать в кратчайшие сроки. Когда проблема возникает, веб-сайт висит только для этого сеанса. Если я попытаюсь использовать одну и ту же страницу в другом браузере или очистить сеанс cookie в том же браузере, страница загружается быстро.

+0

Обычная причина - запрос безудержного БД. Не зная, как работает ваше приложение, этот вопрос не очень ответственен. –

+0

Я сомневаюсь, что это база данных, потому что медленная реакция может произойти на каждой странице. Нет правила. Когда проблема возникает, любая страница на сайте недоступна. Но если я вручную очистку cookie сеанса ASP, то сайт снова будет быстрым. Кроме того, если я открою другой браузер, и сайт тоже будет быстрым. – BorisP

+0

Это жесткая. Возможно, вы захотите опубликовать его на сервере serverfault.com. Я не думаю, что вы ответите здесь. –

ответ

0

Я думаю, я нашел ответ. На веб-сайте ASP используется несколько пользовательских COM-компонентов.

Некоторые из этих компонентов записывают файлы журнала на диск. Эти журналы являются .txt-файлами.

Файлы журналов растут со временем, а один - более 4 ГБ.Так или иначе, запись в большой файл заставила сервер реагировать медленно после загрузки нескольких страниц. Что интересно, новое окно браузера может быстро открывать страницу, когда оно висит в другом браузере.

Итак, я удалил ту часть, которая записывает файлы журнала из кода ASP, а веб-сайт теперь работает без зависания.

Спасибо всем!

0

Для таких проблем я просто написал грубую функцию (которая у меня есть в include) и положил на страницу проблем. Функция записывает временную метку, таймер (для записи времени в миллисекундах) и любые другие переменные, которые я хочу в текстовый файл.

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

Помните пользователь таймера() как часть этого, как нормальная временная метка usless для захвата времени в миллисекундах масштабе

+0

Вау, это хорошая идея. Страница висит, но я точно не знаю, где именно. Так как это на случайной странице, я полагаю, что это некоторый файл include. – BorisP

+0

Хм, я пробовал это, но похоже, что он не связан ни с одной страницей. Затем я нажимаю ссылки на веб-сайте и через некоторое время висит. когда это происходит, я не могу загрузить даже пустую страницу ASP (я создал одну пустую страницу, чтобы увидеть, работает ли страница без кода, когда сайт висит). – BorisP

0

У меня есть эта проблема тоже. У меня нет баз данных или каких-либо пользовательских объектов activex, я очищаю каждый объект (например, scripting.filesystemobject) сразу после каждого действия, но у меня есть сеансы, включенные в приложении, чтобы я мог установить кодовую страницу сеанса и так далее. Я замечаю, что сервер генерирует много файлов aspsessionid; то есть к моменту зависания страницы может быть 50 aspsessionid cookie. IIS генерирует их, если сеансы включены, и я ничего не могу с ними поделать. каждые 20-30 минут, страница внезапно висит на моей сессии. Приведение в действие другого экземпляра браузера (например, другого компьютера или частного режима просмотра) будет корректно отвечать на запросы. Оставляя браузер в течение 5 минут, он также заставит его правильно реагировать. Я знаю, что с циклами я могу проверить response.isclientconnected и выполнить response.end, если соединение мертво, чтобы завершить процесс сервера, но мой клиент подключен все еще, так что это не помогает.

Смежные вопросы