Тайм-аут сервера SQL - случается очень редко - PullRequest
1 голос
/ 08 октября 2010

У меня есть веб-приложение, которое иногда выдает эту ошибку….

Сообщение об исключении: истекло время ожидания.Период ожидания истек до завершения операции, или сервер не отвечает.

Когда я не могу подключиться к серверу SQL, даже через Management Studio, он говорит, что сервер истек ине удается подключиться.

Как только я сбросил iis, он мгновенно возвращается.Так что это, очевидно, означает, что это что-то в моем коде вызывает это.У меня есть сайт MVC, который использует Linq to SQL и зависимость кэша SQL с включенным компонентом Service Broker.

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

Все начинается с того, что я получаю ASP.net 4.xxxxx Код события 1309 Сообщение об исключении: истекло время ожидания.Время ожидания истекло до завершения операции или сервер не отвечает.ошибка

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

Итак, мой вопрос: какие шаги я могу предпринять, чтобы попытаться уменьшить, но в идеале устранить эту ошибку времени ожидания?

Любая помощь наиболее ценится

Truegilly

1 Ответ

1 голос
/ 08 октября 2010

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

Если вы не распорядитесь этими соединениями должным образом, IIS будет радо их хранить до тех пор, показапускается сборка мусора и / или время ожидания.Если у вас есть сайт с небольшим трафиком, проблема не возникнет.

Однако, как только трафик достигнет точки, в которой количество зависших соединений превышает количество попыток установить соединение с ним.сервер базы данных .. ну, вы начнете видеть одну из пары возможных ошибок.Тайм-аут истек один.Точная ошибка будет зависеть от того, какая часть падает: пул соединений, сам сервер sql и т. Д.

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

...