パフォーマンスチューニング」タグアーカイブ

Nginx で SPDY !

SPDY (スピーディー) は、Googleが提唱し、現在標準化作業が進められている通信プロトコルです。
HTTP の次期バージョン HTTP 2.0 のベースとなる技術の有力候補として SPDY が挙げられてたりもするので要注目ですね。
ブラウザが対応していないと恩恵に預かれませんが、Chrome や Firefox, Opera の最新版であれば問題なく利用できます。IE ? なにそれ?おいしいの?

Wikipedia から、抜粋して引用すると

SPDYは、Googleが提唱し、現在標準化作業が進められている通信プロトコルの一つ。2012年8月現在の最新バージョンはSPDY Protocol – Draft 3(一般には「SPDYv3」と称されることが多い)。

基本的には既存のHTTPを拡張しダウンロードの高速化を目指したプロトコルで、TLS接続の上にセッション層を追加し、単一のSPDYセッションで複数のリクエストを送受信することを可能にしている。それ以外にも以下のような機能がある。

サーバヒント
クライアント側がコンテンツをダウンロードする際に、サーバ側からコンテンツの展開に必要と思われる付属データを提案するもの[3]。
サーバプッシュ
サーバ側からクライアントに対しデータをプッシュ配信する機能。

プロトコル的にはTLSの拡張仕様の一つであるNext Protocol Negotiation(NPN)をベースにしているため、SPDYの使用にはHTTPSの通信が可能な環境であることが必須となる。

2012年現在は独立したプロトコルとして一部のWebブラウザやWebサーバで実装が進んでいるほか、IETFのドラフトも提出されており、標準化作業が進んでいる。さらにHTTPの新バージョンとして現在検討が進められている「HTTP 2.0」のベース技術の一つとしてSPDYが採用されるのではないかという観測もあり、Web技術者の間で注目を集めつつある。

サーバプッシュが可能という点で、類似するプロトコルであるWebSocketと比較されることも多い。

via. SPDY – Wikipedia

そんな SPDY を Nginx 1.3.x に対応させるためのパッチも提供されてます。
http://nginx.org/patches/spdy/README.txt
んっ? WordPress ユーザーには見慣れた会社名が書いてありますね。

This work has been sponsored by Automattic (http://automattic.com/).

さすが WordPress.com で Nginx を使い倒している Automattic さんや!

では、実際に CentOS 6 上の Nginx で SPDY を使う手順について解説します。
続きを読む

WordPress on HHVM

Facebook が開発したPHPを超高速で実行する仮想マシン HipHop VM で WordPress が動く!ってことで AWS で試してみました。
詳細は、以下で

最初 t1.micro インスタンス( 613 MiB メモリ )で試したんですが、以下のメッセージが表示されて起動しません。

# /usr/bin/hhvm --user root --config /etc/hhvm.hdf
tcmalloc: large alloc 1210089472 bytes == (nil) @ 
tcmalloc: large alloc 1210089472 bytes == (nil) @ 
could not allocate 1210089471 bytes for translation cache

メモリ不足とのことなので m1.small インスタンス( 1.7 GiB メモリ )で試してみました。
続きを読む

Amazon ElastiCache

WordPress で Amazon ElastiCache を利用する

手軽に memcached サーバを使うことができる Amazon ElastiCache を WordPress で使用するための方法を解説します。
# なんか、あまり日本語での説明とか見つけられなかったんで

WordPress には Object Cache って機能があって、複雑なデータベースクエリなどの生成に負荷のかかるデータをキャッシュすることができます。
ただ、この Object Cache でキャッシュされるデータは永続的な物ではなく、キャッシュされたデータはすべてのページをまたいで使用される訳ではありません。
このキャッシュされたデータを永続的に使用するための特殊なプラグイン(正確には、ドロップイン)は、いくつか提供されています。
今回は、それらのプラグインの中で memcached にキャッシュデータを貯めておくことができる Memcached Object Cache を使います。

以下 Amazon ElastiCache の設定方法から、Memcached Object Cache の導入方法まで
続きを読む

WPTouch テーマ切替

WPTouch と Nginx リバースプロキシ

WPTouch テーマ切替WordPress.com でやってるメモブログの方にも書いたんですが、WordPress プラグイン WPtouch を使用しているサイトで Nginx リバースプロキシを利用する際の Tips です。
あっちの方に書いたのは、ほんとにメモ程度なんでコードだけで分かりにくいかなぁと思いまして、こっちで詳細に説明します。

WPTouch や Ktai Style なんかを使ってクライアントのユーザーエージェント(UA)ごとに表示を変えている場合、Nginx でリバースプロキシを使用すると具合が良くありません。
普通に設定した場合、同一URLへのアクセスがあった際は UA に関係なくキャッシュされてしまいます。
この辺を回避するために、Nginx の設定ファイルで UA を判断して proxy_cache_key を変更するってのは、わりかし良く行われている作戦だと思います。
参照: WordPress サイトに nginx を導入する : dogmap.jp
ですが、これだと WP Touch にある Mobile Thema を ON/OFF するボタンに対応できません。
そんで、どうするかと言うと
続きを読む

percona

Percona MySQL をさくらのVPSで使う

percona別にさくらのVPSじゃなくても良いんですが

MySQL の派生プロダクトとして Percona MySQL というモノがあります。
これは、MySQL Performance Blog を書いてる Percona 社が提供してくれているプロダクトで、MySQL からの公式ビルドには含まれていない人気のあるパッチを追加したものです。
高負荷時の InnoDB のパフォーマンスを向上してくれるパッチなんかも含まれます。

Percona 社さんが yum のリポジトリを提供してくれてるのでインストールも簡単です。
とりあえず、どんなもんか確かめてみたかったので、さくらのVPS 512 (CentOS 64bit) にインストールして、MySQL 用のベンチマークソフト super-smack で、ベンチを取ってみました。
続きを読む

WordPress サイトに nginx を導入する

nginxWordPress サイトにリバースプロキシサーバとして nginx を導入する際の tips。
nginx (エンジンエックス)とは、オープンソースの軽量高性能なHTTPサーバ且つリバースプロキシです。

従来の HTTP サーバのようにリクエストの処理をスレッドで行わず、非同期のアーキテクチャーを用いるイベントループモデルのサーバです、
そのため、多数のリクエストが着た場合に実行スタックをコピーする必要があるスレッドモデルのサーバと違い、1プロセスでリクエストを処理できるため、メモリ消費量が極端に少なくてすむという利点があります。
# 話題の node.js もイベントループモデルですね。

さて、そんな nginx を WordPress サイトに導入する際の tips です。
続きを読む

varnish

WordPress サイトに Varnish を導入する

varnishWordPress サイトにリバースプロキシサーバ Varnish を導入する際の tips。
リバースプロキシって何?って人は、以下のURL辺りを参考にしてください。
Insider's Computer Dictionary [リバースProxy] − @IT

通常は複数台あるバックエンドのサーバを取りまとめるロードバランサー的な使われ方をします。
しかし、一台しかサーバが無い場合でも、フロントにリバースプロキシを置いてリクエストを受けて、バックエンドで動作している Web サーバから受け取った動的コンテンツをキャッシュさせて負荷を軽減させることもできます。
この構成を取っておけば、負荷が増えてサーバがきつくなったときに、わりと手軽にアプリケーションサーバを分離できますね。
# 個人ブログで、そこまで行くとは思いませんが
続きを読む