オープンソースカンファレンス2007 Tokyo/Fallに行ってきました。(一日目)

<< Webサーバのパフォーマンスチューニング >>
1.チューニングの種類

2.キャッシュの種類

  • Opcodeキャッシュ*1
  • SQLキャッシュ*2
  • HTMLキャッシュ*3

3.Opcodeキャッシュ

4.SQLキャッシュ
  SQLの実行結果を保存 → DBの負荷軽減(DBが遅くない場合、意味がない)
  キャッシュは速さを追求するのがベターなため、メモリへキャッシュするのが望ましい。

  • 実装方法(メモリキャッシュ)
  • APC
    • 個々のサーバで別々にメモリ管理
    • 手軽に実装可能
    • Apacheの再起動により、キャッシュが削除される。(再起動時に大量のキャッシュ作成)
  • memcached
    • 複数サーバのメモリを一括管理
    • PECL::Memcache(複数のmemcacheを一つに見せる。フェールオーバ可能)
    • キャッシュ可能量が、サーバ台数に比例する。
    • サーバの追加・削除がネック(サーバ追加時に、キャッシュにヒットしなくなる。(大量のキャッシュ作成が発生))

5.HTMLキャッシュ
  HTMLそのものをキャッシュ(超高速)
  HTMLの条件作成が大変(GET・SESSIONの値。情報量が少なければ簡単。)
  Smartyのキャッシュ(仕組みが簡単。)
6.効果
  Webサーバを追加した場合とチューニングした場合の比較(目安)。

  • データ量が少ない場合
  • データ量が多い場合(SQLの実行負荷が高いが、Apacheの処理は速い)
    • サーバ追加 → 無意味
    • Opcodeキャッシュ → 意味がない
    • SQLキャッシュ → ヒット率が低ければ、無意味。キャッシュに使用頻度が重要。高負荷なSQLの洗い出し。

7.まとめ

  • APC or memcached
    • 大量のクエリキャッシュができ、かつ複数サーバの場合は、「memcached
  • SQLキャッシュの前に・・・
    • インデックスは使われているか?
    • 無駄なjoinはないか?

8.参考URL


<< DRBD、DRBD Plusによるディザスターリカバリ、超大容量ディスクのバックアップの実際 >>
1.DRBDについて

  • 機能
    • ネットワーク越しのRAID1(リアルタイムミラー(ブロックレベル))
  • ライセンス
  • 主な用途
    • heartbeatと組み合わせて2ノードクラスターを構築(フェールオーバ可能。)
    • 単独でディスクミラーリング(LVMとの併用が効果的。スナップショットを利用したバックアップ。)

2.DRBD Plusについて

  • DRBDとの違い
    • サポートするパーティションサイズ(DRBDは4TB、DRBD Plusは16TBまで)
    • 3ノードミラーリングをサポート(クラスタ(2ノード)+バックアップノードをサポート。DRBDは2ノードまで。)
    • 遠隔バックアップノードをサポート
  • ライセンス
    • 商用

3.DRBD(drbd)の設定ファイル、設定コマンド

  • /etc/drbd.conf
  • drbdadmコマンド
    • 上位レベルの設定管理コマンド
  • drbdsetupコマンド
    • 下位レベルの設定管理コマンド
  • /etc/rc.d/init.d/drbd(/etc/init.d/drbd)

4.heartbeatとの組み合わせ

  • drbdと組み合わせて2ノードクラスターを構築できる
  • ハートビートでクラスターノードを相互監視し、障害検出時にアクティブとスタンバイを切り替える
  • 設定ファイル
    • /etc/ha.d/ha.cf
    • /etc/ha.d/haresources
  • 管理・監視スクリプト

5.DRBD Plusによる3ノードミラーリング

6.DRBD Plus+LVMによる大容量ディスクのバックアップ

  • LVMスナップショット

7.参考URL


<< MySQL Enterprise Serverの実践的簡単ベンチマーク試験 〜はじめの一歩〜 >>
1.性能検証で実施したいこと

  • 開発するシステムに対応した性能検証を実施したい
  • 検証内容は、システム毎に異なる
    • データサイズ
    • データ構造
    • クエリーの種類
    • 検証シナリオ

2.Super Smackとは?

  • 無償で使用できるベンチマークツール
  • MySQLPostgreSQLで使用可能
  • 試験のシナリオは、独自スクリプトで定義
  • 出来ること
    • 簡単なテストデータ作成
    • 任意のクエリを使用して試験可能
    • 負荷の変更が可能
    • 結果の集計

3.Super Smackの使用方法

  • 面白そうなので、近々使ってみたい・・・。

4.JMeter

  • Super Smackで出来ない複雑な検証試験が可能
  • Javaで書かれているので、負荷が高いらしい
  • 使ってみたい

5.参考URL


<< Xen+Windowsで構築するサーバ仮想化環境 >>
1.Virtual Machine Driver Packとは?

  • Xenの完全仮想化で動作するゲストOS用デバイスドライバ
    • 仮想ネットワーク用ドライバ(ギがビット対応)
    • 仮想ディスク用ドライバ(ソフトウェア的SCSI)
  • 高速な準仮想化を利用できないゲストOSを高速化する手法

2.Virtual Machine Driver Packの導入方法

  • SLES10 SP1で「Xen仮想マシンホストサーバ」をインストール
  • 簡単そうなので、是非やってみたい・・・。

3.Virtual Machine Driver Packのパフォーマンス

  • 100MBのファイルをコピーした場合、VMDPのある/なしでコピー速度が約1/4に短縮
  • VMDPありだとネイティブとほぼ同等のパフォーマンスが可能に

4.仮想化環境でのCPU割り当てについて

  • Domain0との切り替えオーバーヘッドが発生するので、2CPUの割り当ての方がパフォーマンスが低下することがある。

(デュアルコアの場合、2CPU割り当てると占有してしまうため。VMwareでも同様のことが発生する。基本的に1VM1CPUで問題ない。)
5.搭載するVMの上限

  • 「コア数*2」くらいが上限
  • 現実的には、上限の6割くらいを搭載する(障害時のVM割り当てが可能なため)

6.参考URL


<< 「出張か〜ねる読書会」Japanese Linux Hackers. Who wrote 2.6.23? >>
Linux Kernelへの日本人の貢献度調査。
2.6.12から2.6.23-rc9までの日本人のコミット数は、2,713件。(4.25%(全体は、65,514件))
Linus Torvalds氏とAndrew Morton氏は、やはり凄い数のコミット数でした。
まだまだ日本人のコミット数が少ないなぁと感じました。
少しでも貢献できるようになりたいと思いました。(いつになることやら・・・。がんばろう>自分。)
1.参考URL

*1:PHPは次のようにソースが実行される。「PHPソースコード→(コンパイルエンジン)→Opcode→(実行エンジン)→HTML」コンパイルエンジンから実行エンジンまでを「Zend Engine」と呼ぶ。

*2:実行エンジンのところでキャッシュされる。

*3:HTML出力のところでキャッシュされる。