Тайм-аут сервера SQL - PullRequest
       15

Тайм-аут сервера SQL

1 голос
/ 19 августа 2009

мое приложение разработано на классическом asp, но также использует asp.net, так как я переношу приложение на .Net. Он использует сервер SQL в качестве базы данных и размещен на сервере Windows 2003.

Теперь проблема в том, что приложение продолжает прекрасно работать в течение длительного времени, но затем через некоторое время сервер SQL выдает ошибку тайм-аута, и он может выполнить любой из сделанных запросов. Это не исправляется, даже когда я перезагружаю свой сервер SQL или даже IIS, в конечном итоге мне приходится перезапускать свой сервер каждый раз, что только устраняет проблему.

Есть идеи, что может быть причиной проблемы? Просто чтобы дать четкую идею, сайт используется около 300 человек в часы пик.

Есть идеи, что может быть причиной проблемы? Просто чтобы дать четкую идею, сайт используется около 300 человек в часы пик. Я определенно закрываю соединение везде, мой код завершения на каждой странице закрывает соединение. Если перед конечной страницей возникает ошибка, обработчик ожидания закрывает соединение. Поэтому я уверен, что закрытие соединения не является проблемой. И что нет открытого соединения, если я вижу журналы sql. Наш сервер, только один ящик, имеет SQL Server, IIS, iMail (наш почтовый сервер). После перезапуска SQL Server это не решило проблему. Только перезапустив Windows Server, все заработало. С точки зрения использования, IO довольно высока. Есть предложения?

Спасибо

Ответы [ 4 ]

2 голосов
/ 19 августа 2009

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

РЕДАКТИРОВАТЬ: Я видел ваши комментарии. Есть ли ожидающие транзакции для совершения?

1 голос
/ 19 августа 2009

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

Мой первый инстинкт - это соединения с базой данных, за исключением того, что перезапуск перезапускающего сервера sql должен исправить это, если бы это было так. Далее в списке находятся файловые дескрипторы и потоки, так что если вы выполняете какую-либо многопоточную работу или дополнительный файл io, на это будет что-то посмотреть. Помните, что в ASP.Net оператор using (не директива) является вашим другом.

0 голосов
/ 19 августа 2009

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

0 голосов
/ 19 августа 2009

Во-первых, вам нужно поговорить с вашим администратором базы данных ... они могут проверить количество открытых соединений, блокировки таблиц, медленные запросы и т. Д.

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

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