In Nginx (Connecton-Zeitüberschreitung) können nicht mehr als 3.000 gleichzeitige Anforderungen verarbeitet werden. Wir ändern auch das ulimit auf 20000. Es folgen meine Dateien nginx.conf und 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
Wir verwenden Ubuntu OS mit 4 CPU und 8 GB RAM. Ich sehe kaum CPU- und RAM-Auslastung. Ich feuere gerade die Nginx-Standardseiten-URL an.
events {...}
Blocks ist zumindest für Menschen verwirrend. Wenn es in der Konfiguration tatsächlich so ist, schlage ich vor, es zu korrigieren.Antworten:
Ich empfehle Ihnen dringend, Micro-Caching zu verwenden.
Beispiel: http://www.howtoforge.com/why-you-should-always-use-nginx-with-microcaching http://reviewsignal.com/blog/2014/06/25/40-million-hits-a -day-on-WordPress-using-a-10-vps /
Ich habe kürzlich Micro-Caching auf meiner Box eingerichtet. Mit Apache Benchmark hält es bis zu 50.000 Verbindungen, CPU geht nur auf 6%. Keine Zeitüberschreitung, Seite wird in 1,1 ms bereitgestellt.
Diese Beispielhandbücher oben schlage ich nur für "nur anzeigen" vor, weil sie nicht korrekt sind. In meinem Fall habe ich viele Stunden damit verbracht, dies einzurichten, aber es ist diesen Stress wert :)
quelle
Sie erwähnen, dass Sie das Benutzerdateilimit auf 20000 festgelegt haben, aber nicht wie.
Unter Ubuntu ändern Sie die Hard- und Soft-Limits in
/etc/security/limits.conf
Angenommen, der Benutzer, der Nginx ausführtwww-data
, fügt dies am Ende der Datei hinzu:Wenn Sie überprüfen möchten, wie hoch Ihr aktuelles Limit ist:
quelle