Home > お知らせ | 開発裏話 > Linuxで帯域監視

Linuxで帯域監視

テストでちょっとサイズの大きいデータを沢山扱うサーバーを複数台作成しなければならなかったので、それぞれのサーバーでコネクションあたりの帯域を制限して、「各サーバのNICの帯域監視」を行って、空いているサーバーに振り分けよう!ということになりました。

さて、Linuxでネットワークを経由しての帯域監視をするには・・・あれ?あんまりいいソフトないな。SNMPとかはあるのですが、UDPだから必要なときに確実にデータとるにはちょっと不安だし・・・、sshでつないでゴニョゴニョするのは無意味な転送が多すぎるから、毎秒(または数秒おき)やるのはちょっと・・。

「欲しいのはTCP接続で、/proc/net/devのデータの差を単純に取得したい、しかも余計な転送量喰わない軽いアプリ」なんですが、そんな都合のいいものがみつかりませんでした。

そんな訳で簡単な帯域計測サーバーをつくってみました。次のような仕様です。

「監視したいサーバーで帯域計測サーバーをデーモン起動」

「監視側からアクセスしたら直近の転送量(/sec)が返ってくる」

これだけ。結構あっさりできました。

走らせてみて気付いたのですが、監視側からサーバー接続を1秒おきに繰り返させて、サーバー側でnetstat・・・・

うわ、TIME_WAITが山ほどいる・・

・・当然ですね、TCPだし。

LInuxはTCPコネクション開放が60秒後なので、毎秒やったら、TIME_WAITが60個たまる訳です。TCPの仕様上当然といえば当然なのですが、

無駄なので消す方法ないですかね〜。誰か知っている方いらっしゃったら教えてください。

もし、同様なものをお探しな方いらっしゃいましたら、コメントいれといてください。ソース公開します。適当すぎて怒られそうですが・・

ちなみに検証環境はRHEL5、CentOS5(ほとんど一緒ですね)、開発言語はCです。

Comments:0

Comment Form

Trackbacks:0

Trackback URL for this entry
http://dev.tapweb.co.jp/2010/08/228/trackback
Listed below are links to weblogs that reference
Linuxで帯域監視 from tap dev blog

Home > お知らせ | 開発裏話 > Linuxで帯域監視

Search
Feeds

Return to page top