mysqlエラー(99)

2013年3月27日

tcp_tw_recycle

tcp_tw_recycleはTIME_WAIT状態にあるコネクションを高速にリサイクルできるようにするためのフラグ。CentOSではデフォルトでは無効になっていたので、有効に。

tcp_fin_timeout
これはFIN_WAIT2の状態にあるコネクションの保有時間。デフォルトでは60秒

上記の ip_local_port_range もあわせて/etc/sysctl.confの末尾にこれらを追記
/etc/sysctl.conf

net.ipv4.ip_local_port_range = 32768 65000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
そしてsysctl -p で反映。

mysqlで(99)なエラーが出たよ、といって困っている人の掲示板でのやり取り(英語)

http://lists.mysql.com/mysql/204830

mysqlで(99)ならここ見ろよ、なポインタ(英語)

http://www.mysqlperformanceblog.com/2006/11/12/are-php-persistent-connections-evil/

TIME_WAITが長すぎて困ってるの、という人が教えてgoo

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2211552

そもそもnetstatとかTIME_WAITとかよくわからん、という人はこちら

http://www.atmarkit.co.jp/fwin2k/win2ktips/234netstat/netstat.html

FreeBSDの場合も含めて、さらっとスマートに説明してくれてるブログ

http://www.sato-bb.net/archive/tech/tune/time_waitmsl/

TUXとかいうサーバの話だけど、途中で「TCPコネクションの飽和を防ぐ」話があった

http://itpro.nikkeibp.co.jp/article/COLUMN/20051115/224580/

== 以下追記 ==

id:kdaibaさんからアドバイスもらったので追記しておきます。

net.ipv4.tcp_tw_recycleを有効にすると、条件によっては、TCPセッションが脹れなくなるトラブルが発生することもありうる、とのこと。

カーネル設定いじる前に以下のブログを読んで、よく理解しておいた方がよさそうです。

http://d.hatena.ne.jp/nice20/20070521#p1

http://d.hatena.ne.jp/nice20/20070517

http://ya.maya.st/d/200804c.html

台場先生、ありがとございました。

Have your say