Могу ли я установить различные значения подключения и времени ожидания запроса для MySQL в Linux? - PullRequest
1 голос
/ 30 ноября 2011

Я бы хотел, чтобы у запросов MySQL был тайм-аут с длительным интервалом, но первоначальный тайм-аут соединения был коротким.Например, если процесс не может подключиться в течение 3 секунд, предположим, что сервер может быть перегружен и сразу же выйдет из строя (вместо постановки в очередь соединений httpd), но если подключение MySQL происходит быстро, дайте запросам достаточно времени для завершения.

Хотя я предполагаю, что могу указать тайм-аут подключения к серверу через конфигурацию MySQL, его невозможно настроить в PHP, потому что, как говорится в руководстве , «В Linux настройка [1005 *]также используется для ожидания первого ответа от сервера. "

Означает ли" первый ответ "результат первого запроса?SET NAMES 'utf8' считается?

Это означает, что mysql.connect_timeout относится к всем запросам в Linux?

1 Ответ

2 голосов
/ 30 ноября 2011

см. Страницу документа PHP:

http://www.php.net/manual/en/mysqli.real-connect.php

пример # 1

РЕДАКТИРОВАТЬ 1

, как только вы подключитесь к MySQLклиент получает «баннер», где сервер объявляет свою версию и другие вещи.

«В Linux параметр [mysql.connect_timeout] также используется для ожидания первого ответа от сервера».означает, что клиент ожидает этого «сообщения баннера», используя тот же тайм-аут соединения.

в моем тесте я установил тайм-аут в 4 секунды (см. 4000 в опросе):

connect(3, {sa_family=AF_INET, sin_port=htons(3306), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress)
fcntl64(3, F_SETFL, O_RDWR)             = 0
poll([{fd=3, events=POLLIN|POLLPRI}], 1, **4000**) = 1 ([{fd=3, revents=POLLIN}])
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0", 8) = 0
setsockopt(3, SOL_SOCKET, SO_SNDTIMEO, "\2003\341\1\0\0\0\0", 8) = 0
setsockopt(3, SOL_IP, IP_TOS, [8], 4)   = 0
setsockopt(3, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
poll([{fd=3, events=POLLIN}], 1, **4000**)  = 1 ([{fd=3, revents=POLLIN}])
read(3, "4\0\0\0\n5.1.55"..., 16384) = 56

Мой сервер версии 5.1.55

Вкратце: connection_timeout не связан с каким-либо таймаутом в запросах

...