私たちのサイトは現在、数千万のPVと数百万の同時実行を処理できます。私はphp+nginxの最適化について少し経験があるので、いくつかの記録を残すために書き留めておきます。
1.TCP ソケットと Unix ソケット
Unix ソケットは、TCP ソケットよりも優れたパフォーマンスを提供します (I/O データの読み取りと書き込みが少なく、コンテキストの切り替えが少ないため)。
upstream backend { server unix:/var/run/fastcgi.sock; # server 127.0.0.1:8080; }
2. access_log を無効にするか最適化します
大量のトラフィックでアクセスすると、アクセス ログに大量のディスクの読み書きが発生します。ログ記録が必要ない場合は、無効にすることができます。
access_log off; log_not_found off;
またはバッファリングをオンにします
access_log /var/log/nginx/access.log main buffer=32k;
3. Gzip をオンにします
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\.";
5. ワーカープロセスを最適化します
nginx はプロセスに対してマルチスレッドではなくマルチプロセスです関連 次のように構成を最適化する必要があります。
まず、サーバー上のプロセッサの数を見てください。
fastcgi_buffers 256 16k; fastcgi_buffer_size 128k; fastcgi_connect_timeout 3s; fastcgi_send_timeout 120s; fastcgi_read_timeout 120s; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k;
次にworker_processesを設定し、プロセス数が取得したプロセッサ数になります。 worker_connections は、各プロセスが開くことができる接続の最大数であり、増やすことができます。こちらが参考になります。
りー