Tuesday, May 26, 2015

ssコマンドでLinuxのネットワーク/ソケット情報を確認する

Simon Cunningham Statistics https://www.flickr.com/photos/lendingmemo/11442225495/in/photolist-ir7oZV-9xYZkM-61WLzv-9pGYip-hwogqv-auRNAo-coQiom-brLxbf-4hF9py-hBvduD-5fiUgr-dh3UaM-mCmc9F-4UDhhd-jtL5H-dZ8UiN-7brDUA-7xxdeW-79HeYz-aYCKfi-bZzcNC-hGGvQ-59GgGA-9AGN76-7bwQZZ-sbyyLB-21mK7-Gv6uE-5DR5ms-hFzDph-d4RKu7-5Ver7g-bPXwZr-k6wgv2-QW9iS-spJJYV-fVPKrv-5mSbBG-dv8BRY-7a61Lq-8vqgQJ-4HjjHj-5GjuWN-5hebe6-7b7yoy-7b7ynC-6WoTyH-75cZGz-75cZER-e2U6XT/
ss - socket statisticsコマンドについて調べました。
ssコマンドは、Linuxのネットワーク/ソケット情報を確認するコマンドのひとつです。
カーネルから直接情報を取得するようで、場合によってはnetstatコマンドより高速に結果を取得することが出来ます。
以下、使いかたの例をメモしました。

ソケットのサマリ
# ss -s
Total: 280 (kernel 317)
TCP:   533 (estab 70, closed 438, orphaned 1, synrecv 0, timewait 437/0), ports 333

Transport Total     IP        IPv6
*   317       -         -
RAW   0         0         0
UDP   18        10        8
TCP   95        89        6
INET   113       99        14
FRAG   0         0         0

開いているポートの一覧
# ss -pl
State      Recv-Q Send-Q                                                                                                   Local Address:Port                                                                                                       Peer Address:Port
LISTEN     0      1000                                                                                                         127.0.0.1:1919                                                                                                                  *:*        users:(("haproxy",5392,8))
LISTEN     0      511                                                                                                                  *:6399                                                                                                                  *:*        users:(("redis-server",994,5))

各プロトコルの一覧
# ss -a
# ss -at //TCPソケット
# ss -au //UDPソケット
# ss -xa //raw socket
# ss -ua //unix domian socket

TCPステータス一覧をフィルタ
# ss -t4 state [フィルタ名]
フィルタ一覧
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, closing
複合的なフィルタ
all – for all the states
bucket – for TCP minisockets (TIME-WAIT|SYN-RECV)
big – all except for minisockets
connected – not closed and not listening
synchronized – connected and not SYN-SENT

HTTPコネクション一覧
# ss -io '( dport = :http or sport = :http )'
State      Recv-Q Send-Q      Local Address:Port          Peer Address:Port
ESTAB      0      0          100.120.130.140:http        219.126.105.93:40193
  ts sack cubic wscale:6,7 rto:224 rtt:24.875/2.75 ato:40 cwnd:10 send 4.5Mbps rcv_rtt:32 rcv_space:14480
ESTAB      0      0          100.120.130.140:http         49.98.132.191:59430
  sack cubic wscale:6,7 rto:271 rtt:71.75/17.25 ato:40 cwnd:10 send 1.6Mbps rcv_space:14600
ESTAB      0      0          100.120.130.140:http         49.98.157.170:1726
  ts sack cubic wscale:10,7 rto:218 rtt:18/6.75 ato:40 cwnd:10 send 6.4Mbps rcv_rtt:18 rcv_space:14480
ESTAB      0      0          100.120.130.140:http         126.21.130.62:59925
  ts sack cubic wscale:5,7 rto:558 rtt:136.25/97.75 ato:40 cwnd:11 send 819.0Kbps rcv_space:14480
ESTAB      0      0          100.120.130.140:http       119.105.216.106:57352
rto, rttについては、高コネクション環境では重要な指標になります。
以下の資料が参考になります。



参考文献)
Linux SS Utility To Investigate Sockets / Network Connections
http://www.cyberciti.biz/files/ss.html
ウェブ広告のインフラについて(第5回) LinuxのTCP再送アルゴリズムとモバイルネットワークの相性の悪さ | 多脚.com
http://takyaku.com/?p=859

Wednesday, May 20, 2015

Padrinoを使って『金融機関コード(銀行コード)検索』というサイトを作りました

RubyのフレームワークPadrinoを使って『金融機関コード(銀行コード)検索』というWebサイトを作りました。
金融機関のコードや銀行コード、または銀行の住所などを探すためのサイトです。

RubyとPadrino(Sinatra)の勉強に・・・と思って作ってみましたが。コードの量はRubyよりもHTML+CSSのほうが多くなりました。えてしてそんなものですよね。
Padrinoについてのまとまったドキュメントとして、おもに公式サイトと、QiitaのPadrinoタグ(https://qiita.com/tags/padrino)を利用しました。
そもそも、Sinatraがシンプルなので、チュートリアル的なドキュメントを2、3見たら、だいたい書ける感じでした。以前作ったWebサイトはRailsを使っていて、そのときにひさしぶりにRailsを使ったら、かなり仕様変更していてyak shavingなところがあったりしたのですが。何もわからないところから、すんなり入れるSinatraは楽でいいですね。