Ich hatte kürzlich die Gelegenheit, die Kernel-Parameter zu überprüfen, also notieren Sie sie.
Nachdem wir in den letzten Jahren verschiedene Tuning-Informationen untersucht hatten, schien es gut, Folgendes festzulegen.
Parametername | ||
---|---|---|
fs.file-max | ||
kernel.threads-max | ||
net.core.netdev_max_backlog | Beschreibung Überprüfung erforderlich Obergrenze des Dateideskriptors für das gesamte System Überprüfung erforderlich Obergrenze der Anzahl der Prozesse für das gesamte System Überprüfung erforderlich | Maximale Anzahl von Paketen, die der Kernel in die Warteschlange stellen kann |
net.netfilter.nf_conntrack_max | Bestätigung notwendig | Passen Sie die maximale Anzahl gleichzeitiger Verbindungen mit netfilter an |
vm.swappiness | 0 | Stellen Sie die Leichtigkeit von SWAP ein * Wenn SWAP auch mit 0 ausgeführt wird, wird SWAP ausgeführt. |
Parametername | Wert einstellen | Erläuterung |
---|---|---|
kernel.sysrq | 0 | SysRq(System Anforderungen)Schlüssel deaktivieren |
net.ipv4.conf.all.accept_source_route | 0 | Deaktivieren Sie das Quellrouting |
net.ipv4.conf.all.rp_filter | 1 | rp_filter(reverse path filter)Aktivieren |
net.ipv4.conf.default.rp_filter | 1 | rp_filter(reverse path filter)Aktivieren |
net.ipv4.ip_forward | 0 | IP-Übertragung deaktivieren |
net.ipv4.tcp_syncookies | 1 | tcp_Syncookies aktivieren * SYN FLOOD-Maßnahmen |
Parametername | Wert einstellen | Erläuterung |
---|---|---|
net.core.rmem_max | Bestätigung notwendig | Legen Sie die maximale Größe des TCP-Empfangspuffers fest |
net.core.somaxconn | Bestätigung notwendig | Maximale Länge der Warteschlange zum Speichern von Verbindungsanforderungen, die von TCP-Sockets akzeptiert werden |
net.core.wmem_max | Bestätigung notwendig | Maximale Größe des TCP-Sendepuffers |
net.ipv4.ip_local_port_range | Bestätigung notwendig | TCP/Ändern Sie den IP-Übertragungsportbereich |
net.ipv4.tcp_fin_timeout | 5〜30 | Timeout-Zeit für FIN-Pakete |
net.ipv4.tcp_keepalive_intvl | sec<75 | Intervall zum Senden des TCP-Keepalive-Pakets(Sekunden) |
net.ipv4.tcp_keepalive_time | sec<7200 | Zeit zum Senden des TCP-Keepalive-Pakets(Sekunden) |
net.ipv4.tcp_keepalive_probes | count<9 | Häufigkeit, mit der ein Keepalive-Paket gesendet wird |
net.ipv4.tcp_max_syn_backlog | Bestätigung notwendig | Die Anzahl der Verbindungen, die eine Verbindung halten können, die SYN pro Socket akzeptiert und keine ACK empfängt |
net.ipv4.tcp_max_tw_buckets | Bestätigung notwendig | ZEIT, die gleichzeitig vom System gehalten wird_Maximale Anzahl von WAIT-Buchsen |
net.ipv4.tcp_orphan_retries | Bestätigung notwendig | Anzahl der erneuten Sendevorgänge vor dem Beenden der geschlossenen TCP-Verbindung von hier aus |
net.ipv4.tcp_rfc1337 | 1 | RFC1337 einhalten ※TIME_Wenn RST im WAIT-Status empfangen wird, TIME_Schließen Sie die Steckdose, ohne auf das Ende der Wartezeit zu warten |
net.ipv4.tcp_slow_start_after_idle | 0 | Deaktivieren Sie den langsamen Start, nachdem die Kommunikation inaktiv ist |
net.ipv4.tcp_syn_retries | 3 | Anzahl der Wiederholungsversuche zum Senden von TCP-SYN |
net.ipv4.tcp_tw_reuse | 1 | TIME_WAIT-Verbindung wiederverwenden |
Es gibt eine ganze Reihe von Einstellungselementen für Kernel-Parameter, und es wurde ein Tool entwickelt, das es dem Menschen einfach macht, es zu verwalten.
Bei der Optimierung kann die Optimierung von einem Profil entsprechend dem Servertyp durchgeführt werden, und ich habe die zu optimierenden Elemente anhand dieser Einstellungswerte untersucht.
Profile werden entsprechend dem Servertyp wie folgt erstellt.
Da das Profil typische Kernelparameter für die Optimierung beschreibt, betrachten wir die Kernelparameter in Bezug darauf.
$ ls -l /usr/lib/tuned/
total 56
drwxr-xr-x. 2 root root 4096 Sep 9 2019 balanced
drwxr-xr-x. 2 root root 4096 Sep 9 2019 desktop
-rw-r--r-- 1 root root 14413 Mar 14 2019 functions
drwxr-xr-x. 2 root root 4096 Sep 9 2019 latency-performance
drwxr-xr-x. 2 root root 4096 Sep 9 2019 network-latency
drwxr-xr-x. 2 root root 4096 Sep 9 2019 network-throughput
drwxr-xr-x. 2 root root 4096 Sep 9 2019 powersave
drwxr-xr-x. 2 root root 4096 Sep 9 2019 recommend.d
drwxr-xr-x. 2 root root 4096 Sep 9 2019 throughput-performance
drwxr-xr-x. 2 root root 4096 Sep 9 2019 virtual-guest
drwxr-xr-x. 2 root root 4096 Sep 9 2019 virtual-host
Die Beschreibung "include = Durchsatzleistung" gibt an, dass die Vorlage für "Durchsatzleistung" enthalten ist.
** * Die Kommentarzeile ist ausgeblendet, da nur der eingestellte Wert angezeigt wird **
/usr/lib/tuned/virtual-guest/tuned.conf
[main]
summary=Optimize for running inside a virtual guest
include=throughput-performance
[sysctl]
vm.dirty_ratio = 30
vm.swappiness = 30
Hier ist die mitgelieferte Vorlage "Durchsatzleistung".
Sie können sehen, dass es zusätzlich zu den Kernel-Parametern CPU- und Festplatteneinstellungen enthält.
/usr/lib/tuned/throughput-performance/tuned.conf
[main]
summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads
[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100
[disk]
readahead=>4096
[sysctl]
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
vm.swappiness=10
Ich habe die Kernel-Parameter eingestellt, die als Test eingestellt wurden, und versucht, die tatsächlich eingestellten Werte wie folgt aufzulisten.
Es scheint, dass wenn es den gleichen Einstellungswert wie die eingeschlossene Vorlage gibt, diese zusammengeführt wird, aber da es "vm.swappiness = 30" ist, wird es nach dem Einschließen nicht unbedingt überschrieben.
Parametername | Wert einstellen | Erläuterung |
---|---|---|
vm.dirty_ratio | 40 | Absolute maximale Menge an Systemspeicher, die mit schmutzigen Seiten gefüllt werden kann, bevor sie auf die Festplatte übertragen werden |
vm.swappiness | 30 | Stellen Sie die Leichtigkeit von SWAP ein |
kernel.sched_min_granularity_ns | 10000000 | Mindestplanungszeitraum für Ziele, auf denen eine einzelne Aufgabe ausgeführt wird |
kernel.sched_wakeup_granularity_ns | 15000000 | Preemption-Granularität beim Starten einer Aufgabe |
vm.dirty_background_ratio | 10 | Wenn der Prozentsatz der verschmutzten Seiten diesen Wert erreicht, wird pdflush in einem Hintergrund mit niedriger Priorität exportiert. |
Die Beschreibung "include = Durchsatzleistung" gibt an, dass die Vorlage für "Durchsatzleistung" enthalten ist.
** * Die Kommentarzeile ist ausgeblendet, da nur der eingestellte Wert angezeigt wird **
/usr/lib/tuned/network-throughput/tuned.conf
[main]
summary=Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
include=throughput-performance
[sysctl]
net.ipv4.tcp_rmem="4096 87380 16777216"
net.ipv4.tcp_wmem="4096 16384 16777216"
net.ipv4.udp_mem="3145728 4194304 16777216"
Die enthaltene Vorlage "Durchsatzleistung" wurde bereits im vorherigen Abschnitt beschrieben und wird weggelassen.
Ich habe die Kernel-Parameter eingestellt, die als Test eingestellt wurden, und versucht, die tatsächlich eingestellten Werte wie folgt aufzulisten.
Es scheint, dass wenn es den gleichen Einstellungswert wie die eingeschlossene Vorlage gibt, diese zusammengeführt wird, aber da es "vm.swappiness = 30" ist, wird es nach dem Einschließen nicht unbedingt überschrieben.
Parametername | Wert einstellen | Erläuterung |
---|---|---|
vm.dirty_ratio | 40 | Absolute maximale Menge an Systemspeicher, die mit schmutzigen Seiten gefüllt werden kann, bevor sie auf die Festplatte übertragen werden |
vm.swappiness | 30 | Stellen Sie die Leichtigkeit von SWAP ein |
kernel.sched_min_granularity_ns | 10000000 | Mindestplanungszeitraum für Ziele, auf denen eine einzelne Aufgabe ausgeführt wird |
kernel.sched_wakeup_granularity_ns | 15000000 | Preemption-Granularität beim Starten einer Aufgabe |
vm.dirty_background_ratio | 10 | Wenn der Prozentsatz der verschmutzten Seiten diesen Wert erreicht, wird pdflush in einem Hintergrund mit niedriger Priorität exportiert. |
net.ipv4.tcp_rmem | 4096 87380 16777216 | Empfangspuffergröße des TCP-Sockets(min, default, max) |
net.ipv4.tcp_wmem | 4096 16384 16777216 | Größe des TCP-Socket-Sendepuffers(min, default, max) |
net.ipv4.udp_mem | 3145728 4194304 16777216 | UDP-Socket-Puffergröße(min, default, max) |
vm.swappiness
und vm.dirty_ratio
je nach verwendeter Umgebung zu ändern.Ich denke, es ist unter dem Gesichtspunkt der Sicherheitsleistung sinnvoll, die Kernelparameter für jeden Server richtig einzustellen.
In letzter Zeit nimmt die Popularität von Containertechnologien wie k8s zu, aber dennoch scheint es immer noch viele Möglichkeiten zu geben, Server zu betreiben, nicht nur in der Pre-Cloud, und ich möchte sie entsprechend einstellen.
Recommended Posts