Heim > Artikel > Backend-Entwicklung > Einführung in Orte, an denen Nginx optimiert werden kann
Dieser Artikel bietet Ihnen eine Einführung in die Orte, an denen Nginx optimiert werden kann. Ich hoffe, dass er für Freunde in Not hilfreich ist.
worker_processes 8;
nginx Prozessnummer, es wird empfohlen, sie entsprechend der Anzahl der CPU anzugeben, normalerweise deren Vielfaches.
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
weist jedem Prozess CPU zu. Im obigen Beispiel 8 Die Der Prozess ist 8CPU zugeordnet. Natürlich können Sie mehrere schreiben oder einen Prozess mehreren CPU.
worker_rlimit_nofile 102400;
Dieser Befehl bezieht sich auf die maximale Anzahl von Dateideskriptoren, die von einem nginx-Prozess geöffnet werden. Der theoretische Wert sollte die maximale Anzahl sein offene Dateien ( ulimit n) wird durch die Anzahl der nginx Prozesse geteilt, aber nginx weist Anfragen zu. Es ist nicht so einheitlich, daher ist es besser, es mit dem Wert von ulimit n konsistent zu halten.
use epoll;
Verwendet selbstverständlich das I/O-Modell von epoll.
worker_connections 102400;
Die maximale Anzahl von Verbindungen, die von jedem Prozess zugelassen werden. Theoretisch beträgt die maximale Anzahl von Verbindungen für jeden nginx worker_processes*worker_connections.
keepalive_timeout 60;
keepaliveTimeout.
client_header_buffer_size 4k;
Die Puffergröße des Client-Anfrage-Headers. Dies kann entsprechend der Paging-Größe Ihres Systems festgelegt werden. Im Allgemeinen wird die Header-Größe einer Anfrage nicht überschreiten 1k , Da jedoch das allgemeine System-Paging größer als 1k ist, wird die Paging-Größe hier festgelegt. Die Paging-Größe kann mit dem Befehl getconf PAGESIZE ermittelt werden.
open_file_cache max=102400 inactive=20s;
Dies gibt den Cache für geöffnete Dateien an. Er ist standardmäßig nicht aktiviert. Gibt die Anzahl der Caches an Es wird empfohlen, mit der Anzahl der geöffneten Dateien übereinzustimmen. inaktiv bezieht sich darauf, wie lange die Datei nicht angefordert wurde, bevor der Cache gelöscht wird.
open_file_cache_valid 30s;Dies bezieht sich darauf, wie oft die zwischengespeicherten gültigen Informationen überprüft werden sollen.
open_file_cache_min_uses 1;open_file_cache
Die minimale Anzahl der Verwendungen der Datei innerhalb der inaktiven Parameterzeit, wenn diese Zahl vorhanden ist überschritten, Der Dateideskriptor ist immer im Cache geöffnet. Wenn eine Datei nicht innerhalb der
inaktiven-Zeit verwendet wird, wird sie verwendet ENTFERNT. Optimierung der Kernel-Parameter
net.ipv4.tcp_max_tw_buckets = 6000
Anzahl der Wartezeiten
, der Standardwert ist 180000. net.ipv4.ip_local_port_range = 1024 65000
Der Portbereich, den das System öffnen darf.
net.ipv4.tcp_tw_recycle = 1
Aktivieren Sie Wartezeitschnelles Recycling.
net.ipv4.tcp_tw_reuse = 1
Wiederverwendung aktivieren. Ermöglicht die Wiederverwendung von TIMEWAIT-Sockets für neue TCP-Verbindungen.
net.ipv4.tcp_syncookies = 1
Aktivieren Sie SYN-Cookies, wenn erscheint 🎜>SYN Wenn Sie darauf warten, dass die Warteschlange überläuft, aktivieren Sie Cookies, um damit umzugehen.
net.core.somaxconn = 262144
WebAnwendungzuhören Die Das Backlog der Funktion gibt uns standardmäßig die Kernel-Parameter von net.core.somaxconn begrenzt auf 128, während nginxdefinesdefiniertNGX_LISTEN_BACKLOGstandardmäßig 511, daher ist es notwendig, diesen Wert anzupassen.
net.core.netdev_max_backlog = 262144
Wenn jede Netzwerkschnittstelle Pakete schneller empfängt, als der Kernel diese Pakete verarbeiten kann, ist die maximale Anzahl Anzahl der Pakete, die an die Warteschlange gesendet werden dürfen.
net.ipv4.tcp_max_orphans = 262144
Die maximale Anzahl von TCP Der Socket ist keinem Benutzerdatei-Handle zugeordnet. Wenn diese Zahl überschritten wird, wird die verwaiste Verbindung sofort zurückgesetzt und eine Warnmeldung ausgegeben. Diese Grenze dient nur dazu, einfache DoS-Angriffe zu verhindern. Sie können sich nicht zu sehr darauf verlassen oder diesen Wert künstlich verringern ( Wenn der Speicher erhöht wird).
net.ipv4.tcp_max_syn_backlog = 262144
Der Maximalwert der aufgezeichneten Verbindungsanfragen, die noch keine Client-Bestätigungsinformationen erhalten haben. Für Systeme mit 128M Speicher ist der Standardwert 1024 und für Systeme mit kleinem Speicher ist er 128.
net.ipv4.tcp_timestamps = 0
Zeitstempel können das Umbrechen von Sequenznummern vermeiden. Ein 1Gbps-Link wird definitiv auf eine zuvor verwendete Sequenznummer stoßen. Der Zeitstempel ermöglicht es dem Kernel, solche Pakete zu akzeptieren. Es muss hier ausgeschaltet werden. net.ipv4.tcp_synack_retries = 1Um die Verbindung zum Peer zu öffnen, muss der Kernel ein senden
SYNund kommt mit einem
ACK als Antwort auf das vorherige SYN. Dies ist der zweite Handschlag beim sogenannten Drei-Wege-Handschlag. Diese Einstellung bestimmt die Anzahl der gesendeten SYN+ACK-Pakete, bevor der Kernel die Verbindung abbricht. net.ipv4.tcp_syn_retries = 1 在内核放弃建立连接之前发送SYN包的数量。 net.ipv4.tcp_fin_timeout = 1 如果套接字由本端要求关闭,这个参数决定了它保持在FINWAIT2状态的时间。对端可以出错并永远不关 闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是, 即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN WAIT2的危 险性比FINWAIT1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。 net.ipv4.tcp_keepalive_time = 30 当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。 一个完整的内核优化配置 net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
Das obige ist der detaillierte Inhalt vonEinführung in Orte, an denen Nginx optimiert werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!