Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Orte, an denen Nginx optimiert werden kann

Einführung in Orte, an denen Nginx optimiert werden kann

不言
不言nach vorne
2018-10-25 17:06:022733Durchsuche

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

SYN

und 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

如果套接字由本端要求关闭,这个参数决定了它保持在FIN­WAIT­2状态的时间。对端可以出错并永远不关 闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是, 即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN­ WAIT­2的危 险性比FIN­WAIT­1要小,因为它最多只能吃掉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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen