Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В каких случаях бывает такая ситуация? / 25 сообщений из 30, страница 1 из 2
22.04.2021, 11:41
    #40064678
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Есть приложение на с++, коннектится к SQL Server, отправляет запрос, через несколько часов наблюдаю картину:

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

Но там примечательно следующее:

WAIT_INFO
(61306673ms)PWAIT_RESOURCE_SEMAPHORE_FT_PARA

Как такое может быть и что бы это значило?
...
Рейтинг: 0 / 0
22.04.2021, 11:45
    #40064679
В каких случаях бывает такая ситуация?
Ролг Хупин
Есть приложение на с++, коннектится к SQL Server, отправляет запрос, через несколько часов наблюдаю картину:

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

Но там примечательно следующее:

WAIT_INFO
(61306673ms)PWAIT_RESOURCE_SEMAPHORE_FT_PARA

Как такое может быть и что бы это значило?
Если юзер снял приложение, это не значит, что коннект на сервере автоматически закрылся. Приложение должно уметь корректно закрывать соединения и освобождать ресурсы.
...
Рейтинг: 0 / 0
22.04.2021, 11:52
    #40064683
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ролг Хупин,

возможен откат транзакции, например.
...
Рейтинг: 0 / 0
22.04.2021, 12:11
    #40064689
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
...
Рейтинг: 0 / 0
22.04.2021, 12:35
    #40064698
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Владислав Колосов
Ролг Хупин,

возможен откат транзакции, например.


там вряд ли откат, показывает работающую процедуру которая набирает данные во временные таблицы и потом из них должна сделать селект.
...
Рейтинг: 0 / 0
22.04.2021, 12:36
    #40064700
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
Есть приложение на с++, коннектится к SQL Server, отправляет запрос, через несколько часов наблюдаю картину:

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

Но там примечательно следующее:

WAIT_INFO
(61306673ms)PWAIT_RESOURCE_SEMAPHORE_FT_PARA

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



т.е. если процессу делается килл, то он должен уметь корректно закрывать коннекты?
...
Рейтинг: 0 / 0
22.04.2021, 12:38
    #40064701
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?


и я уже не помнил, спасибо! та же фигня была
...
Рейтинг: 0 / 0
22.04.2021, 13:01
    #40064708
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?


в тот раз так и не понял причину. Типа само рассосалось или юзера нейтрализовали, х.е.з.
С сетью вряд ли проблемы, ведь коннект торчит уже на сервере и ждет
(61306673ms)PWAIT_RESOURCE_SEMAPHORE_FT_PARA

Но чего и почему - вопрос...
...
Рейтинг: 0 / 0
22.04.2021, 13:03
    #40064709
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ролг Хупин,

авторПриложение юзер снял
Понятно, что в этом случае приложение не уведомит сервер о завершении своей работы. Тем не менее, если правильно помню, при снятии задачи приложению система отправляет сообщение о событии, которое можно перехватить и обработать.
...
Рейтинг: 0 / 0
22.04.2021, 13:17
    #40064712
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ролг Хупин,

1. Сессия в состоянии ожидания ничего выполнять не может.

2. Для проблемной сессии ыполнить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @s int = ...;

select
 s.host_name, s.host_process_id, c.client_net_address
from
 sys.dm_exec_sessions s join
 sys.dm_exec_connections c on c.session_id = s.session_id
where
 s.session_id = @s;

И посмотреть на удаленной машине есть ли там такой процесс и чего он делает.
Пользователи под термином "снял приложение" могут подразумевать что угодно.
...
Рейтинг: 0 / 0
22.04.2021, 13:21
    #40064714
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Я думаю, что сеанс закроется при попытке коммуникаций сервера с приложением, когда обнаружится, что IP соединение закрыто. До тех пор запрос будет выполняться.
...
Рейтинг: 0 / 0
22.04.2021, 13:50
    #40064724
В каких случаях бывает такая ситуация?
Ролг Хупин
Ведущий профессионал
пропущено...
Если юзер снял приложение , это не значит, что коннект на сервере автоматически закрылся. Приложение должно уметь корректно закрывать соединения и освобождать ресурсы .



т.е. если процессу делается килл, то он должен уметь корректно закрывать коннекты?
В винде не делается сразу килл. Сначала посылается сообщение WM_QUIT в очередь приложения. И только тогда, если оно не отвечает, делается килл. Я ещё в детстве делал так приложения, которые невозможно убить. Они просто перехватывали WM_QUIT, создавали копию процесса, а сами завершались.

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

Единственное, что не может предотвратить разработчик, это если вырвать кабель локальной сети из сетевой карты. В этом случае на сервере останется зависшее соединение. Тут уже админ ДБ должен их отлавливать и закрывать периодически.
...
Рейтинг: 0 / 0
22.04.2021, 14:47
    #40064760
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал

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


Ну вот, сказки то зачем сказывать?
Сначала вырви - потом сказывай.

Любое TCP соединение разрывается, если разорвать соединение на физическом уровне сети.
Таймаут там... ну десять-двадцать секунд.

Более того, все "более-менее правильно написанные" приложения рвут все свои сетевые подключения вместе с уничтожением процесса.
...
Рейтинг: 0 / 0
22.04.2021, 15:25
    #40064775
В каких случаях бывает такая ситуация?
aleks222
Ведущий профессионал

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


Ну вот, сказки то зачем сказывать?
Сначала вырви - потом сказывай.

Любое TCP соединение разрывается, если разорвать соединение на физическом уровне сети.
Таймаут там... ну десять-двадцать секунд.

Более того, все "более-менее правильно написанные" приложения рвут все свои сетевые подключения вместе с уничтожением процесса.
Причём тут таймаут? Если по соединению не летает никаких пакетов, то его физический разрыв не может быть обнаружен. Более того, программное закрытие TCP соединения - это отправка пакета и получение на него ответа. То есть, физически разорванное соединение не может быть корректно закрыто.

И, да, вырывал кабель ещё 30 лет назад. Сначала удивлялся, потом разобрался. Чтобы обнаружить разрыв, надо постоянно гонять по соединению пакеты. По умолчанию стандартом TCP это не предусмотрено.
...
Рейтинг: 0 / 0
22.04.2021, 15:41
    #40064784
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
пропущено...



т.е. если процессу делается килл, то он должен уметь корректно закрывать коннекты?
В винде не делается сразу килл. Сначала посылается сообщение WM_QUIT в очередь приложения. И только тогда, если оно не отвечает, делается килл. Я ещё в детстве делал так приложения, которые невозможно убить. Они просто перехватывали WM_QUIT, создавали копию процесса, а сами завершались.

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

Единственное, что не может предотвратить разработчик, это если вырвать кабель локальной сети из сетевой карты. В этом случае на сервере останется зависшее соединение. Тут уже админ ДБ должен их отлавливать и закрывать периодически.


Бред какой-то.....
...
Рейтинг: 0 / 0
22.04.2021, 15:45
    #40064788
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
invm
Ролг Хупин,

1. Сессия в состоянии ожидания ничего выполнять не может.

2. Для проблемной сессии ыполнить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @s int = ...;

select
 s.host_name, s.host_process_id, c.client_net_address
from
 sys.dm_exec_sessions s join
 sys.dm_exec_connections c on c.session_id = s.session_id
where
 s.session_id = @s;

И посмотреть на удаленной машине есть ли там такой процесс и чего он делает.
Пользователи под термином "снял приложение" могут подразумевать что угодно.


Вот результат
host111 15092 xx.x.x.xxx


приложение было снято я проверил - попросил запустить таск менеджер и прислать мне картинку, нет такого приложения, но его запрос на сервере от этого хоста и от имени приложения, его запустившего висел и ждал чего-то.
При этом он залип на выполнении процедуры, на добавлении данных во ввременную таблицу внутри и размер темпдб рос постепенно.
Понимаю, что чудеса, но все видел сам, до чего мог дотянуться
...
Рейтинг: 0 / 0
22.04.2021, 16:02
    #40064800
В каких случаях бывает такая ситуация?
Ролг Хупин
Ведущий профессионал
пропущено...
В винде не делается сразу килл. Сначала посылается сообщение WM_QUIT в очередь приложения. И только тогда, если оно не отвечает, делается килл. Я ещё в детстве делал так приложения, которые невозможно убить. Они просто перехватывали WM_QUIT, создавали копию процесса, а сами завершались.

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

Единственное, что не может предотвратить разработчик, это если вырвать кабель локальной сети из сетевой карты. В этом случае на сервере останется зависшее соединение. Тут уже админ ДБ должен их отлавливать и закрывать периодически.


Бред какой-то.....
На Вашем сервере это уже 4 года, как реальность. Убийство юзером приложения не прекращает выполнения запросов на сервере. Я за такое юзеров по рукам бил. Запускают запрос. Им кажется, что долго. Перезапускают приложение. Ещё раз запускают запрос. Потом от остальных сотен юзеров пошли жалобы, что вся система упала. Смотришь, а там 25 одинаковых запросов от этого юзера крутятся и все ресурсы сервера захватили.

Есть специальные технические меры, чтобы такого не было. Но, это уже другая история.
...
Рейтинг: 0 / 0
22.04.2021, 16:07
    #40064805
В каких случаях бывает такая ситуация?
Ролг Хупин
invm
Ролг Хупин,

1. Сессия в состоянии ожидания ничего выполнять не может.

2. Для проблемной сессии ыполнить
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @s int = ...;

select
 s.host_name, s.host_process_id, c.client_net_address
from
 sys.dm_exec_sessions s join
 sys.dm_exec_connections c on c.session_id = s.session_id
where
 s.session_id = @s;

И посмотреть на удаленной машине есть ли там такой процесс и чего он делает.
Пользователи под термином "снял приложение" могут подразумевать что угодно.


Вот результат
host111 15092 xx.x.x.xxx


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

И проблема в кривом приложении, которое не позволяет корректно прервать зависший запрос и его приходится снимать, убивая процесс.
...
Рейтинг: 0 / 0
22.04.2021, 16:08
    #40064807
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
пропущено...


Бред какой-то.....
На Вашем сервере это уже 4 года, как реальность. Убийство юзером приложения не прекращает выполнения запросов на сервере. Я за такое юзеров по рукам бил. Запускают запрос. Им кажется, что долго. Перезапускают приложение. Ещё раз запускают запрос. Потом от остальных сотен юзеров пошли жалобы, что вся система упала. Смотришь, а там 25 одинаковых запросов от этого юзера крутятся и все ресурсы сервера захватили.

Есть специальные технические меры, чтобы такого не было. Но, это уже другая история.


откдуа вы знаете, что "на моем сервере" уже 4 года как реальность?
Вы вроде бы и пишете ответы, а, ведь, буду краток: одно словоблудие
...
Рейтинг: 0 / 0
22.04.2021, 16:14
    #40064812
В каких случаях бывает такая ситуация?
Ролг Хупин
Ведущий профессионал
пропущено...
На Вашем сервере это уже 4 года, как реальность. Убийство юзером приложения не прекращает выполнения запросов на сервере. Я за такое юзеров по рукам бил. Запускают запрос. Им кажется, что долго. Перезапускают приложение. Ещё раз запускают запрос. Потом от остальных сотен юзеров пошли жалобы, что вся система упала. Смотришь, а там 25 одинаковых запросов от этого юзера крутятся и все ресурсы сервера захватили.

Есть специальные технические меры, чтобы такого не было. Но, это уже другая история.


откдуа вы знаете, что "на моем сервере" уже 4 года как реальность?
Вы вроде бы и пишете ответы, а, ведь, буду краток: одно словоблудие
В четвёртом сообщении этого топика есть ссылка на Ваш топик 4 года назад с аналогичной проблемой.
...
Рейтинг: 0 / 0
22.04.2021, 16:26
    #40064819
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
пропущено...


откдуа вы знаете, что "на моем сервере" уже 4 года как реальность?
Вы вроде бы и пишете ответы, а, ведь, буду краток: одно словоблудие
В четвёртом сообщении этого топика есть ссылка на Ваш топик 4 года назад с аналогичной проблемой.


а вы уверены, что там был ТОТ ЖЕ МОЙ Сервер, а? или может просто ситуация похожая?
Не чудите
Кроме того, по той ссылке дискуссия закончилась ничем, ответа нет.
...
Рейтинг: 0 / 0
22.04.2021, 16:33
    #40064822
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
пропущено...


Вот результат
host111 15092 xx.x.x.xxx


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

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


Это что за фигня?
И проблема в кривом приложении, которое не позволяет корректно прервать зависший запрос и его приходится снимать, убивая процесс.

научите же меня!
...
Рейтинг: 0 / 0
22.04.2021, 18:01
    #40064856
В каких случаях бывает такая ситуация?
Ролг Хупин
Ведущий профессионал
пропущено...
Проблема в запросе. Снятие юзером приложения - следствие, что запрос завис, а не причина.

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


Это что за фигня?
И проблема в кривом приложении, которое не позволяет корректно прервать зависший запрос и его приходится снимать, убивая процесс.

научите же меня!
Отправлять запрос на сервер и ждать ответа надо в отдельном потоке. Не останавливая обработку сообщений от пользовательского интерфейса. И предусмотреть кнопку прервать запрос, если пользователь больше не хочет ждать результата запроса. Тогда пользователи не будут снимать приложение, а будут корректно закрывать.
...
Рейтинг: 0 / 0
22.04.2021, 18:14
    #40064864
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
Ролг Хупин
пропущено...


Это что за фигня?
И проблема в кривом приложении, которое не позволяет корректно прервать зависший запрос и его приходится снимать, убивая процесс.

научите же меня!
Отправлять запрос на сервер и ждать ответа надо в отдельном потоке. Не останавливая обработку сообщений от пользовательского интерфейса. И предусмотреть кнопку прервать запрос, если пользователь больше не хочет ждать результата запроса. Тогда пользователи не будут снимать приложение, а будут корректно закрывать.


спасибо за такое откровение
это п-ц
...
Рейтинг: 0 / 0
22.04.2021, 19:30
    #40064895
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В каких случаях бывает такая ситуация?
Ведущий профессионал
aleks222
пропущено...


Ну вот, сказки то зачем сказывать?
Сначала вырви - потом сказывай.

Любое TCP соединение разрывается, если разорвать соединение на физическом уровне сети.
Таймаут там... ну десять-двадцать секунд.

Более того, все "более-менее правильно написанные" приложения рвут все свои сетевые подключения вместе с уничтожением процесса.
Причём тут таймаут? Если по соединению не летает никаких пакетов, то его физический разрыв не может быть обнаружен. Более того, программное закрытие TCP соединения - это отправка пакета и получение на него ответа. То есть, физически разорванное соединение не может быть корректно закрыто.

И, да, вырывал кабель ещё 30 лет назад. Сначала удивлялся, потом разобрался. Чтобы обнаружить разрыв, надо постоянно гонять по соединению пакеты. По умолчанию стандартом TCP это не предусмотрено.

Не надо фантазировать.
Надо учиться.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / В каких случаях бывает такая ситуация? / 25 сообщений из 30, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]