私はApacheの仮想ホストを持っています:
<VirtualHost IP_WAN:80>
ServerName test.localnet
DocumentRoot /srv/http/localnet/test/trunk/docroot
<Directory /srv/http/localnet/test/trunk/docroot>
Options Indexes
</Directory>
</VirtualHost>
パーティション /srv は NFS3 でマウントされたファイルシステムです。
172.16.0.2:/srv /srv nfs nodev 0 0
サーバー側では、次によってエクスポートされます。
/srv 172.16.0.0/255.255.255.240(rw,sync,no_subtree_check,no_root_squash)
ディレクトリ /srv/http/localnet/test/trunk は、/srv/http/localnet/test/exports/trunk-v2 への絶対シンボリック リンクです。
/srv/http/localnet/test/exports で、SVN ツリー (trunk-v1、trunk-v2、trunk-v3) をエクスポートしました。
Apache にhttp://test.localnetを要求すると、200 OK と /srv/http/localnet/test/exports/trunk-v2/docroot からのインデックスが提供されます
しかし:
シンボリックリンク /srv/http/localnet/test/trunk を削除し、別のバージョンに新しいものを作成すると (ln -s /srv/http/localnet/test/exports/trunk-v3 /srv/http/localnet/test/trunk )、Apacheは私に404 Not Foundを与えます。約数秒/分かかり、その後すべてが正常に戻ります。
この状態で ls -la /srv/http/localnet/test/trunk/ を実行すると、すぐに元に戻ります。NFS キャッシュに問題があると思いますが、問題が発生する正確な場所とそれを防ぐ方法を見つけることができません。シンボリックリンクは前のものと同じ inode を占有し、両方のターゲット (古いものと新しいもの) が存在します。
サーバー側では、 /srv パーティションを次のようにマウントしています。
/dev/xvda7 on /srv type xfs (rw,nosuid,nodev)
このパラメーターも使用します。
echo 262144 >/proc/sys/net/core/rmem_max
echo 262144 >/proc/sys/net/core/rmem_default
echo 262144 >/proc/sys/net/core/wmem_max
echo 262144 >/proc/sys/net/core/wmem_default
echo noop >/sys/block/xvda7/queue/scheduler
echo 0 >/sys/block/xvda7/queue/read_ahead_kb
また、ネットワーク インターフェイスの MTU を 9000 まで調整しようとしていますが、成功しません。
誰が知っていますか、何が問題なのですか?ディレクトリ構造 (ls) を「手動で」更新するまで、apache がシンボリックリンクを見つけられないのはなぜですか? どうもありがとう
オンドラ