LABO/linuxシステムまわりで使うコマンド †一行メモ †
mallocでエラーにならずにOOM killされる事への対策? †/etc/sysctl.conf に次を追加し、オーバーコミットしないようにして(100と2)、もし OOMになったときは カーネルパニック(1)を起こさせ、リブート(30秒後)させる。OOMだからといっていつもカーネルパニックが 生じる訳ではないようだ。 vm.overcommit_ratio=100 vm.overcommit_memory=2 vm.panic_on_oom = 1 kernel.panic = 30 この設定ファイルは sysctl -p で読み込まれる。 又は、sysctl -w vm.overcommit_ratio=100 などとして設定してもよい(リブートでもとに戻る)。 /etc/crontab に次の行を書いておくと、起動時(@reboot)に、右のコマンドが実行される。 @reboot root (dmesg | head -10; tail -50 /var/log/messages) | mail -s"`hostname` rebooted" root iperf3 通信帯域速度測定 †サーバーを起動 compute-0-1$ iperf3 -s [-p ポート番号,default 5201] サーバーホストを指定して、クライアントを起動。測定される compute-0-2$ iperf3 -c compute-0-1 [-p ポート番号,default 5201] [-t 秒数,default 10] 短時間の測定を異なるマシン間でする場合 $ for node in 2 3 4 ; do echo "== compute-0-$node -> 0-1 =="; ssh compute-0-$node iperf3 -c compute-0-1; done netstat †netstat #オプション無しは ESTBLISHEDのみを表示する #-a をつけると、接続まち、接続まちでないもの、すべてのソケットを表示 #-t をつけるとTCPを表示 #-u をつけるとUDPを表示 #-n 名前解決をしない netstat -tanp # TCP LISTENをみる netstat -r #ルーティングテーブルを表示する #-n 名前解決をしない netstat -i #インターフェース毎の統計情報を表示 #(パケット衝突数など含まれる) メモリの状態を調べる †free -m #メモリの空きをみる。-mはMB単位の指定。 vmstat [sec] #スワップin,outの回数をみる。secがあると秒毎に出力される。 ハードディスクの状態を調べる †sar †ブロックデバイスのアクティビティを表示(デバイス毎にデバイス名で、今日の11時 から11時半までの範囲で) sar -dp -s 11:00:00 -e 11:30:00 #-dpの代わりに -bを指定すると全デバイスの合計が表示される。 #過去のアクティビティを表示するには -f /var/log/sa/sa11 などとファイルを指定する。 #ファイルは1日毎にローテンションされているので、どのファイルを指定すればよいかは #ファイルスタンプで判断する。 #表示で見るべきところ # rd_sec/s: 1秒当たりの、読込み量(単位 block, 1 block = 1 sector = 512 byte) # wr_sec/s: 1秒当たりの、書込み量(単位 block, 1 block = 1 sector = 512 byte) # %util: デバイスの帯域利用率(RAIDアレイでは最大値は100%を超え) # RAIDのときは物理デバイスの帯域利用率を見るとよい #他 # tps: 1秒当たりの、I/Oリクエスト回数 # avgrq-sz: 発行されたリクエスト(デバイスに対する操作)の平均サイズ(単位block) # avgqu-sz: 発行されたリクエストの平均キュー長(単位はblockか?) # await: リクエストの平均処理時間(待ち時間も含、単位はmsec) # svctm: (現在、無意味な値) 関連) sar -dp 5 | grep md124\\\|DEV #数字を引数にするとN秒毎にアクティビティを表示 #grepで適当にデバイスを選択表示 ブロックデバイス以外に、以下も表示できる。 -q ロードアベレージを表示 -W スワップin/outされたページ数を表示 HDD WD20EFPXのI/Oスペック 内部転送速度は最大で 180MB/sとのことである。alliumで実際にファイルを読込ませて 調べてみると、最大約148MB/sであった。書き込みは最大58MB/s程度のようだ。 (c.f. SATA 6Gbpsだと 750MB/s) dd if=/dev/zero of=afile.hoge bs=1000000000 count=50 #50Gのファイル作成 この状態で sar -dp 5 をすると書き込み性能を知れる。 c.f. cygwinの端末で $ powershell -Command "& {Get-Counter -Counter '\LogicalDisk(_Total)\Disk Read Bytes/sec' -Continuous}" をすると似たことが出来るようだ(これは読み込み性能)。
nfsstat [-s|-c] #NFSの統計情報を表示。-s/-cはサーバ/クライアントのみ blkid #HDDのUUIDなどを表示 findmnt #マウントのツリーを出力 lsof †sudo lsof -i #プロセスが使用しているポートを表示する sudo lsof -i:80 #80ポートを使用しているプログラムを表示する /etc/shadowファイルの編集 †vipw -s sysctl †$ sysctl -a #カーネルパラメータを表示する $ sysctl net.ipv4.icmp_echo_ignore_broadcasts #個々の表示 $ sysctl -a | grep 'net.ipv4.icmp_echo_ignore_broadcasts\|net.ipv4.icmp_ignore_bogus_error_responses\|¥ net.ipv4.tcp_syncookies\|net.ipv4.conf.all.accept_redirects' $ sysctl -a | grep 'net.ipv[46].\(ip_forward\|conf.all.accept_source_route\)' $ sysctl -a 2> /dev/null | grep 'net.ipv[46].\(icmp_echo_ignore_broadcasts\|¥ icmp_ignore_bogus_error_responses\|tcp_syncookies\|conf.all.accept_redirects\)' /etc/sysctl.conf に起動時に読み込まれる設定ファイルあり。起動後は sysctl -p で再読込みができるらしい。 個々の書き換えは、see man iptables †$ sudo iptables [-t filter] -L [チェイン名] -v -n -t filter はデフォルト。他に natなど -v 設定全体を省略しない -n IPやフラグなどを文字にしない -L 設定内容の表示。チェイン名を指定できる # CentOSの場合 /etc/sysconfig/iptablesに設定されるテーブル・チェインの記載があるらしい。 # Ubuntuの場合 どこ? |