「実」ディスク(スピンドル)ごとに80MB/sの「ランダム読み取り」パフォーマンスを達成しました。 ここに私の発見です。
まず、ユーザーに必要なトラフィック量とサーバーごとに必要なストレージ量を決めます。
すでにRAID5設定があるので、以下のディスク設定のアドバイスをスキップしてもかまいません。
3 * 2TBディスクを使用する専用の1Gbps帯域幅サーバーの例を示します。 最初のディスクは、OSとtmp専用にしておいてください。他の2つのディスクについては、ソフトウェアRAIDを作成することができます(私にとっては、オンボードハードウェアRAIDよりも優れていました)。そうでなければ、独立したディスク上でファイルを等しく分割する必要があります。ディスク共有の読み取り/書き込み負荷を均等に保つことが理想です。ソフトウェアraid-0は最適なオプションです。
nginxのコンファレンス nginxのを使用してパフォーマンスの高いレベルを達成するには2つの方法があります。
にDIRECTIO
AIOを使用します。
directio 512; output_buffers 1 8m;
"このオプションでは、十分な量のRAMが必要です。" 約12-16GBのRAMが必要です。
output_buffers 1つの2メートルIO
ユーザーランド。
BLOCKDEV --setra 4096は/ dev/md0の(または独立したディスクのマウント)「を使用すると、マウントソフトウェアRAID用4-6MBする先読み設定していることを確認してください」
この設定は、最適なシステムファイルのキャッシュを使用し、はるかに少ないラムを必要とする。 約8GBのRAMが必要です。
共通注意事項:
帯域幅スロットルを使用して、使用可能な帯域幅で100sの接続を有効にすることもできます。各ダウンロード接続では、4MBのアクティブRAMが使用されます。
limit_rate_after 2m;
limit_rate 100k;
上記溶液の両方が1K + 3ディスクサーバ上の同時ユーザに容易に拡張します。 1Gbpsの帯域幅があり、各接続が1Mb/psでスロットルされているとします。 読み取りにほとんど影響を与えずにディスク書き込みを最適化するために必要な追加設定があります。
すべて作成マウントosのディスクにアップロードする/ tmpuploadsをマウントします。これは、重い読み取りが行われている間、間欠的な妨害を確実にしない。次に、oflag = directの "dd"コマンドを使用して、/ tmpuploadsからファイルを移動します。
dd if=/tmpuploads/<myfile> of=/raidmount/uploads/<myfile> oflag=direct bs=8196k
のようなものありませんので、真:(あなたがJFS、XFS対対ext2-3上の大きなファイルを削除しようとしたことがありますか?また、カーネルソースを見て、異なるFSドライバが費やすことを、あなたに明らかにしただろうクリティカルセクションでは異なる時間を示し、IO圧力が高い場合には異なる値をとる傾向があります。 –
大きなファイルを削除するのはユースケースではありませんでした。数字がある場合は、それらを示してください。私は私が書いたもので立つ。 –
番号? 「嘘、悪い嘘、そしてベンチマークがある」マーケティング目標のないベンチマークはまだ見ていない。私は私の経験と公開されているLinuxカーネルソースについて話していました。それにもかかわらず、「私はあなたが測定可能な差異を見ることは疑う」という点はばかげている。 –