Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

statファミリ-のメモと、カーネルチューニング

More than 3 years have passed since last update.

調査をするときに使うが、毎回忘れてしまうので自分用にメモ

statファミリーまとめ

dstat

美しい! 目で見るならこれ。
最も役に立つ参考サイト:http://qiita.com/harukasan/items/b18e484662943d834901

vmstat

メモリやCPUを見る時に使う。

iostat

ディスクIOを見るときに使う。

netstat

ネットワークの状態を見るときに使う。

カーネルチューニングとKVS設定

net.core.somaxconn

TCPのmax connection数。
参考サイト:http://d.hatena.ne.jp/tetsuyai/20111220/1324466655

例えばmemcacheやRedis等のKVSを使うときは、memcachedのtcp_backlogや、Redisのmaxclientsの数値以上にあげたほうがいい。
Redis はソースコード中に listen バックログの値を511と記述されてるので、それ以上引き上げる場合はコードをいじって再コンパイルしないとダメ。
net.core.somaxconn を引き上げたほうがいいかどうかは、netstat -s をやって "XYZ times the listen queue of a socket overflowed" みたいな行を見ればいい。
listen backlogがオーバーフローしている場合は、この数値が高くなる。

net.ipv4.tcp_keepalive_time

  • net.ipv4.tcp_keepalive_time
  • net.ipv4.tcp_fin_timeout CLOSING状態でFINに対するACKを受信すると、そのままTIME-WAITとなる。FIN-WAIT-2状態でFINを受信すると、ACKを返信し、TIME-WAITとなる。 短くするとTIME_WAITを減らす効果がある。 netstat -na | grep CLOSE_WAIT | wc -l で、CLOSE_WAITがどのくらいあるかを確認して調整すると良い。

net.ipv4.ip_local_port_range

ポートレンジを増やす。これを増やさないと大量の接続は捌けないので、みんなよく設定する値。
よく調べるのは、tcpのコネクション数を調べる下のコマンド

netstat -an | grep tcp | wc -l

この数値と、cat /proc/sys/net/ip4/ip_local_port_range をニラメッコすると、ポート枯渇していないかが確認できる。

色んな設定

  • net.ipv4.tcp_window_scaling = 1 # TCPウィンドウスケーリングを有効にする
  • net.ipv4.tcp_moderate_rcvbuf=1 # 受信バッファ・サイズの自動チューニングを有効にする
  • net.core.netdev_max_backlog=2000 # カーネルの処理速度よりも早くキューが詰まれる場合の、最大個数
  • net.core.tcp_max_listen_backlog=2000 # SYN→ACKまでの状態のコネクション(listenソケット)をいくつ保持するか
  • tcp_mem # tcpに割り当てていいメモリ上限を当てる。高いほうがいい。

  • net.ipv4.tcp_wmem

  • net.ipv4.tcp_rmem

  • net.core.wmem_max

  • net.core.rmem_max
    こいつらはそんなに意識する必要が無さそう?

peutes
Scala/JavaScript/PHP/Python/Erlang/C++/MVC/Java/Go/Perl 他:MySQL/memcached/Redis/emacs/IntelliJ/GCS/Gatling
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away