3

Linuxマシン64ビット(centos5.5)、2.83GHz Q9550、6GB RAM、および単一のSATA500GBドライブがあります。

このマシンからはサムネイルのみを提供します。ほとんどの場合、サイズは約10kbで、この時点でサーバーには約700万のサムネイルがあります。私はそれらを/25/25/25/25フォルダーセットアップでセットアップしました。これは私に推奨されました。

平均して、nginxステータスレポートは、約300〜400のアクティブな接続にサービスを提供していることを示しています。

例:

Active connections: 297 
server accepts handled requests
 1975808 1975808 3457352 
Reading: 39 Writing: 8 Waiting: 250 

問題は、このマシンが非常に苦労していて、私のサイトが忙しくなるにつれて遅くなっていることです。負荷は常に約8から9です。

iostatが100%以上のutilを示していることに気づきました。

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.20     1.40 99.80 31.14  1221.56   255.49    11.28   114.14  831.81   7.62  99.84

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.20     0.60 100.80 24.00  1192.00   203.20    11.18   113.77  775.42   8.02 100.04

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.20   314.80 44.80 130.00   598.40  3547.20    23.72   113.76  937.18   5.72 100.02

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     5.40 56.20 110.80   660.80   937.60     9.57   112.37  518.01   5.99 100.04

Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.60    12.40 82.80 41.60  1008.00   432.00    11.58   113.66  852.51   8.04 100.04

以下に、私のnginx構成設定の一部を示します。

worker_processes  6;
worker_connections  4096;

http {
        include                 mime.types;
        default_type            application/octet-stream;
        #access_log             logs/access.log  main;
        sendfile                on;
        #tcp_nopush             on;
        keepalive_timeout       4;
        gzip                    on;
        gzip_http_version       1.1;
        gzip_vary               on;
        gzip_comp_level         2;
        gzip_proxied            any;
        gzip_types              text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
        gzip_buffers            16 8k;
}

私の質問は、RAIDセットアップ、場合によってはSSDに移行する以外に、このマシンをさらに活用するために微調整/調整できるものはありますか?私のようなサーバーは、1秒あたり約300から400以上のアクティブなnginx接続を処理できるはずだと感じています。

4

2 に答える 2

13

上記のnoatimeオプション@nosに加えて、次のことを検討することをお勧めします。

  • nginxでは、set--access_log off;コメントアウトしても何も起こりません。積極的に無効にする必要があります。
  • ワーカープロセスの数を減らします。nginxは、CPUごとに複数のワーカーの恩恵を受けることはありません。
  • tcp_nodelay on;nginxが「ライブ」接続でファイルをより迅速に提供するのに役立ちます。
  • で遊んでみてくださいtcp_nopush。私はそれをオンにするのが最善だと思いましたが、YMMV。
  • if_modified_sinceに設定before; これにより、nginx304 Not Modifiedはコンテンツを予約するのではなく、ヘッダーを送信できるようになります。
  • open_file_cache設定で遊ぶ
  • send_timeoutnginxが古いクライアント接続を解放できるように減らします。

システムの残りの部分について:

  • hdparam設定。オンラインで役立つチュートリアルがたくさんあります。hdparamの調整により、ディスクを最大限に活用できます。
  • パフォーマンス設定を微調整しますsocket
  • タイマーの頻度を減らしてカーネルを再コンパイルします。デフォルトは1000ヘルツです。これは、ビデオを提供するデスクトップマシンには最適ですが、100〜250の値がより適切なサーバーにはそれほど適していません。
  • カップやBluetoothなどのサービスを無効にする

ただし、最高のパフォーマンス向上は、Varnishをnginxサーバーの前に配置し、静的ファイルの提供にnginxではなくVarnishを使用することだと思います。「ホット」ファイルをnginxよりもメモリ内に保持するため、最も多くのサービスを提供するコンテンツにディスクがほとんど/まったく使用されません。

ただし、主なことはすべてを監視することです。内臓を使わずに、サーバーが何を実行しているか、ボトルネックがどこにあるかを把握してください。

于 2011-02-01T08:56:27.157 に答える
0

700万個のファイルのうち、頻繁にアクセスされるファイルはいくつですか。1個あたり10KBを見ている場合、ファイルシステムキャッシュに保存できるのは最大で500,000ファイルのみであり、実行中のプログラムとファイルシステムバッファ(ディレクトリ情報を保存する)用に1GBのRAMが残ります。

頻繁にアクセスするファイルを保持するためにRAMを増やすことができない場合は、より高速なディスクセットアップとより低いレイテンシーが必要になります。15Kドライブに移動すると、ディスクI / O容量が2倍になりますが、SSDドライブに移動するのが最善の策です。

于 2011-02-10T06:30:26.063 に答える