4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerコンテナに対してループバックアドレスから大量にアクセスすると遅くなった話

Posted at

こちらのコマンドの出力結果を見て欲しいのですが

$ wrk -c300 -d30s http://172.31.23.140/
Running 30s test @ http://172.31.23.140/
  2 threads and 300 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    28.79ms   64.06ms   1.11s    89.38%
    Req/Sec    19.25k     3.29k   31.37k    69.57%
  1149710 requests in 30.04s, 0.91GB read
Requests/sec:  38278.54
Transfer/sec:     31.03MB

172.31.23.140はサーバー自身の持っているインタフェースに割り振られたIPアドレスです。
自分自身に向けてwrkコマンドを実行しています。宛先をhttp://127.0.0.1/ に変えると・・・

$ wrk -c300 -d30s http://127.0.0.1/
Running 30s test @ http://127.0.0.1/
  2 threads and 300 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    47.57ms  122.82ms   1.26s    92.45%
    Req/Sec    10.78k     2.04k   19.24k    71.83%
  644420 requests in 30.03s, 522.35MB read
Requests/sec:  21458.50
Transfer/sec:     17.39MB

え?何でこんなに遅くなるの?
プロセスを見比べると・・・

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
17697 root      20   0  269388  10024   3144 S  83.6  0.3   0:24.39 wrk
17668 syslog    20   0   36060   7592   2348 R  55.9  0.2   0:32.85 nginx
17667 syslog    20   0   36160   7572   2348 R  55.6  0.2   0:32.98 nginx
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
17632 root      20   0  437784  77332  19732 S  88.5  2.0   0:09.86 exe
17702 root      20   0  269388  15344   3100 S  45.3  0.4   0:05.10 wrk
17667 syslog    20   0   36068   7600   2348 R  29.3  0.2   0:37.08 nginx
17668 syslog    20   0   35976   7508   2348 R  29.0  0.2   0:37.28 nginx

このPID:17632のexeとは何ぞ?とみると

docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 80

!?
docker-proxyはホストとコンテナ間のポート転送をかけてるプロセスのようです。
ループバックアドレス宛に大量アクセスした場合にだけ、なぜだかこのプロセスがCPUをたくさん使います。
通常、ループバックアドレス宛てにはアクセスしないので困らないかと思いますが、
dockerでの負荷を計測する際はお気をください。(負荷は外からかけろということですね)

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?