Entries from 2010-03-01 to 1 month

ウェブのアーキテクチャパターン=空間と時間の分割、という話

Twitter でつぶやいたことだけど。 ウェブの本質はメッセージのルーティング(と保存)だし、最重要なアーキテクチャパターンは空間と時間の分割アルゴリズム。マルチコアvs時分割マルチタスク、L3(もしくは携帯のセル)と CSMA等、リバースプロキシとAppサーバ…

XenServer と KVM のネットワークレイテンシ比較

どちらのサーバも、秒間数十の HTTP 接続をハンドリングしている状態で、ping -c 100 で測定した平均値。 ホスト ゲスト XenServer*1 0.138 1.295 KVM*2 0.130 10.590 KVM のゲストだけが遅い。常に遅いっていうんじゃなくて、時々ひっかかる感じ。ping の出…

2010年代には Apache の mpm_prefork とか流行らない (もしくは HTTP keep-alive のメリットとデメリット)

HTTP の持続的接続の功罪について はじめに、HTTP の持続的接続 (keep-alive) のメリットについて。持続的接続を使うメリットは、以下の2点。 TCP 接続の確立にかかる時間の節約*1 TCP の接続と切断に必要な資源 (CPUとネットワーク) の節約 ウェブブラウザ…

linux の TCP_DEFER_ACCEPT (サーバサイド) の挙動について

以前 (2.6.31 まで?) は以下の挙動*1。 最初のペイロードを受信するまで SYN_RECV ステート クライアントの ACK (TCP ハンドシェイクの最後のパケット) を受信していたとしても、SYN-ACK を送り続ける 190 秒たったら、サーバ側は TCP 接続確立失敗と認識 ク…

KVM のI/Oパフォーマンス評価 (ゲストOS = Windows XP)

測定環境等は前の記事と同じ。ゲスト OS が Windows の場合は virtio のブロックデバイスドライバは使えないので、IDE エミュレーションになる。OS からは MWDMA2 (max 16.7MB/s) として見えるが、実際はもっと速い。以下のような感じ。ゲスト OS のライトバ…

KVM (virtio) のI/Oパフォーマンス評価

測定環境は下記のとおり。 Ubuntu 9.10 server AMD Opteron 2218 x2 nVidia MCP55Pro Hitachi HDS72101 ゲストは LVM 上に構築 4並列でのランダムアクセス (16KB) ホスト ゲスト (cache=writethrough) ゲスト (cache=none) Read 207.7 138.3 187.4 Write 13…

Q4M のコンパクションをノンブロッキングにする話

Q4M には、キューファイルを定期的に圧縮するコンパクションという処理がある コンパクションが走ってる間は INSERT も queue_wait も固まる コンパクションの実行時間は、キューに滞留してるデータサイズに依存 *1 第2点のうち、INSERT が固まっちゃうのは…

MySQL や PostgreSQL でトリガーベースの実体化ビューを後から追加する方法 (もしくは無停止での CREATE INDEX)

読み込み>書き込みなデータベースだと、実体化ビュー (materialized view) を使って読み込み速度を上げるってのは有効な手法 ちなみに MySQL や PostgreSQL だと実体化ビューはトリガーを使って書く *1 では、トリガーベースの実体化ビューを後から追加した…