SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【Apache】FollowSymLinks は有効にしたほうがパフォーマンスが上がる

問題

FollowSymLinks って有効にしておいたほうがいいんですか?

答え

こちらに書いてある

http://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks

FollowSymLinks and SymLinksIfOwnerMatch

Options FollowSymLinks を設定していない場合、または Options SymLinksIfOwnerMatch いる場合、Apacheはシンボリックリンクを調査するためにシステムコールを必要とする。(ディレクトリ、ファイルごとに1回発生する)

例えば、以下の設定の場合

DocumentRoot "/www/htdocs"
<Directory "/">
  Options SymLinksIfOwnerMatch
</Directory>

/index.html にリクエストがあると、Apache は lstat(2) を /www, /www/htdocs,  /www/htdocs/index.html に対して実行する。これらのlstatsの結果はキャッシュされない。そのためこの処理はリクエストの都度発生する。

もしシンボリックリンクのチェックを本当に必要としているならば、以下のようにするとよい:

DocumentRoot "/www/htdocs"
<Directory "/">
  Options FollowSymLinks
</Directory>

<Directory "/www/htdocs">
  Options -FollowSymLinks +SymLinksIfOwnerMatch
</Directory>

これで少なくともDocumentRootまではシンボリックリンクのチェックを回避できる。DocumentRoot外への Alias や RewriteRule があれば、同様の設定を追加すること。

シンボリックリンクのチェックをなくして、最大の性能を得るには、あらゆるディレクトリに FollowSymLinks を設定し、SymLinksIfOwnerMatch は設定しないこと。

関連するメモ

コメント