У меня есть 2 балансировщика нагрузки перед 4 другими серверными машинами, выполняющими примерно 5-6000 запросов в секунду. Я заметил, что каждые несколько минут один из балансировщиков нагрузки получает тайм-аут подключения к одной из серверных машин. В процентном отношении к общему количеству подключений это, конечно, очень низкая частота отказов, однако они находятся в одном центре обработки данных, и я не понимаю, почему я когда-либо получаю тайм-аут подключения (60 секунд, fwiw).
Мне удалось получить захват пакетов на одной из серверных машин, когда это происходит, и похоже, что пакеты SYN-ACK не достигают балансировщика нагрузки.
19:33:51.023518 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14377140 ecr 0,nop,wscale 7], length 0
19:33:51.023534 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15334821 ecr 14377140,nop,wscale 7], length 0
19:33:54.026705 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14377440 ecr 0,nop,wscale 7], length 0
19:33:54.026712 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335121 ecr 14377140,nop,wscale 7], length 0
19:33:54.620425 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335181 ecr 14377140,nop,wscale 7], length 0
19:34:00.026709 IP 10.36.213.2.58011 > 10.36.213.36.8005: Flags [S], seq 1726133855, win 5840, options [mss 1460,sackOK,TS val 14378040 ecr 0,nop,wscale 7], length 0
19:34:00.026726 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335721 ecr 14377140,nop,wscale 7], length 0
19:34:00.620436 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15335781 ecr 14377140,nop,wscale 7], length 0
19:34:12.620430 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15336981 ecr 14377140,nop,wscale 7], length 0
19:34:36.820432 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15339401 ecr 14377140,nop,wscale 7], length 0
19:35:24.820433 IP 10.36.213.36.8005 > 10.36.213.2.58011: Flags [S.], seq 806746037, ack 1726133856, win 5792, options [mss 1460,sackOK,TS val 15344201 ecr 14377140,nop,wscale 7], length 0
В этом захвате 10.36.213.2 - это балансировщик нагрузки, а 10.36.213.36 - сервер.
Я предполагаю, что вероятность того, что все эти пакеты просто случайно отброшены, мала ... более вероятно, что они каким-то образом отклоняются. Итак, вопрос: как мне узнать, почему эти пакеты не проходят?
Я видел аналогичную проблему (если это была Windows), когда серверы выполняли какую-то глупую автоматическую настройку размеров TCP-пакетов, а Cisco Load Ballancers не поддерживали больший размер пакетов, поэтому они отклоняли их. Я понятия не имею, поддерживает ли * nix такую глупость, но если это так, это может быть проблемой.