ウェブ性能チューニング①

WEB3層システム

クライアントサーバシステムにおいて、大きく3段階に分けてそれぞれに担当するシステムを分割させたアーキテクチャのこと。

・プレゼンテーション層
-> ブラウザに表示させる。HTTPリクエストを処理する
・アプリケーション層
-> ビジネスロジックを受け持つ。
・データベース層
-> データベースを管理する。

最近流行のワード

・リバースプロキシ
特定のサーバの代理として、そのサーバへの要求を中継するプロキシサーバ。
CDN
コンテンツデリバリネットワーク
webコンテンツを配信するために最適化されたネットワークのこと。
akamai
・Kyoto Tycoon
NoSQL。キャッシュサーバ。
永続化可能。
TokyoTyrantの開発者と同じ。

ACID特性

トランザクション処理に求められる特性。

・A (atomicity 原子性)
変更はすべて実行されるかすべて実行されないかのどちらかでないといけない
・C (consistency 整合性)
変更処理のあとでデータの整合性がとれていて矛盾がないこと
・I (isolation 独立性)
ひとかたまりの変更処理は、他の変更処理と独立していて、並列実行された場合も結果は同じになること
・D (durability 永続性)
変更処理はユーザに通知された時点で永続化されることを保証する。

性能評価指標

・レスポンスタイム
リクエストを出してから最初の反応があるまでの時間
・ターンアラウンドタイム
リクエストに対する応答が完全に終了するまでの時間
スループット
単位時間あたりの処理量
サイトの処理能力を表す
・リソース指標
CPU、メモリ、HDD、ネットワーク流量などの指標
SLA
ServiceLevelAgreement レスポンスタイムやスループットの指標を決める

Apache Jmeter

性能測定ツール
Webサーバに対して負荷をかけたり、JDBCを経由してデータベースサーバに負荷をかけたりして、各種の測定を行うツールです。

Jmeter 使い方

jmeter/bin
jmeter.bat を実行

プロキシを使ったキャプチャ
ワークベンチから

スレッドグループ
スレッド数 ->複合的な接続をシミュレートする
Ramp-Up期間 -> していたスレッドをすべて立ち上げるのに何秒かかるか
ループ回数 -> スレッドを何ループさせるか
スケジューラ -> テストを定時実行させたい場合

ロジックコントローラー
一度だけ実行させるコントローラ
ループコントローラ
ランダム順序コントローラ
インタリーブコントローラ
シンプルコントローラ
Ifコントローラ
ForEachコントローラ

設定エレメント
CSV date set config
HTTP クッキーマネージャ
HTTPヘッダマネージャ
JDBC Connection Configraton

タイマ
定数タイマ
一様乱数タイマ
ガウス乱数タイマ

サンプラー
HTTPリクエス
JDBCリクエス

リスナー
統計レポート
結果を表で表示
結果をツリーで表示 Response headerがみれる
グラフ表示 スループットがみれる

一台では十分なテストが出来ない場合

jmeter-serverコマンド
GUIを実行しているクライアントからの要求でリモート実行させることが出来る