かまたま日記3

プログラミングメイン、たまに日常

NGINXのupstream keepaliveをtcpdumpで確認する

TL;DR

UpstreamサーバとNGINXサーバの負荷軽減のために、 upstream keepaliveを導入したときに、実際Keepaliveしてるかをtcpdumpで確認した時の仕方のメモです

登場人物

  • 10.21.2.25: Upstreamサーバ, sinatraアプリが5000でlistenしている
  • 10.21.1.43: NGINXサーバ

nginx.conf

upstream test_server {
  keepalive 5;
  server 10.21.2.25:5000;
}

server {
  listen 80;
  server_name kamatama41.example.net;

  location / {
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_pass http://test_server;
  }
}

動作確認

$ curl -H 'Host: kamatama41.example.net' http://localhost
Powered by Deis
Release unknown on ip-10-21-2-25

tcpdumpで調べてみる

上記のcurlコマンドを打ちながら別のウインドウで見ます。 最初に開いた 56996 ポートがずっと使われてることがわかります。

$ sudo tcpdump -n | grep '10.21.2.25'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens3, link-type EN10MB (Ethernet), capture size 262144 bytes
06:03:13.938970 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [S], seq 434416119, win 26883, options [mss 8961,sackOK,TS val 903841576 ecr 0,nop,wscale 7], length 0
06:03:13.939291 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [S.], seq 3534912600, ack 434416120, win 26847, options [mss 8961,sackOK,TS val 61090501 ecr 903841576,nop,wscale 7], length 0
06:03:13.939306 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 1, win 211, options [nop,nop,TS val 903841576 ecr 61090501], length 0
06:03:13.939328 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 1:76, ack 1, win 211, options [nop,nop,TS val 903841576 ecr 61090501], length 75
06:03:13.939553 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [.], ack 76, win 210, options [nop,nop,TS val 61090501 ecr 903841576], length 0
06:03:13.940954 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 1:223, ack 76, win 210, options [nop,nop,TS val 61090501 ecr 903841576], length 222
06:03:13.940958 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 223, win 219, options [nop,nop,TS val 903841576 ecr 61090501], length 0
06:03:17.044635 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 76:151, ack 223, win 219, options [nop,nop,TS val 903842352 ecr 61090501], length 75
06:03:17.046437 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 223:445, ack 151, win 210, options [nop,nop,TS val 61091278 ecr 903842352], length 222
06:03:17.046452 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 445, win 227, options [nop,nop,TS val 903842353 ecr 61091278], length 0
06:03:21.081645 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [P.], seq 151:226, ack 445, win 227, options [nop,nop,TS val 903843361 ecr 61091278], length 75
06:03:21.083652 IP 10.21.2.25.5000 > 10.21.1.43.56996: Flags [P.], seq 445:667, ack 226, win 210, options [nop,nop,TS val 61092287 ecr 903843361], length 222
06:03:21.083665 IP 10.21.1.43.56996 > 10.21.2.25.5000: Flags [.], ack 667, win 236, options [nop,nop,TS val 903843362 ecr 61092287], length 0