5

ページのリスト、ページナビゲーション構造、ページのコンテンツをディスク上のファイルに保存する PHP で構築された CMS があります。このアプリケーションは、haproxy サーバーの背後にある Apache/php-fpm サーバーのクラスターでホストされています。これらのサーバーは、中央のファイル サーバーから NFS 経由で Apache DocumentRoot ディレクトリをマウントするため、CMS から行われたすべての変更が NFS 共有上のファイルに書き込まれます。

このオプションを使用して NFS 共有をマウントしない限りnoac、加えられた変更がクラスター内のすべてのサーバーに反映されるまでに最大 5 ~ 10 秒かかる場合があることがわかりました。つまり、複数の変更が立て続けに行われると、最終的な変更が以前の変更をまだ受け取っていないサーバーに送信される可能性があるため、最終的な変更によって以前の変更が上書きされることがあります。

ただし、noacマウント オプションを使用すると、訪問者側のコンテンツへのアクセスに 2 ~ 5 秒の遅延が発生します。これはまったく受け入れられません。

NFS 共有上のファイルへの変更をプログラムで強制的にすべてのクライアントに反映させる方法、またはすべてのクライアントにそのファイルのキャッシュをフラッシュさせる方法はありますか?

4

2 に答える 2

2

あなたが望むものを達成するためのNFSレベルのオプションは知りませんが、それらのファイルにアクセスするアプリケーションがあなたの制御下にある場合は、開いているすべてのファイルにO_DIRECTオプションを使用させることができます-これにより、この方法で開かれたファイルのローカルNFSキャッシュがバイパスされます...

備考:

noac2〜5秒の遅延につながると書いています..これは、ネットワークおよび/またはストレージレベルの問題、または「1つのディレクトリ内に非常に多くのファイル/ディレクトリ」を示しているようです...

于 2011-09-27T20:27:54.280 に答える
2

NFS パラメーターを apache ディレクティブとcto組み合わせて、同じ問題を解決しました。パラメータには、あなたが書いたのと同じ症状がありました。EnableMMAP OffEnableSendFile Offnoac

于 2012-05-19T14:16:00.940 に答える