Может ли кто пояснить откуда в Linux вылезает 15-секундый таймаут отсутствия данных от клиента, после которого сервер штатно закрывает TCP соединение?
Установка соединения:
18:47:16.385653 IP 127.0.0.1.65001 > 127.0.0.1.5044: Flags [S], seq 2509773856, win 43690, options [mss 65495,sackOK,TS val 1126526359 ecr 0,nop,wscale 7], length 0
18:47:16.385684 IP 127.0.0.1.5044 > 127.0.0.1.65001: Flags [S.], seq 4122977173, ack 2509773857, win 43690, options [mss 65495,sackOK,TS val 1126526359 ecr 1126526359,nop,wscale 7], length 0
18:47:16.385704 IP 127.0.0.1.65001 > 127.0.0.1.5044: Flags [.], ack 1, win 342, options [nop,nop,TS val 1126526359 ecr 1126526359], length 0
Передача данных:
18:47:16.388096 IP 127.0.0.1.65001 > 127.0.0.1.5044: Flags [P.], seq 1:3, ack 1, win 342, options [nop,nop,TS val 1126526362 ecr 1126526359], length 2
[вырезано]
18:47:16.417621 IP 127.0.0.1.5044 > 127.0.0.1.65001: Flags [P.], seq 1:7, ack 1944, win 1024, options [nop,nop,TS val 1126526391 ecr 1126526362], length 6
18:47:16.417638 IP 127.0.0.1.65001 > 127.0.0.1.5044: Flags [.], ack 7, win 342, options [nop,nop,TS val 1126526391 ecr 1126526391], length 0
Клиент ждет данных или какого-то события:
18:47:31.397478 IP 127.0.0.1.5044 > 127.0.0.1.65001: Flags [F.], seq 7, ack 1944, win 1024, options [nop,nop,TS val 1126541371 ecr 1126526391], length 0
18:47:31.436920 IP 127.0.0.1.65001 > 127.0.0.1.5044: Flags [.], ack 8, win 342, options [nop,nop,TS val 1126541411 ecr 1126541371], length 0
Сервер закрыл соединение, упс.
keepalive тут совсем не причем, поскольку по умолчанию:
148 #define TCP_KEEPALIVE_TIME (120*60*HZ) /* two hours /
149 #define TCP_KEEPALIVE_PROBES 9 / Max of 9 keepalive probes */
150 #define TCP_KEEPALIVE_INTVL (75*HZ)