ntp確認

[root@hostname ~]# /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*【remote-ip】    【refid-ip】   3 u   52 1024  377    0.506    0.044   0.059
+【remote-ip】    【refid-ip】   3 u  862 1024  377    0.968    0.140   0.090
+【remote-ip】    【refid-ip】   3 u   51 1024  377    0.939    0.775   0.066

↑ちゃんと動作している状態

remote
 /etc/ntp.confのserverのFQDN
refid
 参照されるNTPサーバのFQDN
FQDN(full qualified domain name)
\*
 現在同期中のNTPサーバ
+
 予備のNTPサーバ


ちなみに、今、

[root@hostname ~]#  /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 【remote-ip】    .INIT.          16 -    - 1024    0    0.000    0.000   0.000
 【remote-ip】    .INIT.          16 -    - 1024    0    0.000    0.000   0.000
 【remote-ip】    .INIT.          16 -    - 1024    0    0.000    0.000   0.000

こんな状態で困ってる(´-ω-`)
前回もこんな感じだった気がするのだが、
どやって解決したっけか?

→さしより、
 ntp再起動でいいっぽい。

vmstat

procs
r:実行待ちプロセス数
 ->CPUの数より多いようならCPUの処理能力不足
b:割り込み不可プロセス数
 ->多くの場合はディスクやネットワークへの入出力

memory
swpd:スワップ量(仮想メモリ量)
free:空き実メモリ量
buff:バッファに使われている実メモリ量
cache:キャッシュとして使われている実メモリ量
 ->free+cacheの合計が、使える実メモリ量

swap
si:ディスクからスワップインしているメモリ量
so:ディスクへスワップしているメモリ量

io
bi:ブロックデバイスからの読み込みブロック数
bo:ブロックデバイスへの書き込みブロック数

system
in:一秒あたりの割り込み回数
cs:一秒あたりのコンテキストスイッチ回数

cpu
us:ユーザCPU使用率
sy:システムCPU使用率
id:CPUアイドル率
wa:IO待ちCPU使用率
st:???

このへん、参考にさせてもらいましたヾ(。・ω・。)
http://piro791.blog.so-net.ne.jp/2008-10-02
http://linuxtips.sblo.jp/article/29251461.html
http://php.y-110.net/wiki/index.php?%A5%B5%A1%BC%A5%D0%BF%C7%C3%C7%A1%A7vmstat

負荷試験

最近、久々に負荷試験をやる機会があったので、
備忘録的な感じヾ(。・ω・。)
jemeterで負荷試験。
今回は、webアプリケーションの機能追加のためのやつー。

                                                    • -

1、シナリオを決める。
・・・あんまし、やったことない(´-ω-`)
ユーザの動きを想定して、いろいろ決めた方がよろしいんだけど、
とりあえず省略。

2、想定PVを割り出す。
スループットを出すため。

3、アプリケーションの実装
アプリケーションの負荷試験の場合は、
実際にリリースするアプリ(に近いもの)を使うけど、
メインがアプリでない場合は、
負荷試験の対象外のミドルウェアAPIを利用すると
迷惑がかかる場合が多いので
単純なのをつくりますヾ(。・ω・。)

4、サーバ、ミドルウェアの準備
jmeter動かすサーバも用意する

5、データの準備
せっせとコピーしたりつくったりφ(.. )

                                                    • -

で、やっとjmeter

                                                    • -

6、ローカルにjmeter入れる。
※テスト計画はGUIでやった方が簡単ラクチンなので、
 GUIで作ったjmxファイルをサーバにぽいする。

7、jmeterの起動

[nashuaki@hostname ~]$ ${JMETER_HOME}/jmeter

8、テスト計画〜スレッドグループの作成

テスト計画 > 追加 > Threads(Users) > スレッドグループ

「Ramp-Up期間(秒)/スレッド数」ごとに1スレッド作成する。

今回はこの設定。
・スレッド数:100
・Ramp-Up期間(秒):10
・ループ回数:無限

9、テスト計画〜HTTPリクエストの設定をする

スレッドグループ > 追加 > HTTPリクエスト

負荷試験を行うhttpリクエストの穴埋めφ(.. )

リクエストを送るパラメータのとこは、

${__StringFromFile(${JMETER_HOME}/file.txt,,,)}

とかで外部ファイルを指定したり、

${__Random(1,10,)}

とかでランダム値(1~10)を指定できたりする。
他にもいっぱい関数的なのが用意されてるみたい。
http://jakarta.apache.org/jmeter/usermanual/functions.html

10、テスト計画〜タイマーの設定をする

スレッドグループ > 追加 > タイマ >定数スループットタイマ

ここで
「ターゲットスループット(サンプル数/ミリ秒)」
とか書かれてるけど、
正しくは、
「ターゲットスループット(サンプル数/分)」
らしい。
間違うのもどうかと思うけど、分単位って(´-ω-`)

想定リクエストを
100req/seq
とするなら、
100req * 3(ピーク時) * 1.5 / 60(seq)
とかにします、うちは。
1.5は初めて負荷試験やったときに
リリース時には想定をこえてたっていう嫌な思い出があるので(´-ω-`)
「Calculate Throughput based on」は
「all active threads in current thread group」
にしときました。

11、テスト計画〜リスナー
・・・を設定したいとこだけど、
これすると落ちちゃったりするので、
とりあえず見送り(´□`。)

12、jmeterの実行

[root@stress-server ~]$ ${JMETER_HOME}/bin/jmeter -t ${JMETER_HOME}/test.jmx -n

これだと実行ユーザがログアウトしたりすると
終了したりするので、

[root@stress-server ~]$ nohup ${JMETER_HOME}/bin/jmeter -t ${JMETER_HOME}/test.jmx -n &

的な感じで実行ユーザがいなくなっても
継続して実行できるようにする。

13、結果を取得して考察する
負荷をかけるサーバでは
vmstatやuptimeの値を継続して取得できるようにしておく。

                                                    • -

がんばるγ(▽´ )ツヾ( `▽)ゞ

viのvisual mode

普段はemacs派な自分だけど、
viのvisual modeがすてきすぎて、時々vi。

で、
いっっっっっっっつも忘れてしまうのでめもε=(。・д・。)

・ビジュアルモードで編集する

Ctrl-v

短形選択が可能になるの(´∀`●)

・短形挿入

Ctrl-I

入力してEscキーをおすと、、、、
あら不思議(´∀`●)
選択したとこに一括挿入γ(▽´ )ツヾ( `▽)ゞ

・短形コピー

y

・短形ペースト

p

・短形削除

d

・短形置換

r

すてきすぎるγ(▽´ )ツヾ( `▽)ゞ

apachectlいろいろ

インストール済みのモジュールを表示する

[nashuaki@hostname ~]$ $APACHE_HOME/bin/apachectl -l

apacheのバージョンを確認する

[nashuaki@hostname ~]$ $APACHE_HOME/bin/apachectl -v

syntaxをチェックする

[nashuaki@hostname ~]$ $APACHE_HOME/bin/apachectl -t

いい感じで再起動

[nashuaki@hostname ~]$ $APACHE_HOME/bin/apachectl graceful

macの画面共有を便利にする

Mac-Macどうしのリモート操作には
デフォルトで入ってる、画面共有を使ってます。

ちょっとわかりにくい場所にあったりする↓

/System/Library/CoreServices/Screen Sharing.app

で、あまりにも使いづらいのでカスタマイズ。

画面共有のツールバーをカスタマイズする

[nashuaki:/Users/nashuaki]$ defaults write com.apple.ScreenSharing 'NSToolbar Configuration ControlToolbar' -dict-add 'TB Item Identifiers' '(Scale,Control,Share,Curtain,Capture,FullScreen,GetClipboard,SendClipboard,Quality)'

Command+tabを画面共有.app上で無効にする

[nashuaki:/Users/nashuaki]$ defaults write com.apple.ScreenSharing DoNotSendSystemKeys -bool true

(spacesで別view使ってるから、今はfalseにしてます)

ほんとは1度つないだホスト名とかを記憶して
リストで表示してくれるようにしたいんだけど、
いろんなとこで紹介されてる、

[nashuaki:/Users/nashuaki]$ defaults write com.apple.ScreenSharing ShowBonjourBrowser_Debug 1

こんな感じじゃだめだった(´ω`。)グスン
OS 10.6.xじゃできないっぽい??

でも、あまりにも不便なのでなんか見つけてみせるヾ(。`Д´。)ノ

vmstatに時間を表示させる〜その2:バッファリングしない〜

http://d.hatena.ne.jp/nashuaki/20110418/1303133841
これの続き。

[nashuaki@hostname ~]$ vmstat 1 | awk '{print strftime("%H:%M:%S"), $0}'

これでvmstatに時間を付与して出力するのには成功したけど、
バッファリングされちゃって
ファイルにリダイレクトさせるとうまいこといかなかった件。

コメントで、
fflush()
なる関数が存在することを教えていただきましたヾ(。・ω・。)

結果、

[nashuaki@hostname ~]$ vmstat 1 | awk '{print strftime("%H:%M:%S"), $0}{fflush()}'

こんな感じで、
ファイルにリダイレクトさせても、
バッファリングされない!
わーいγ(▽´ )ツヾ( `▽)ゞ

awk.....便利だねー(/ω・\) チロ