• このエントリーをはてなブックマークに追加

【CentOS7】ssは当面使わないほうが良さそう

  • このエントリーをはてなブックマークに追加

ssss
zaco muraです。

最近自分の周りでもCentOS7を使う(かどうか悩んでいる)人が増えてきましたが、やはりネットワーク周りのところで苦労しているようです。
今回はそのあたりで大きな変更点の1つである、ssコマンドについて書きます。

ssとは

netstatの後継という位置付けのようです。
主な用途としては、Listenしているポートやルーティングテーブルの確認でしょうか。自分は主に前者の使い方です。
なお、このssコマンド、このあたりの記事に書かれているようにまだバグが多いようですが、
「udpがtcpに見えるくらいならまぁいっか」と思って使っていました。
ところが、使っていくうちに別の問題に気付きました。

ssのバグらしき事象

Listenしているソケットの数が増えたときに、無限ループに陥る。
(自分が使っているサーバでは、NICにIPをaliasでたくさん付けてプロセスを多重起動します。)
実際の動作としてはこんな感じ。

$ ss -atunp
Netid  State      Recv-Q Send-Q     Local Address:Port       Peer Address:Port 
tcp    UNCONN     0      0         IPアドレス1:53                    *:*     
tcp    UNCONN     0      0         IPアドレス2:53                    *:*     
tcp    UNCONN     0      0         IPアドレス3:53                    *:*  
・・・・・・
tcp    UNCONN     0      0         IPアドレス1:53                    *:*   ←1番上と同じ
tcp    UNCONN     0      0         IPアドレス2:53                    *:*     
tcp    UNCONN     0      0         IPアドレス3:53                    *:*  
・・・・・・
tcp    UNCONN     0      0         IPアドレス1:53                    *:*   ←1番上と同じ
tcp    UNCONN     0      0         IPアドレス2:53                    *:*     
tcp    UNCONN     0      0         IPアドレス3:53                    *:* 
・・・・・・ 

環境

OS : CentOS Linux release 7.1.1503 (Core)
iproute : iproute-3.10.0-21.el7.x86_64
ss : ss utility, iproute2-ss130716

背景

きっかけは設定確認のためにserverspecによるチェックを実行したときでした。
本来であれば数分で実行が完了しますが、何分経っても終わりません。
それどころか、「サーバの負荷が高くなっている」という連絡があり、見てみると確かに負荷が高い。
serverspecの出力を見ると、Listenしているポートのチェック(つまり、ssの部分)で止まっていました。

まとめ

郷に入っては郷に従え、ということでssコマンドを使っていましたが、当面はnet-toolsを入れたほうが良いかもしれません。

スポンサーリンク
Sponsords Link
  • このエントリーをはてなブックマークに追加

ZacoDesign

スポンサーリンク
Sponsords Link