Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / interactive_timeout и wait_timeout / 11 сообщений из 11, страница 1 из 1
01.10.2015, 10:18:42
    #39065830
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
Добрый день!
Просветите насчет этих переменных.

"interactive_timeout Количество времени в секундах, на протяжении которого сервер ожидает активности со стороны интерактивного соединения, прежде чем закрыть его. Интерактивный клиент - это клиент, который использует параметр CLIENT_INTERACTIVE для mysql_real_connect()."

wait_timeout Время в секундах, на протяжении которого сервер наблюдает неактивность в неинтерактивном соединения прежде, чем закрыть его. Когда запускается поток, SESSION.WAIT_TIMEOUT инициализируется исходя из GLOBAL.WAIT_TIMEOUT или GLOBAL.INTERACTIVE_TIMEOUT, в зависимости от типа клиента (как определяется в CLIENT_INTERACTIVE опции соединения).

Вопрос -
1) что такое CLIENT_INTERACTIVE и с чем его едят? У меня Windows 7 и коннект к базе через ODBC.
2) что понимать под интерактивным соединением. Внятного описания термина не нашел (или плохо искал)

В my.ini у меня interactive_timeout = 60, wait_timeout явно не прописан (значит должен быть по умолчанию)
Запускаю клиентскую программу. в show processlist появляется строчка. Значение столбца timer постепенно увеличивается.

Я предполагал, что если клиент не шлет никаких запросов, то коннект должен оборваться по истечении значения, установленного в interactive_timeout. Ан нет! Шлю запрос с клиента, в show processlist значение timer обнуляется и все работает.

Далее отрубаю клиента путем вытаскивания шнура из сетевой карты. В show processlist остается висеть сессия, которая благополучно через interactive_timeout секунд исчезает. И исчезают блокировки, поставленные GET_LOCK, что меня устраивает.

Где тут подвох? В чем разница этих 2-х переменных?
Надо ли "пинговать" с клиента пустым селектом сервер, если на первый взгляд по истечении interactive_timeout клиент не отвалился?

Заранее спасибо.
...
Рейтинг: 0 / 0
01.10.2015, 10:40:56
    #39065868
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
miv32Когда запускается поток, SESSION.WAIT_TIMEOUT инициализируется исходя из GLOBAL.WAIT_TIMEOUT или GLOBAL.INTERACTIVE_TIMEOUT, в зависимости от типа клиента (как определяется в CLIENT_INTERACTIVE опции соединения).В вашем вопросе уже содержится ответ. Или я не понял вопрос.

miv32wait_timeout явно не прописан (значит должен быть по умолчанию)А это умолчание аж 28800 секунд, т.е. 8 часов.

miv32что такое CLIENT_INTERACTIVE и с чем его едят? http://dev.mysql.com/doc/refman/5.5/en/mysql-real-connect.html Permit interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable.По умолчанию этот флаг не передается, т.е. используется wait_timeout.

miv32Далее отрубаю клиента путем вытаскивания шнура из сетевой карты. В show processlist остается висеть сессия, которая благополучно через interactive_timeout секунд исчезает.Вы уверены, что это не совпадение? Если изменить interactive_timeout, то это время тоже изменится?
...
Рейтинг: 0 / 0
01.10.2015, 11:16:27
    #39065907
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
Уверен, изменил interactive_timeout на 300.
Загрузил клиента. Вижу сессию. Вытаскиваю шнур. Сети нет. Клиента снимаю через диспетчер задач.
Гружу заново. В сессиях вижу новую + старую. Проходит 300 секунд и старая сессия из show processlist исчезает.
...
Рейтинг: 0 / 0
01.10.2015, 11:21:48
    #39065915
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
miv32Проходит 300 секунд и старая сессия из show processlist исчезает.Странный эффект.

Но, как я понимаю, для вас это даже лучше. Можно установить interactive_timeout в небольшое время, например, 15 секунд, и тогда блокировки от потерянных сессий будут быстро умирать. А wait_timeout оставить большим, чтобы не отваливались коннекты при паузах между запросами.
...
Рейтинг: 0 / 0
01.10.2015, 11:36:44
    #39065935
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
Согласен, странный...

Убрал из конфига строку interactive_timeout
Повторяю манипуляции со шнуром и диспетчером задач.

show processlist и SELECT * FROM INFORMATION_SCHEMA.METADATA_LOCK_INFO
Показывают наличие старых процессов и блокировок. И они продолжают висеть и висеть будут 28000сек, пока default не кончится.

Мой конфиг:

[mysqld]
datadir=C:/MasterBase/data
port=3306
character-sets-dir=C:/MasterBase/share/charsets/
character-set-server=cp1251
collation-server=cp1251_general_ci
lc_time_names = 'ru_RU'
sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
default_storage_engine=innodb
innodb_buffer_pool_size=375M
max_allowed_packet = 1073741824
innodb_log_file_size=50M
date_format=%d-%m-%Y
datetime_format=%d-%m-%Y %H:%i:%s
server-id=1
group_concat_max_len=4294967295
pid-file = C:/MasterBase/data/0400wsit026.pid
log-bin=mysql-bin
expire_logs_days=5
replicate-wild-do-table=force%.tmp%
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
thread_concurrency=12
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
key_buffer_size = 256M
table_open_cache = 256
#interactive_timeout = 300

[client]
port=3306
character-sets-dir=C:/MasterBase/share/charsets/

Но тут ничего особенного. Может репликация вносит какую-то лепту? Но это уже из области фантастики.
Где же тогда разница интерактивный и не интерактивный?
...
Рейтинг: 0 / 0
01.10.2015, 12:06:14
    #39065978
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
miv32Где же тогда разница интерактивный и не интерактивный?Не понимаю вопрос. Ваш же предыдущий эксперимент (где было interactive_timeout = 300) показал разницу.

Если оба параметра не указывать, то у них будет одинаковое значение по умолчанию и, действительно, разницы не будет.
...
Рейтинг: 0 / 0
01.10.2015, 13:29:18
    #39066112
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
Чудно все-таки работает.
Поставил принудительно в конфиге
interactive_timeout = 30
wait_timeout = 28800

show variables like '%timeout%' показывает wait_timeout = 30

Читаем доку:
Permit interactive_timeout seconds (instead of wait_timeout seconds) of inactivity before closing the connection. The client's session wait_timeout variable is set to the value of the session interactive_timeout variable.

На кой ляд тогда 2 переменных?
...
Рейтинг: 0 / 0
01.10.2015, 13:46:36
    #39066134
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
miv32На кой ляд тогда 2 переменных?Например, для того, чтобы подключающаяся программа могла выбирать по какому сценарию ей работать.
...
Рейтинг: 0 / 0
01.10.2015, 15:07:51
    #39066218
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
В общем, крутил-вертел.
Остановился на wait_timeout = 60 + по вашему совету из клиента каждые 30 секунд идет SELECT 0.
Вопрос, что будет с долгоиграющим селектом, но вроде таких по плану быть не должно.
...
Рейтинг: 0 / 0
01.10.2015, 15:31:46
    #39066249
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
miv32Вопрос, что будет с долгоиграющим селектом, но вроде таких по плану быть не должно.Да ничего не будет. Таймер начинает тикать при переходе в состояние Sleep, когда запрос окончить выполняться. Как учитываются запросы, по которым не до конца выполнен фетч - не знаю, надо пробовать.
...
Рейтинг: 0 / 0
01.10.2015, 17:07:48
    #39066363
miv32
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
interactive_timeout и wait_timeout
Будем посмотреть. Спасибо. :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / interactive_timeout и wait_timeout / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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