先日、Apache を 1.3 から 2.2 にアップグレードしたので、前から気になっていた mod_xsendfile を試してみました。
その効果は絶大! :thumb_up:
xpWiki では、ページに添付されたファイルをはじめ、アイコン画像、JavaScript、CSS などが、PHP を通して出力されているのですが、これらのうち大きなサイズの添付ファイルがダウンロードされる場合に、PHPがI/O待ちになります。
通常はそんなに問題はないのですが、ボットが襲来した時など処理待ちプロセスが増え続けて、どうにもこうにもならなくなってしまうことが結構頻繁に起こっていました。
そんな時のために、monit で監視して異常な負荷になった場合に Apache を自動で再起動させていたのですが、mod_xsendfile に対応させてみたところ、高負荷になることは今のところ起こらなくなりました。 :ok:
ただ、mod_xsendfile は、"Content-Encording" ヘッダを除去してしまうので、gzip な CSS や JavaScript を出力することができません。
xpWiki では、積極的に gzip での出力を行っているので、mod_xsendfile 0.11 をちょこっといじって、ヘッダに "X-Sendfile-Use-CE: Yes" を出力することで、"Content-Encording" ヘッダの除去を行わないようにしてみました。
apxs -cia mod_xsendfile.c
で普通にインストールできます。
あとは、http.conf や .htaccess などで
<IfModule mod_xsendfile.c>
XSendFile on
XSendFilePath "/html/hogehoge"
XSendFilePath "/trustpath/hogehoge"
</IfModule>
などとすればOK。(XSendFilePath は、読み込み可能にするパスをそれぞれ適切に設定する。)
mod_xsendfile 対応版の HypCommonFunc と xpWiki は次のバージョンで。 :shy:
| ぺージ情報 | |
|---|---|
| ぺージ名 : | nao-pon/blog/2010-05-19 |
| ページ別名 : | 未設定 |
| ページオーナー : | nao-pon |
| 閲覧可 | |
| グループ : | すべての訪問者 |
| ユーザー : | すべての訪問者 |
| 編集可 | |
| グループ : | なし |
| ユーザー : | ゲスト |