Классический ASP: время отклика периодически сильно тормозит - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблема с кучей (около 50) классических ASP-сайтов на Win2012R2 с Access-Databases, что сводит нас с ума.

Все asp-страницы всех сайтов на этом сервере работают нормально дляпримерно через 45 секунд, после этого периода они (все) полностью перестают реагировать на любой щелчок в течение 15–20 секунд, затем эта задержка снова исчезает на следующие 45 секунд, как никогда раньше, снова появляется - и так далее.Этот эффект начался с нуля несколько недель назад, после нескольких месяцев без проблем.

Статические HTML-страницы не затрагиваются, и, кажется, даже asp-страницы без подключения к своей базе данных работают нормально.Поэтому мы попытались протестировать преобразование из Access в SQLExpress, но это ничего не изменило - даже преобразованный сайт был затронут таким же образом (так что, похоже, это не Access).

Затем мы попыталисьостановить все сайты в IIS и повторно активировать только один сайт с очень небольшим количеством посетителей, чтобы увидеть, появляется ли он только при отправке большого количества запросов на сервер.Но эффект все же проявился даже после перезапуска IIS и даже после перезапуска всей машины с одним активированным веб-сайтом в IIS.Кажется, что он полностью независим от числа эффектов, точно так же, как сервер (точнее, asp-движок IIS) периодически сам по себе работает в периодическом порядке.

Что мы можем видеть в мониторе производительности (см.снимок экрана): хотя количество запросов / сек в какой-то момент снижается до 0, когда начинается эффект, количество выполняемых запросов непрерывно накапливается с нормального уровня (который мне кажется «логичным», но описывает только эффект, а не оправдывает, гдеоно произошло от).За несколько секунд до исчезновения эффекта число запросов в секунду снова увеличивается, и эти счетчики возвращаются к нормальным значениям.

the effect in performance monitor - while Requests executing accumulates, all sites stop responding

У нас была аналогичная проблема год назад на Windows 2008-сервере, где сайты работали без проблем в течение нескольких лет, а затем началисьиз ничего.После тестирования некоторых сайтов на сервере другого хостера мы обнаружили, что проблемы не возникали на его сервере с Windows 2012 R2 (и все еще не появляются в течение целого года, пока там размещаются 3 наших сайта).У другого хостера виртуального Windows 2012R2-Server у нас есть еще один отдельный сайт, на котором размещено больше трафика, чем у большинства других, и даже там проблема не появлялась уже целый год.Поэтому мы, наш хостер, перешли на WinServer2012R2 и - бинго - все проблемы исчезли.С этого момента все сайты снова работали как чары, не меняя ничего, кроме ОС.

Затем мы прекратили исследовать проблему, думая, что проблема связана с ОС.Но примерно через 9 месяцев оно появилось снова, и после нескольких часов исследований мы понятия не имеем, что искать и что делать (кроме перемещения всех наших сайтов на сервер другого хостера, что не является реальным решением).к проблеме, и мы не можем гарантировать, что эффект не будет появляться на этой машине иногда в будущем).

1 Ответ

0 голосов
/ 21 сентября 2018

Я определенно нашел решение сам, но совершенно случайно.После нескольких недель поиска решения проблемы я работал над очисткой жесткого диска сервера и удалял все файлы в папке Windows / temp (> 18 000 файлов!).И с этого момента (4 дня назад) описанная задержка ответа больше не появлялась!Но небольшая куча новых .tmp-файлов была создана в папке.

Моя теория такова: возможно, каждый раз, когда пользователь посещает один из веб-сайтов (который открывает соединения с его базой данных Access, вызывая .ldb-файл в папке базы данных), случайно (?) с именем .tmp-файл (например, jet12f0.tmp) создается в папке Windows / temp параллельно.Эти файлы «нормально» снова удаляются, так как соединение с базой данных закрывается и .ldb исчезает.Возможно, некоторые соединения закрыты неправильно, поэтому соответствующий файл .tmp в папке Windows / temp находится там как «сирота», буквально навсегда.Со временем папка заполняется этими потерянными файлами.А потом приходит, что должен быть создан новый .tmp-файл, но с именем все еще существующего "потерянного" .tmp-файла.Это теперь заставляет сервер останавливать все действия, потому что невозможно установить новый файл, названный как существующий.Через 15-20 секунд конфликт разрешается неким механизмом (неизвестным мне), и все снова работает идеально, пока следующий конфликт не возникнет примерно через 45 секунд.И так далее ...

Я должен предположить: это всего лишь "любительская" теория, я не сервер "Гуру".

Время от времени очищаю эту временную папкукажется, что время не позволяет серверу попасть в эту ситуацию, потому что нет конфликтов имен файлов.

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

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