LoginSignup
16
16

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-10-05

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

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
    こいつらはそんなに意識する必要が無さそう?

16
16
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
16
16