Nginx(Connectonタイムアウト)では、3kを超える同時リクエストを処理できません。また、ulimitを20000に変更します。以下は、nginx.confファイルとsysctl.confファイルです。
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 5000;
use epoll;
# multi_accept on;
} # took it in next line
worker_rlimit_nofile 100000;
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 600;
send_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
reset_timedout_connection on;
types_hash_max_size 2048;
client_header_buffer_size 5k;
open_file_cache max=10000 inactive=30s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
systel.conf
# Increase size of file handles and inode cache
fs.file-max = 2097152
# Do less swapping
vm.swappiness = 10
vm.dirty_ratio = 60
vm.dirty_background_ratio = 2
### GENERAL NETWORK SECURITY OPTIONS ###
# Number of times SYNACKs for passive TCP connection.
net.ipv4.tcp_synack_retries = 2
# Allowed local port range
net.ipv4.ip_local_port_range = 2000 65535
# Protect Against TCP Time-Wait
net.ipv4.tcp_rfc1337 = 1
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 15
# Decrease the time default value for connections to keep alive
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
### TUNING NETWORK PERFORMANCE ###
# Default Socket Receive Buffer
net.core.rmem_default = 31457280
# Maximum Socket Receive Buffer
net.core.rmem_max = 12582912
# Default Socket Send Buffer
net.core.wmem_default = 31457280
# Maximum Socket Send Buffer
net.core.wmem_max = 12582912
# Increase number of incoming connections
net.core.somaxconn = 65536
# Increase number of incoming connections backlog
net.core.netdev_max_backlog = 65536
# Increase the maximum amount of option memory buffers
net.core.optmem_max = 25165824
# Increase the maximum total buffer-space allocatable
# This is measured in units of pages (4096 bytes)
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
# Increase the read-buffer space allocatable
net.ipv4.tcp_rmem = 8192 87380 16777216
net.ipv4.udp_rmem_min = 16384
# Increase the write-buffer-space allocatable
net.ipv4.tcp_wmem = 8192 65536 16777216
net.ipv4.udp_wmem_min = 16384
# Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
4 CPUと8 GB RAMを備えたubuntu OSを使用しています。 CPUがほとんど表示されず、RAM=使用状況です。nginxのデフォルトのページURLを呼び出しているだけです。
マイクロキャッシングを使用することを強くお勧めします。
例: http://www.howtoforge.com/why-you-should-always-use-nginx-with-microcachinghttp://reviewsignal.com/blog/2014/ 06/25/40-million-hits-a-day-on-wordpress-using-a-10-vps /
私は最近、ボックスにマイクロキャッシングをセットアップしました。 Apacheベンチマークを使用すると、最大50 000の接続を保持でき、CPUは6%にしかなりません。タイムアウトなし、ページは1,1msで提供されます。
上記のサンプルマニュアルは、正しいものではないため、「表示のみ」のみを推奨しています。私の場合、これをセットアップするのに何時間も費やしましたが、そのストレスの価値はあります:)
ユーザーファイルの制限を20000に設定したが、方法は設定していないと述べた。
Ubuntuでは、/etc/security/limits.conf
のハード制限とソフト制限を変更します。nginxを実行しているユーザーがwww-data
だとすると、ファイルの最後にこれを追加します。
www-data soft nofile 100000
www-data hard nofile 120000
www-data soft nproc 100000
www-data hard nproc 120000
現在の制限が実行されているかを確認する場合:
su - www-data
ulimit -Hn
ulimit -Sn