![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
_KUL |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 31.5.2012 Пользователь №: 3404 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Делаю:
Лезу на сервак, делаю "покажи соединения с mysql" И вижу, что моё соединение висит как TIME_WAIT Вопрос: как корректно закрыть соединение? Что я делаю не так? Или как послать сигнал mysql серверу, чтобы он разорвал со мной соединение? |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
так ты же базу закрываешь. Логичнее предположить, что
db.close(); |
|
|
_KUL |
![]()
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 31.5.2012 Пользователь №: 3404 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Пожалуйста, делаем даже для тефолтного соединения:
Всё равно висит WAIT на mysql сервере ... Как же мне сделать disconnect явный, чтобы сервер меня отключил и не ожидал ничего? |
|
|
ViGOur |
![]()
Сообщение
#4
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Как я понимаю, TIME_WAIT это ничто иное как:
ESTABLISHED -> FIN_WAIT_1-> FIN_WAIT_2 -> TIME_WAIT -> CLOSED. Подробней показано на рисунке: ![]() Возможно будет интересно почитать: A TCP Tutorial |
|
|
_KUL |
![]()
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 31.5.2012 Пользователь №: 3404 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Так вот в том и проблема, как же мне это событие CLOSED то и сделать средствами класса QSqlDatabase ?
![]() |
|
|
ViGOur |
![]()
Сообщение
#6
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
TIME_WAIT появляется в следствии того, что закрытие соединения было выполнено и все идет хорошо.
Состояние CLOSED, устанавливается средствами самой операционной системы. Единственное что ты можешь в этом случае сделать, это подкрутить, чтобы TIME_WAIT меньше времени висел. |
|
|
_KUL |
![]()
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 31.5.2012 Пользователь №: 3404 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А как же тогда монстры вроде Navicat и EMS при выходе сразу же разрывают соединения и никаких вайтов не висит??? Или у них таймвайт в 1сек выставлен и меньше?! А можно как-то средствами Qt TIME_WAIT выставить вручную? (обычно минуту/2 всисит соединение )
|
|
|
ViGOur |
![]()
Сообщение
#8
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
В linux есть такоей файл как /proc/sys/net/ipv4/tcp_fin_timeout, в котором задан этот самый таймаут. В винде не помню где в реестре это указывается...
У них скорее всего не висит потому, что это в принципе избыточная информация. |
|
|
_KUL |
![]()
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 31.5.2012 Пользователь №: 3404 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, вроде понял ...
http://qt-project.org/forums/viewthread/17655/ |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 18.2.2025, 18:11 |