LoginSignup
8
12

More than 5 years have passed since last update.

性能試験をやったときに出てきた用語のメモ

Posted at

・レスポンス
リクエストへの応答。

レスポンスの遅さが原因の場合、CPUを増やしても意味が無い。
レスポンスが速いとスループットも上が、ディスクI/Oなどの物理的に速くするのは限界がある。

・IOPS
1秒当たりの読み書き回数

・スループット
単位時間あたりの処理量

・キャッシュヒット率
処理回数のうち、キャッシュで処理できたものの割合。
キャッシュが使われているか確認できる。
100%に近ければよいとされる。
ただし、バッチ処理の際はあまり使用しないデータも含まれており、
キャッシュ使用率が低いこともある。

・ダーティ
変更がまだ反映(書き込み)されていないデータのこと。
「コピーの方は変更されているが、元データには反映されていない」という状態を
「ダーティである」という。
ダーティなデータがキャッシュに貯まると、I/Oをさばけなくなる。

・ 待ち行列
分布/サービスタイム/並列度
利用率高い ⇒ 待ち時間増える
利用率低いのに、待ち時間が長い ⇒ 到着時間がバラバラになっている可能性がある。

・ プロファイラ
関数の呼び出し回数や、時間がかかっている関数などが得られる。
環境によって使用するツールが異なる。(lunuxはperf)
pstack連打でも同じような結果が得られる。

● ネットワークの解析

○ 用語
・ホップ数
通信・ネットワークにおいて、通信相手に到達するまでに経由する中継設備の数のこと

○ ポイント
・データの量より、回数で問題が起こることが多い
・各ネットワーク間の距離が遠いケースが多い
・ホップが多い
⇒ 個々の機器で掛かる時間が少なくても、全体では大きくなる
⇒ 手が開いている処理が中継器が出たりする。

● 実際の調査の流れ
○ ポイント
・情報取得のタイミングは合わせる
・ツールを使用する : Oracle Real User Experience Insight

■ パフォーマンスチューニング
何かを変えると他の何かも変わる。

○ 再利用
一度得たデータをキープし、DBへの問い合わせを減らすなど。
・コネクションプール
・キープアライブ
・PreparedStatement

○ 集約処理(ピギーバック)
隣り合ったブロックにまとめて書く。

ログのまとめ書き。
大量処理になり、問題を起こすことも。

○ スケールアウトとスケールアップ
・スケールアウト
サーバを増やす。

・スケールアップ
サーバの性能を上げる

○ 参照頻度の高いデータは近くに置く

○ 同期
・同期処理
相手の処理が終わるまで待つ。

・非同期処理(ASYNC)
相手の処理が終わるのを待たない。
相手の処理中に別の処理を行う。

・Ajax(Asynchronous JavaScript + XML)
ユーザが入力している間に、サーバと通信して情報や画面を表示させる。
ページ全体をロードせず、処理結果を得られる。

○ ロック
ロックを使うと、ソースコードがシンプルになる。
ロックを使うと、他の処理が止まってしまう。
大量の処理でロックを使うと、トラブルが発生する。

・楽観的ロック
テーブルにもたせている更新タイムスタンプや、
更新フラグを比較してロックする。
競合が判明した場合、ロールバックする。
他者は そうそう同じリソースに変更を加えないだろう、という楽観的な視点に基づく。

・悲観ロック
通常のロック。
他者が同じリソースに頻繁に変更を加えること前提の悲観的視点での排他制御。
更新系において、参照時に参照リソースにロックをかけ、
新しいリソースの挿入完了時にロックをはずす手法。

・BKL(Big Kernel Lock) : Linuxのロック
・synchronized : javaのロックの一つ

○ ジャンボフレーム
イーサネットの1パケットの制限を1500バイトに大きくしたパケットに関する技術。

○ ロードバランサ(負荷分散)
サーバの状況をチェックし、負荷(接続数)の低い危機に割り振る

○ アフィニティー(バインド)
関係付ける、限定する
局所性(偏り)を優先する技術。
同じプロセスは同じCPUコアで動かすなど。

ラウンドロビンの反対に位置する技術。

一部のCPUだけ負荷が上がることもあり、vmstatだとわからない。
mpstatで各CPUの処理を得ると有効。

Stickyセッション
プロセスのクッキー情報などからセッションごとに分ける。
同一セッションの場合、前回と同じサーバに送るようにする。

○ Copy On Write
上書き時にコピー。
上書きが発生したにコピーを行う手法。
直ちにコピーを行わないことで(上書きされるまでの間)
無駄な容量やプロセスが発生しない。

○ カラムナデータベース
列指向のデータベース。
列方向にデータをまとめている。
特定の列の値をまとめて処理しやすい。

テーブルから商品名と価格だけを抜き出す処理などは非常に得意。
逆に、特定の行を抜き出して更新したり削除したりするのは苦手。

■ パフォーマンステスト
● パフォーマンステスト作成の考慮事項
テストには色々と時間が掛かる。
○ 試験環境

○ 監視設定

○ スクリプト
1週間かかっても1本もできないこともある。

○ テストの実施
1回で30分から1時間
データのまとめなども含めると一日3回ぐらいしかできない。

○ 評価、ボトルネックの切り分け
ボトルネックの切り分けができず、リリースができないこともある。

○ レポートの作成
グラフ化や文書化などかなり時間が掛かる。

○ テスト環境のリセット
DBのリカバリを行う仕組みが必要。

○ シンクタイム
ユーザーが思考する時間。

● パフォーマンステスト
リリース判定を行うテスト。
・スループット
・レスポンスタイム
・同時利用数

● 限界テスト(最低、最大)
・最低
目標の水準に達しているかどうかを確認するテスト。
厳密なリソースの計測は行わず、想定の処理件数がさばけているか確認。

・最大
目標の水準を超えた負荷が来た場合に、システムが耐えらる上限や、その際の現象を把握するテスト。

● 縮退テスト
一部のシステムを停止させた状態で行うテスト。
想定されたパフォーマンスが出るか確認する。
エラーログやパフォーマンスをスループット、
挙動の変化をレスポンスタイムなどを見る。

● 障害テスト
障害を発生させて、その際のシステムの挙動を確認。
エラーログやスループット、レスポンスタイムなどを見る。

● 基盤パフォーマンステスト
アプリと基盤を切り離して行う基盤のテスト。
帯域幅や、スループット、同時利用数、同時コネクション数などを計測。

● アプリ単体パフォーマンステスト

● 耐久テスト
長時間の稼働を行う障害テストの一種。
エラーや、メモリリーク、ログの過剰蓄積がないか確認する。

・ビジー率
全体時間に対してどれくらいの時間ビジー(稼働)しているか

・使用率
全容量に対して、どれくらいの容量を使用しているか

■ 仮想化
● ホストOS型
OSに仮想ソフトをインストールする。

● ハイパーバイザ
ハードウェアのBIOSから直接、仮想ソフト(ハイパーバイザ)を起動する。
ハードウェアがないため、動作速度を抑えられる?
・完全仮想化
ゲストOSからの特権命令をハイパーバイザの機能で変換するタイプ。

・準仮想化
専用のゲストOSを使用するため、変換処理が必要ない。
高速だが、対応するOSが限られる。

○ CPUの単位
・ソケット
物理的なCPUの単位。

・コア
CPUのパーツを仕事をする部分を分けたもの。

・スレッド
実行単位。
ハイパースレッディングという技術により、
コアの待機中の時間を有効活用し、2つの仕事を並行に実行し、1つのコアを2つのスレッドに分割できる。
処理能力が1.2倍程向上する。

○ オーバーコミットとそれを実現させる技術
実際の物理リソースのキャパシティを超える仮想リソースを仮想マシンに割り当てること
CPUスケジューラがVMからの要求に応じて、VMに割り当てるCPUを切り替えているので、リソースを超えても割り当てることが可能になる。
オーバーコミットによってパフォーマンスに問題を来すこともある。

・メモリバルーニング(回収)
メモリの動的追加。

仮想マシンのメモリ割り当てを増減させる場合、
通常は仮想マシンを停止した上で行わなければならない。
仮想マシンを起動したまま、
動的にメモリの割当を変更するするのがメモリバルーニング。

・メモリ圧縮
・スワップ

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12