{"id":35920,"date":"2019-10-31T22:07:35","date_gmt":"2019-10-31T19:07:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\/"},"modified":"2019-10-31T22:07:35","modified_gmt":"2019-10-31T19:07:35","slug":"nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","title":{"rendered":"Konfiguration von Linux-Kerneinstellungen zur Optimierung von PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Konfiguration von Linux-Kerneinstellungen zur Optimierung von PostgreSQL\" src=\"\/wp-content\/uploads\/2019\/07\/a28458ff50cdc517aad71b47adab6eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/> Die optimale Leistung von PostgreSQL h\u00e4ngt von den richtig definierten Parametern des Betriebssystems ab. Schlecht konfigurierte Kernel-Parameter k\u00f6nnen die Leistung des Datenbankservers beeintr\u00e4chtigen. Daher ist es unbedingt erforderlich, dass diese Parameter entsprechend dem Datenbankserver und seiner Arbeitslast konfiguriert werden. In diesem Beitrag er\u00f6rtern wir einige wichtige Kernel-Parameter von Linux, die die Leistung des Datenbankservers beeinflussen k\u00f6nnen, sowie M\u00f6glichkeiten zu deren Konfiguration.<\/p>\n<h2>SHMMAX \/ SHMALL<\/h2>\n<p>\n<b>SHMMAX<\/b> ist ein Kernel-Parameter, der verwendet wird, um die maximale Gr\u00f6\u00dfe eines Segments des gemeinsam genutzten Speichers (shared memory) zu bestimmen, die ein Linux-Prozess zuweisen kann. Bis Version 9.2 verwendete PostgreSQL System V (SysV), f\u00fcr das eine Konfiguration von SHMMAX erforderlich ist. Nach 9.2 wechselte PostgreSQL zu POSIX-gemeinsamem Speicher. Daher wird jetzt weniger Bytes an System V-gemeinsamem Speicher ben\u00f6tigt.<\/p>\n<p>Bis Version 9.3 war SHMMAX der wichtigste Kernel-Parameter. Der Wert von SHMMAX wird in Bytes festgelegt.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n\u00c4hnlich, <b>SHMALL<\/b> ist ein weiterer Kernel-Parameter, der verwendet wird, um zu bestimmen, <br \/>\nden gesamten verf\u00fcgbaren Seitenbedarf an gemeinsam genutztem Speicher (shared memory). Um die aktuellen Werte von SHMMAX, SHMALL oder SHMMIN anzuzeigen, verwenden Sie den Befehl <i>ipcs<\/i>.<\/p>\n<p><b>SHM* Details \u2014 Linux<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -lm\n\n------ Gemeinsamer Speichergrenzen --------\nmax Anzahl der Segmente = 4096\nmax Segmentgr\u00f6\u00dfe (Kbytes) = 1073741824\nmax gesamter gemeinsam genutzter Speicher (Kbytes) = 17179869184\nmin Segmentgr\u00f6\u00dfe (Bytes) = 1<\/code><\/pre>\n<p>\n<b>SHM* Details \u2014 MacOS X<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -M\nIPC-Status von  am Thu Aug 16 22:20:35 PKT 2018\nshminfo:\n\tshmmax: 16777216\t(maximaler gemeinsam genutzter Speichersegmentgr\u00f6\u00dfe)\n\tshmmin:       1\t(minimaler gemeinsam genutzter Speichersegmentgr\u00f6\u00dfe)\n\tshmmni:      32\t(max Anzahl der gemeinsam genutzten Speicherbezeichner)\n\tshmseg:       8\t(max Anzahl der gemeinsam genutzten Speichersegmente pro Prozess)\n\tshmall:    1024\t(maximaler gemeinsamer Speicher in Seiten)\n<\/code><\/pre>\n<p>\nPostgreSQL verwendet <b>System V IPC<\/b> zur Zuweisung von gemeinsamem Speicher. Dieser Parameter geh\u00f6rt zu den wichtigsten Kernel-Parametern. Jedes Mal, wenn Sie die folgenden Fehlermeldungen erhalten, bedeutet dies, dass Sie eine \u00e4ltere Version von PostgreSQL verwenden und einen sehr niedrigen Wert f\u00fcr SHMMAX haben. Es wird erwartet, dass die Benutzer den Wert entsprechend dem gemeinsam genutzten Speicher, den sie verwenden m\u00f6chten, anpassen und erh\u00f6hen.<\/p>\n<h3>M\u00f6gliche Fehler bei falscher Konfiguration<\/h3>\n<p>\nWenn SHMMAX falsch konfiguriert ist, kann es zu einem Fehler kommen, wenn Sie versuchen, einen PostgreSQL-Cluster mit dem Befehl zu initialisieren <i>initdb<\/i>.<\/p>\n<p><b>initdb Fehler<\/b><br \/>\n<code>DETAIL: Der fehlgeschlagene Systemaufruf war shmget(key=1, size=2072576, 03600). <\/p>\n<p>HINWEIS: Dieser Fehler bedeutet normalerweise, dass die Anfrage von PostgreSQL nach einem gemein\u00adsam genutzten Speichersegment den SHMMAX-Parameter Ihres Kernels \u00fcberschreitet.\u00a0 <br \/>\nSie k\u00f6nnen entweder die Anforderungsgr\u00f6\u00dfe reduzieren oder den Kernel mit einem gr\u00f6\u00dferen SHMMAX neu konfigurieren. Um die Anforderungsgr\u00f6\u00dfe (derzeit 2072576 Bytes) zu reduzieren, <br \/>\nreduzieren Sie den Speicherverbrauch von PostgreSQL, indem Sie m\u00f6glicherweise shared_buffers oder max_connections verringern. <\/p>\n<p>Wenn die Anforderungsgr\u00f6\u00dfe bereits klein ist, k\u00f6nnte es sein, dass sie kleiner ist als der SHMMIN-Wert Ihres Kernels,<br \/>\nin diesem Fall w\u00e4re es notwendig, die Anforderungsgr\u00f6\u00dfe zu erh\u00f6hen oder SHMMIN neu zu konfigurieren. <\/p>\n<p>Die PostgreSQL-Dokumentation enth\u00e4lt weitere Informationen zur Konfiguration des Shared Memory. Der Kindprozess ist mit dem Exit-Code 1 abgest\u00fcrzt.<\/code><\/p>\n<p>\u00c4hnlich k\u00f6nnen Sie einen Fehler beim Starten des PostgreSQL-Servers mit dem Befehl <i>pg_ctl<\/i>.<\/p>\n<p><b>pg_ctl-Fehler<\/b><br \/>\n<code>DETAILS: Der fehlgeschlagene Systemaufruf war shmget(key=5432001, size=14385152, 03600).<\/p>\n<p>HINWEIS: Dieser Fehler bedeutet normalerweise, dass die Anfrage von PostgreSQL nach einem gemein\u00adsam genutzten Speichersegment den SHMMAX-Parameter Ihres Kernels \u00fcberschreitet.<\/p>\n<p>Sie k\u00f6nnen entweder die Anforderungsgr\u00f6\u00dfe reduzieren oder den Kernel mit einem gr\u00f6\u00dferen SHMMAX neu konfigurieren. Um die Anforderungsgr\u00f6\u00dfe (derzeit 14385152 Bytes) zu reduzieren, reduzieren Sie den Speicherverbrauch von PostgreSQL, m\u00f6glicherweise indem Sie shared_buffers oder max_connections verringern.<\/p>\n<p>Wenn die Anforderungsgr\u00f6\u00dfe bereits klein ist, k\u00f6nnte es sein, dass sie kleiner ist als der SHMMIN-Wert Ihres Kernels, <br \/>\nin diesem Fall w\u00e4re es notwendig, die Anforderungsgr\u00f6\u00dfe zu erh\u00f6hen oder SHMMIN neu zu konfigurieren.<\/p>\n<p>Die PostgreSQL-Dokumentation enth\u00e4lt weitere Informationen zur Konfiguration des Shared Memory.<\/code><\/p>\n<h3>Verstehen der Unterschiede in den Definitionen<\/h3>\n<p>\nDie Definition der Parameter SHMMAX\/SHMALL unterscheidet sich leicht zwischen Linux und MacOS X:<\/p>\n<ul>\n<li>Linux: kernel.shmmax, kernel.shmall<\/li>\n<li>MacOS X: kern.sysv.shmmax, kern.sysv.shmall<\/li>\n<\/ul>\n<p>\nTeam <i>sysctl<\/i> kann verwendet werden, um den Wert vor\u00fcbergehend zu \u00e4ndern. Um permanente Werte festzulegen, f\u00fcgen Sie einen Eintrag in <i>\/etc\/sysctl.conf<\/i>hinzu. Einzelheiten finden Sie weiter unten.<\/p>\n<p><b>\u00c4nderung der Kernel-Parameter unter MacOS X<\/b><\/p>\n<pre><code class=\"plaintext\"># Get the value of SHMMAX\nsudo sysctl kern.sysv.shmmax\nkern.sysv.shmmax: 4096\n\n# Get the value of SHMALL\nsudo sysctl kern.sysv.shmall \nkern.sysv.shmall: 4096\n\n# Set the value of SHMMAX\nsudo sysctl -w kern.sysv.shmmax=16777216\nkern.sysv.shmmax: 4096 -&gt; 16777216\n\n# Set the value of SHMALL \nsudo sysctl -w kern.sysv.shmall=16777216\nkern.sysv.shmall: 4096 -&gt; 16777216<\/code><\/pre>\n<p>\n<b>\u00c4nderung der Kernel-Parameter unter Linux<\/b><\/p>\n<pre><code class=\"plaintext\"># Get the value of SHMMAX\nsudo sysctl kernel.shmmax\nkernel.shmmax: 4096\n\n# Get the value of SHMALL\nsudo sysctl kernel.shmall\nkernel.shmall: 4096\n\n# Set the value of SHMMAX\nsudo sysctl -w kernel.shmmax=16777216\nkernel.shmmax: 4096 -&gt; 16777216\n\n# Set the value of SHMALL \nsudo sysctl -w kernel.shmall=16777216\nkernel.shmall: 4096 -&gt; 16777216<\/code><\/pre>\n<p>\n<b>Vergessen Sie nicht<\/b>: Um die \u00c4nderungen dauerhaft zu machen, f\u00fcgen Sie diese Werte zu \/etc\/sysctl.conf hinzu<\/p>\n<h2>Gro\u00dfe Seiten (Huge Pages)<\/h2>\n<p>\nIn Linux werden standardm\u00e4\u00dfig 4-GB-Speicherseiten verwendet, in BSD \u2013 <i>Super Pages<\/i>, und in Windows \u2013 <i>Large Pages<\/i>. Eine Seite ist ein Teil des Arbeitsspeichers, der einem Prozess zugewiesen ist. Ein Prozess kann je nach Speicheranforderungen mehrere Seiten haben. Je mehr Speicher ein Prozess ben\u00f6tigt, desto mehr Seiten werden ihm zugewiesen. Das Betriebssystem verwaltet eine Seitentabelle f\u00fcr die Prozesse. Je kleiner die Seitengr\u00f6\u00dfe, desto gr\u00f6\u00dfer die Tabelle, desto mehr Zeit wird ben\u00f6tigt, um die Seite in dieser Seitentabelle zu finden. Daher erm\u00f6glichen gro\u00dfe Seiten die Nutzung gro\u00dfer Mengen von Speicher mit reduzierten Overheads; weniger Seitenaufrufe, weniger Seitenfehler, schnellere Lese-\/Schreibvorg\u00e4nge \u00fcber gro\u00dfe Puffer. Das Ergebnis ist eine verbesserte Leistung.<\/p>\n<p>PostgreSQL unterst\u00fctzt gro\u00dfe Seiten nur unter Linux. Standardm\u00e4\u00dfig verwendet Linux 4 KB Speicherseiten. Daher muss bei einer hohen Anzahl an Speicheroperationen auf gr\u00f6\u00dfere Seiten umgestellt werden. Es wird eine Leistungssteigerung beim Einsatz von gro\u00dfen Seiten mit 2 MB bis zu 1 GB beobachtet. Die Gr\u00f6\u00dfe der gro\u00dfen Seite kann beim Booten festgelegt werden. Sie k\u00f6nnen die Einstellungen und die Nutzung gro\u00dfer Seiten auf Ihrem Linux-Computer leicht \u00fcberpr\u00fcfen, indem Sie den Befehl <i>cat \/proc\/meminfo | grep -i huge<\/i>.<\/p>\n<p><b>Informationen \u00fcber gro\u00dfe Seiten abrufen (nur unter Linux)<\/b><\/p>\n<pre><code class=\"bash\">Hinweis: Dies gilt nur f\u00fcr Linux, f\u00fcr andere Betriebssysteme wird dieser Vorgang ignoriert$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:       0\nHugePages_Free:        0\nHugePages_Rsvd:       0\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nIn diesem Beispiel, obwohl die Gr\u00f6\u00dfe der gro\u00dfen Seite auf 2048 (2 MB) eingestellt ist, hat die Gesamtzahl der gro\u00dfen Seiten den Wert 0. Das bedeutet, dass gro\u00dfe Seiten deaktiviert sind.<\/p>\n<h3>Skript zur Bestimmung der Anzahl gro\u00dfer Seiten<\/h3>\n<p>\nDies ist ein einfaches Skript, das die ben\u00f6tigte Anzahl gro\u00dfer Seiten zur\u00fcckgibt. F\u00fchren Sie das Skript auf Ihrem Linux-Server aus, w\u00e4hrend PostgreSQL l\u00e4uft. Stellen Sie sicher, dass die Umgebungsvariable <i>$PGDATA<\/i> auf das Datenverzeichnis von PostgreSQL gesetzt ist.<\/p>\n<p><b>Die ben\u00f6tigte Anzahl gro\u00dfer Seiten abrufen<\/b><\/p>\n<pre><code class=\"bash\">#!\/bin\/bash\npid=`head -1 $PGDATA\/postmaster.pid`\necho \"Pid:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $pid\"\npeak=`grep ^VmPeak \/proc\/$pid\/status | awk '{ print $2 }'`\necho \"VmPeak:\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 $peak kB\"\nhps=`grep ^Hugepagesize \/proc\/meminfo | awk '{ print $2 }'`\necho \"Hugepagesize:\u00a0\u00a0 $hps kB\"\nhp=$((peak\/hps))\necho Set Huge Pages:\u00a0\u00a0\u00a0\u00a0 $hp<\/code><\/pre>\n<p>\nDie Ausgabe des Skripts sieht wie folgt aus:<\/p>\n<p><b>Ausgabe des Skripts<\/b><\/p>\n<pre><code class=\"bash\">Pid:            12737\nVmPeak:        180932 kB\nHugepagesize:   2048 kB\nSet Huge Pages: 88<\/code><\/pre>\n<p>\nDer empfohlene Wert f\u00fcr gro\u00dfe Seiten ist 88, daher sollten Sie den Wert 88 einstellen.<\/p>\n<p><b>Gro\u00dfe Seiten einstellen<\/b><\/p>\n<pre><code class=\"bash\">sysctl -w vm.nr_hugepages=88<\/code><\/pre>\n<p>\n\u00dcberpr\u00fcfen Sie jetzt die gro\u00dfen Seiten, Sie werden sehen, dass gro\u00dfe Seiten nicht verwendet werden (HugePages_Free = HugePages_Total).<\/p>\n<p><b>Erneut Informationen \u00fcber gro\u00dfe Seiten (nur unter Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       88\nHugePages_Rsvd:       0\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nSetzen Sie nun die Einstellung huge_pages auf \"on\" in $PGDATA\/postgresql.conf und starten Sie den Server neu.<\/p>\n<p><b>Und wieder Informationen \u00fcber gro\u00dfe Seiten (nur unter Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       81\nHugePages_Rsvd:      64\nHugePages_Surp:       0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nJetzt k\u00f6nnen Sie sehen, dass sehr wenige gro\u00dfe Seiten verwendet werden. Lassen Sie uns jetzt versuchen, einige Daten in die Datenbank einzuf\u00fcgen.<\/p>\n<p><b>Einige Datenbankoperationen zur Verwaltung von gro\u00dfen Seiten<\/b><\/p>\n<pre><code class=\"sql\">postgres=# CREATE TABLE foo(a INTEGER);\nCREATE TABLE\npostgres=# INSERT INTO foo VALUES(generate_Series(1,10000000));\nINSERT 0 10000000<\/code><\/pre>\n<p>\nLassen Sie uns sehen, ob wir jetzt mehr gro\u00dfe Seiten verwenden als zuvor.<\/p>\n<p><b>Noch einmal Informationen zu gro\u00dfen Seiten (nur unter Linux)<\/b><\/p>\n<pre><code class=\"bash\">$ cat \/proc\/meminfo | grep -i huge\nAnonHugePages:         0 kB\nShmemHugePages:        0 kB\nHugePages_Total:      88\nHugePages_Free:       18\nHugePages_Rsvd:       1\nHugePages_Surp:      0\nHugepagesize:       2048 kB<\/code><\/pre>\n<p>\nJetzt k\u00f6nnen Sie sehen, dass die meisten gro\u00dfen Seiten verwendet werden.<\/p>\n<p>Hinweis: Der hier verwendete gesch\u00e4tzte Wert f\u00fcr HugePages ist sehr niedrig, was f\u00fcr ein Produktivsystem nicht normal ist. Bitte sch\u00e4tzen Sie die erforderliche Anzahl von Seiten f\u00fcr Ihr System und setzen Sie diese entsprechend abh\u00e4ngig von der Last und den Ressourcen.<\/p>\n<h3>vm.swappiness<\/h3>\n<p>\n<b>vm.swappiness<\/b> \u2014 das ist ein weiterer Kernelparameter, der die Datenbankleistung beeinflussen kann. Dieser Parameter wird verwendet, um das Verhalten der Swappiness (Auslagerung von Seiten in den Speicher und zur\u00fcck) in Linux zu steuern. Der Wert reicht von 0 bis 100. Er bestimmt, wie viel Speicher ausgelagert wird oder ausgelagert werden kann. Null bedeutet Deaktivierung der Auslagerung, w\u00e4hrend 100 aggressives Auslagern bedeutet.<\/p>\n<p>Sie k\u00f6nnen eine gute Leistung erzielen, indem Sie niedrigere Werte festlegen.<\/p>\n<p>Das Setzen des Wertes 0 in neueren Kernen kann dazu f\u00fchren, dass der OOM Killer (Speicherbereinigungsprozess in Linux) einen Prozess beendet. Daher kann sicher der Wert 1 gesetzt werden, wenn Sie die Auslagerung minimieren m\u00f6chten. Der Standardwert in Linux betr\u00e4gt 60. Ein h\u00f6herer Wert zwingt die MMU (Memory Management Unit) dazu, mehr Auslagerungsraum als RAM zu verwenden, w\u00e4hrend ein niedrigerer Wert mehr Daten\/code im Speicher h\u00e4lt.<\/p>\n<p>Ein niedrigerer Wert ist eine gute Wahl zur Verbesserung der Leistung in PostgreSQL.<\/p>\n<h3>vm.overcommit_memory \/ vm.overcommit_ratio<\/h3>\n<p>\nAnwendungen erhalten Speicher und geben ihn frei, wenn er nicht mehr ben\u00f6tigt wird. In einigen F\u00e4llen erh\u00e4lt eine Anwendung jedoch zu viel Speicher und gibt ihn nicht frei. Dies kann den OOM-Killer ausl\u00f6sen. Hier sind m\u00f6gliche Werte f\u00fcr den Parameter <b>vm.overcommit_memory<\/b> mit einer Beschreibung f\u00fcr jeden:<\/p>\n<ol>\n<li> Heuristisches Overcommit (Standard); kernelbasierte Heuristik<\/li>\n<li> Erlaube Overcommit in jedem Fall<\/li>\n<li> \u00dcbertreibe nicht, \u00fcberschreite nicht den Overcommit-Verh\u00e4ltnis.<\/li>\n<\/ol>\n<p>\n<i>Link: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/vm\/overcommit-accounting\">https:\/\/www.kernel.org\/doc\/Documentation\/vm\/overcommit-accounting<\/a><\/noindex><\/i><\/p>\n<p><b>vm.overcommit_ratio<\/b> \u2014 Prozentsatz des Arbeitsspeichers, der f\u00fcr \u00fcberm\u00e4\u00dfige Nutzung verf\u00fcgbar ist. Ein Wert von 50 % in einem System mit 2 GB RAM kann bis zu 3 GB RAM zuweisen.<\/p>\n<p>Der Wert 2 f\u00fcr vm.overcommit_memory sorgt f\u00fcr eine bessere Leistung f\u00fcr PostgreSQL. Dieser Wert maximiert die Nutzung des Arbeitsspeichers durch den Serverprozess, ohne ein signifikantes Risiko, vom OOM-Killer get\u00f6tet zu werden. Die Anwendung kann sich neu starten, jedoch nur innerhalb des \u00dcberverbrauchs, was das Risiko verringert, dass der OOM-Killer den Prozess t\u00f6tet. Daher bietet der Wert 2 eine bessere Leistung als der Standardwert 0. Dennoch kann die Zuverl\u00e4ssigkeit verbessert werden, da der Speicher au\u00dferhalb des zul\u00e4ssigen Bereichs nicht \u00fcberlastet wird. Dies schlie\u00dft das Risiko aus, dass der Prozess vom OOM-Killer get\u00f6tet wird.<\/p>\n<p>In Systemen ohne Swap kann es zu Problemen mit vm.overcommit_memory gleich 2 kommen.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT\">https:\/\/www.postgresql.org\/docs\/current\/static\/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT<\/a><\/noindex><\/p>\n<h3>vm.dirty_background_ratio \/ vm.dirty_background_bytes<\/h3>\n<p>\n<b>vm.dirty_background_ratio<\/b> \u2014 ist der Prozentsatz des Speichers, der mit schmutzigen Seiten gef\u00fcllt ist, die auf die Festplatte geschrieben werden m\u00fcssen. Der Datentransfer auf die Festplatte erfolgt im Hintergrund. Der Wert dieses Parameters liegt zwischen 0 und 100; ein Wert unter 5 kann jedoch ineffektiv sein, und einige Kernel unterst\u00fctzen ihn nicht. 10 ist der Standardwert in den meisten Linux-Systemen. Sie k\u00f6nnen die Leistung bei schreibintensiven Operationen mit einem niedrigeren Verh\u00e4ltnis verbessern, was bedeutet, dass Linux schmutzige Seiten im Hintergrund ablegt.<\/p>\n<p>Sie m\u00fcssen den Wert einstellen <b>vm.dirty_background_bytes<\/b> abh\u00e4ngig von der Geschwindigkeit Ihrer Festplatte.<\/p>\n<p>F\u00fcr diese beiden Parameter gibt es keine \"guten\" Werte, da beide von der Hardware abh\u00e4ngen. Einsetzen von vm.dirty_background_ratio auf 5 und vm.dirty_background_bytes auf 25 % der Festplattengeschwindigkeit verbessert jedoch die Leistung um ~ 25 % in den meisten F\u00e4llen.<\/p>\n<h3>vm.dirty_ratio \/ dirty_bytes<\/h3>\n<p>\nDas ist dasselbe wie <b>vm.dirty_background_ratio \/ dirty_background_bytes<\/b>, mit dem Unterschied, dass der Reset im aktiven Zustand erfolgt, wodurch die Anwendung blockiert wird. Daher sollte vm.dirty_ratio h\u00f6her sein als <b>vm.dirty_background_ratio<\/b>. Dies stellt sicher, dass Hintergrundprozesse fr\u00fcher gestartet werden, um eine maximale Blockierung der Anwendung zu vermeiden. Sie k\u00f6nnen die Differenz zwischen diesen beiden Verh\u00e4ltnissen je nach der Last des Festplattendatentransfers anpassen.<\/p>\n<h2>Fazit<\/h2>\n<p>\nSie k\u00f6nnen andere Parameter zur Verbesserung der Leistung anpassen, aber die Verbesserungen werden minimal sein und einen besonderen Nutzen werden Sie nicht daraus ziehen. Wir m\u00fcssen uns daran erinnern, dass nicht alle Parameter f\u00fcr alle Arten von Anwendungen relevant sind. Einige Anwendungen funktionieren besser, wenn wir bestimmte Parameter konfigurieren, andere dagegen nicht. Sie m\u00fcssen das richtige Gleichgewicht zwischen der Konfiguration dieser Parameter f\u00fcr die erwartete Arbeitslast und den Typ der Anwendung finden, und bei der Anpassung sollte auch das Verhalten des Betriebssystems ber\u00fccksichtigt werden. Die Konfiguration der Kernel-Parameter ist nicht so einfach wie die der Datenbankparameter: Hier ist es schwieriger, Empfehlungen abzugeben.<br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458860\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c PostgreSQL \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041f\u043b\u043e\u0445\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0434\u0440\u0430 \u041e\u0421 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u044d\u0442\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0431\u044b\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u043c\u044b \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0434\u0440\u0430 Linux, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26870,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35920","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 Linux \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:07:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:07:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Konfiguration der Linux-Kernel-Parameter zur Optimierung von PostgreSQL | ProHoster","description":"Optimale Leistung.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u044f\u0434\u0440\u0430 Linux \u0434\u043b\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 PostgreSQL | ProHoster","og:description":"\u041e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:07:35+00:00","article:modified_time":"2019-10-31T19:07:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35920","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 01:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:53:32","updated":"2026-01-22 01:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=35920"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/35920\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/26870"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=35920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=35920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=35920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}