{"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\/sv\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","title":{"rendered":"Inst\u00e4llning av Linux-k\u00e4rnparametrar f\u00f6r att optimera PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Inst\u00e4llning av Linux-k\u00e4rnparametrar f\u00f6r att optimera PostgreSQL\" src=\"\/wp-content\/uploads\/2019\/07\/a28458ff50cdc517aad71b47adab6eb3.jpeg\" style=\"display:block;margin: 0 auto;\" \/> Optimal prestanda f\u00f6r PostgreSQL beror p\u00e5 korrekt definierade parametrar i operativsystemet. D\u00e5ligt konfigurerade k\u00e4rnparametrar kan leda till minskad prestanda f\u00f6r databasservern. Det \u00e4r d\u00e4rf\u00f6r viktigt att dessa parametrar \u00e4r inst\u00e4llda i enlighet med databasservern och dess arbetsbelastning. I detta inl\u00e4gg kommer vi att diskutera n\u00e5gra viktiga Linux-k\u00e4rnparametrar som kan p\u00e5verka databasserverns prestanda och hur man konfigurerar dem.<\/p>\n<h2>SHMMAX \/ SHMALL<\/h2>\n<p>\n<b>SHMMAX<\/b> \u00e4r en k\u00e4rnparameter som anv\u00e4nds f\u00f6r att definiera den maximala storleken p\u00e5 en enskild segment av delad minne (shared memory) som en Linux-process kan allokera. Fram till version 9.2 anv\u00e4nde PostgreSQL System V (SysV), vilket kr\u00e4ver konfiguration av SHMMAX. Efter version 9.2 har PostgreSQL \u00f6verg\u00e5tt till POSIX delat minne. S\u00e5 nu kr\u00e4vs det mindre byte av System V delat minne.<\/p>\n<p>Fram till version 9.3 var SHMMAX den viktigaste k\u00e4rnparametern. V\u00e4rdet p\u00e5 SHMMAX anges i byte.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nP\u00e5 samma s\u00e4tt, <b>SHMALL<\/b> \u00e4r en annan k\u00e4rnparameter som anv\u00e4nds f\u00f6r att definiera <br \/>\ndet totala antalet sidor av delad minne (shared memory). F\u00f6r att se de aktuella v\u00e4rdena av SHMMAX, SHMALL eller SHMMIN, anv\u00e4nd kommandot <i>ipcs<\/i>.<\/p>\n<p><b>SHM* Detaljer \u2014 Linux<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -lm\n\n------ Gr\u00e4nser f\u00f6r delat minne --------\nmax antal segment = 4096\nmax segmentstorlek (kbytes) = 1073741824\nmax totalt delat minne (kbytes) = 17179869184\nmin segmentstorlek (bytes) = 1<\/code><\/pre>\n<p>\n<b>SHM* Detaljer \u2014 MacOS X<\/b><\/p>\n<pre><code class=\"bash\">$ ipcs -M\nIPC-status fr\u00e5n  den 16 aug 2018 22:20:35 PKT\nshminfo:\n\tshmmax: 16777216\t(max storlek p\u00e5 delad minnessegment)\n\tshmmin:       1\t(min storlek p\u00e5 delad minnessegment)\n\tshmmni:      32\t(max antal identifierare f\u00f6r delat minne)\n\tshmseg:       8\t(max antal delade minnessegment per process)\n\tshmall:    1024\t(max m\u00e4ngd delat minne i sidor)\n<\/code><\/pre>\n<p>\nPostgreSQL anv\u00e4nder <b>System V IPC<\/b> f\u00f6r att allokera delat minne. Denna parameter \u00e4r en av de viktigaste k\u00e4rnparametrarna. N\u00e4r du f\u00e5r f\u00f6ljande felmeddelanden, betyder det att du har en \u00e4ldre version av PostgreSQL och att du har ett mycket l\u00e5gt v\u00e4rde p\u00e5 SHMMAX. Det f\u00f6rv\u00e4ntas att anv\u00e4ndare justerar och \u00f6kar v\u00e4rdet i enlighet med den delade minneskapacitet de planerar att anv\u00e4nda.<\/p>\n<h3>M\u00f6jliga fel vid felaktig konfiguration<\/h3>\n<p>\nOm SHMMAX \u00e4r felkonfigurerad kan du f\u00e5 ett fel n\u00e4r du f\u00f6rs\u00f6ker initiera en PostgreSQL-kluster med kommandot <i>initdb<\/i>.<\/p>\n<p><b>initdb Failure<\/b><br \/>\n<code>DETAIL: Misslyckad systemanrop var shmget(key=1, size=2072576, 03600). <\/p>\n<p>HINT: Detta fel betyder vanligtvis att PostgreSQL:s beg\u00e4ran om ett segment av delat minne \u00f6verskred din k\u00e4rnas SHMMAX-parameter.\u00a0 <br \/>\nDu kan antingen minska beg\u00e4rningsstorleken eller konfigurera k\u00e4rnan med en st\u00f6rre SHMMAX. F\u00f6r att minska beg\u00e4rningsstorleken (f\u00f6r n\u00e4rvarande 2072576 byte), <br \/>\nminska PostgreSQLs delade minnesanv\u00e4ndning, kanske genom att minska shared_buffers eller max_connections. <\/p>\n<p>Om beg\u00e4rningsstorleken redan \u00e4r liten kan det h\u00e4nda att den \u00e4r mindre \u00e4n din k\u00e4rnas SHMMIN-parameter,<br \/>\ni vilket fall det \u00e4r n\u00f6dv\u00e4ndigt att h\u00f6ja beg\u00e4rningsstorleken eller omkonfigurera SHMMIN. <\/p>\n<p>PostgreSQL-dokumentationen inneh\u00e5ller mer information om konfiguration av delat minne. barnprocessen avslutades med kod 1<\/code><\/p>\n<p>P\u00e5 samma s\u00e4tt kan du f\u00e5 ett fel vid start av PostgreSQL-servern med kommandot <i>pg_ctl<\/i>.<\/p>\n<p><b>pg_ctl-fel<\/b><br \/>\n<code>DETAIL: Det misslyckade systemanropet var shmget(key=5432001, size=14385152, 03600).<\/p>\n<p>HINT: Detta fel betyder vanligtvis att PostgreSQL:s beg\u00e4ran om ett segment av delat minne \u00f6verskred din k\u00e4rnas SHMMAX-parameter.<\/p>\n<p>Du kan antingen minska beg\u00e4rningsstorleken eller konfigurera k\u00e4rnan med en st\u00f6rre SHMMAX. F\u00f6r att minska beg\u00e4rningsstorleken (f\u00f6r n\u00e4rvarande 14385152 byte), minska PostgreSQLs delade minnesanv\u00e4ndning, kanske genom att minska shared_buffers eller max_connections.<\/p>\n<p>Om beg\u00e4rningsstorleken redan \u00e4r liten kan det h\u00e4nda att den \u00e4r mindre \u00e4n din k\u00e4rnas SHMMIN-parameter, <br \/>\ni vilket fall det \u00e4r n\u00f6dv\u00e4ndigt att h\u00f6ja beg\u00e4rningsstorleken eller omkonfigurera SHMMIN.<\/p>\n<p>PostgreSQL-dokumentationen inneh\u00e5ller mer information om konfiguration av delat minne.<\/code><\/p>\n<h3>F\u00f6rst\u00e5 skillnaderna i definitionerna<\/h3>\n<p>\nDefinitionerna av SHMMAX\/SHMALL skiljer sig n\u00e5got mellan Linux och 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> kan anv\u00e4ndas f\u00f6r att tempor\u00e4rt \u00e4ndra v\u00e4rdet. F\u00f6r att st\u00e4lla in permanenta v\u00e4rden, l\u00e4gg till en post i <i>\/etc\/sysctl.conf<\/i>. Detaljer anges nedan.<\/p>\n<p><b>\u00c4ndring av k\u00e4rninst\u00e4llningar p\u00e5 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>\u00c4ndring av k\u00e4rninst\u00e4llningar p\u00e5 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>Gl\u00f6m inte<\/b>: f\u00f6r att g\u00f6ra \u00e4ndringarna permanenta, l\u00e4gg till dessa v\u00e4rden i \/etc\/sysctl.conf<\/p>\n<h2>Stora sidor (Huge Pages)<\/h2>\n<p>\nI Linux anv\u00e4nds som standard 4 KB minnessidor, i BSD \u2014 <i>Super Pages<\/i>, och i Windows \u2014 <i>Large Pages<\/i>. En sida \u00e4r en del av RAM-minnet som tilldelas en process. En process kan ha flera sidor beroende p\u00e5 minnesbehovet. Ju mer minne en process beh\u00f6ver, desto fler sidor tilldelas den. OS uppr\u00e4tth\u00e5ller en sidhanteringstabell f\u00f6r processerna. Ju mindre storlek p\u00e5 sidan, desto st\u00f6rre tabell, desto mer tid kr\u00e4vs f\u00f6r att s\u00f6ka efter en sida i denna tabell. D\u00e4rf\u00f6r till\u00e5ter stora sidor att anv\u00e4nda stora m\u00e4ngder minne med minskade overheadkostnader; f\u00e4rre sidvisningar, f\u00e4rre sidfel, snabbare l\u00e4s-\/skrivoperationer genom stora buffertar. Resultatet blir en f\u00f6rb\u00e4ttrad prestanda.<\/p>\n<p>PostgreSQL st\u00f6der stora sidor endast p\u00e5 Linux. Som standard anv\u00e4nder Linux 4 kB minnessidor, s\u00e5 i fall d\u00e4r det finns f\u00f6r m\u00e5nga minnesoperationer \u00e4r det n\u00f6dv\u00e4ndigt att st\u00e4lla in sidor av st\u00f6rre storlek. En prestandaf\u00f6rb\u00e4ttring kan observeras vid anv\u00e4ndning av stora sidor p\u00e5 2 MB och upp till 1 GB. Storleken p\u00e5 stora sidor kan st\u00e4llas in vid start. Du kan enkelt kontrollera inst\u00e4llningarna f\u00f6r stora sidor och deras anv\u00e4ndning p\u00e5 din Linux-dator genom att anv\u00e4nda kommandot <i>cat \/proc\/meminfo | grep -i huge<\/i>.<\/p>\n<p><b>H\u00e4mta information om stora sidor (endast p\u00e5 Linux)<\/b><\/p>\n<pre><code class=\"bash\">Obs: Detta g\u00e4ller endast f\u00f6r Linux, f\u00f6r andra operativsystem ignoreras denna operation\n$ 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>\nI det h\u00e4r exemplet, \u00e4ven om storleken p\u00e5 den stora sidan \u00e4r inst\u00e4lld p\u00e5 2048 (2 MB), har det totala antalet stora sidor v\u00e4rdet 0. Detta betyder att stora sidor \u00e4r avst\u00e4ngda.<\/p>\n<h3>Script f\u00f6r att best\u00e4mma antalet stora sidor<\/h3>\n<p>\nDetta \u00e4r ett enkelt skript som returnerar det n\u00f6dv\u00e4ndiga antalet stora sidor. K\u00f6r skriptet p\u00e5 din Linux-server medan PostgreSQL k\u00f6rs. Se till att milj\u00f6variabeln <i>$PGDATA<\/i> \u00e4r inst\u00e4lld p\u00e5 PostgreSQL:s datakatalog.<\/p>\n<p><b>H\u00e4mta siffran f\u00f6r de n\u00f6dv\u00e4ndiga stora sidorna<\/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>\nSkripts output ser ut som f\u00f6ljer:<\/p>\n<p><b>Skripts output<\/b><\/p>\n<pre><code class=\"bash\">Pid:            12737\nVmPeak:         180932 kB\nHugepagesize:   2048 kB\nSet Huge Pages: 88<\/code><\/pre>\n<p>\nDet rekommenderade v\u00e4rdet f\u00f6r stora sidor \u00e4r 88, s\u00e5 du b\u00f6r st\u00e4lla in v\u00e4rdet 88.<\/p>\n<p><b>St\u00e4lla in stora sidor<\/b><\/p>\n<pre><code class=\"bash\">sysctl -w vm.nr_hugepages=88<\/code><\/pre>\n<p>\nKontrollera stora sidor nu, du kommer att se att stora sidor inte anv\u00e4nds (HugePages_Free = HugePages_Total).<\/p>\n<p><b>\u00c4n en g\u00e5ng information om stora sidor (endast p\u00e5 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>\nNu st\u00e4ller du in parameter huge_pages \"on\" i $PGDATA\/postgresql.conf och startar om servern.<\/p>\n<p><b>Och \u00e5terigen information om stora sidor (endast p\u00e5 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>\nNu kan du se att mycket f\u00e5 stora sidor anv\u00e4nds. L\u00e5t oss nu f\u00f6rs\u00f6ka l\u00e4gga till lite data i databasen.<\/p>\n<p><b>Vissa databasoperationer f\u00f6r att hantera stora sidor<\/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>\nL\u00e5t oss se om vi f\u00f6r n\u00e4rvarande anv\u00e4nder fler stora sidor \u00e4n tidigare.<\/p>\n<p><b>\u00c5terigen information om stora sidor (endast p\u00e5 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>\nNu kan du se att de flesta stora sidor anv\u00e4nds.<\/p>\n<p>Observera: det uppskattade v\u00e4rdet f\u00f6r HugePages som anv\u00e4nds h\u00e4r \u00e4r mycket l\u00e5gt, vilket inte \u00e4r ett normalt v\u00e4rde f\u00f6r en produktionsmaskin. V\u00e4nligen bed\u00f6m det n\u00f6dv\u00e4ndiga antalet sidor f\u00f6r ditt system och st\u00e4ll in dem i enlighet med belastning och resurser.<\/p>\n<h3>vm.swappiness<\/h3>\n<p>\n<b>vm.swappiness<\/b> \u2014 detta \u00e4r en annan k\u00e4rnparameter som kan p\u00e5verka databasens prestanda. Den h\u00e4r parametern anv\u00e4nds f\u00f6r att styra swapbeteendet (swappiness) (att swapa sidor in och ut ur minnet) i Linux. V\u00e4rdet varierar fr\u00e5n 0 till 100. Det best\u00e4mmer hur mycket minne som kommer att avlastas eller avlastas. Noll betyder att swap inte anv\u00e4nds, och 100 inneb\u00e4r aggressiv svappning.<\/p>\n<p>Du kan f\u00e5 bra prestanda genom att st\u00e4lla in l\u00e4gre v\u00e4rden.<\/p>\n<p>Att s\u00e4tta v\u00e4rdet 0 i nyare k\u00e4rnor kan leda till att OOM Killer (minnesrensningsprocessen i Linux) d\u00f6dar processen. S\u00e5ledes kan v\u00e4rdet 1 s\u00e4kerst\u00e4llas om du vill minimera svappning. Standardv\u00e4rdet i Linux \u00e4r 60. Ett h\u00f6gre v\u00e4rde f\u00e5r MMU (minneshanteringsenheten) att anv\u00e4nda mer swaputrymme \u00e4n RAM, medan ett l\u00e4gre v\u00e4rde beh\u00e5ller mer data\/kod i minnet.<\/p>\n<p>Ett l\u00e4gre v\u00e4rde \u00e4r en bra insats f\u00f6r att f\u00f6rb\u00e4ttra prestandan i PostgreSQL.<\/p>\n<h3>vm.overcommit_memory \/ vm.overcommit_ratio<\/h3>\n<p>\nApplikationer f\u00e5r minne och frig\u00f6r det n\u00e4r det inte l\u00e4ngre beh\u00f6vs. Men i vissa fall f\u00e5r applikationen f\u00f6r mycket minne och frig\u00f6r det inte. Detta kan orsaka OOM killer. H\u00e4r \u00e4r m\u00f6jliga v\u00e4rden f\u00f6r parametern <b>vm.overcommit_memory<\/b> med en beskrivning f\u00f6r varje:<\/p>\n<ol>\n<li> Heuristisk \u00f6verkommitt\u00e9 (standard); k\u00e4rn-baserad heuristik<\/li>\n<li> Till\u00e5t \u00f6verkommitt\u00e9 i alla fall<\/li>\n<li> \u00d6verkommitt\u00e9 f\u00f6r mycket, \u00f6verskrid inte \u00f6verkommitt\u00e9 koefficienten.<\/li>\n<\/ol>\n<p>\n<i>L\u00e4nk: <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 procent av RAM-minnet som \u00e4r tillg\u00e4ngligt f\u00f6r \u00f6verbelastning. V\u00e4rdet 50 % i ett system med 2 GB RAM kan tilldela upp till 3 GB RAM.<\/p>\n<p>V\u00e4rdet 2 f\u00f6r vm.overcommit_memory ger b\u00e4ttre prestanda f\u00f6r PostgreSQL. Det h\u00e4r v\u00e4rdet maximerar anv\u00e4ndningen av RAM-minne av serverprocessen utan n\u00e5gon betydande risk f\u00f6r att bli d\u00f6dad av OOM-killern. Applikationen kan startas om, men endast inom \u00f6verutnyttjandet, vilket minskar risken f\u00f6r att OOM-killern d\u00f6dar processen. D\u00e4rf\u00f6r ger v\u00e4rdet 2 b\u00e4ttre prestanda \u00e4n standardv\u00e4rdet 0. \u00c5 andra sidan kan tillf\u00f6rlitligheten f\u00f6rb\u00e4ttras genom att minnet utanf\u00f6r det till\u00e5tna intervallet inte \u00f6verbelastas. Detta utesluter risken f\u00f6r att processen d\u00f6das av OOM-killern.<\/p>\n<p>I system utan byte kan det uppst\u00e5 problem med vm.overcommit_memory lika med 2.<\/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 \u00e4r procentandelen av minnet som \u00e4r fyllt med smutsiga sidor som m\u00e5ste skrivas till disk. Skrivning till disk sker i bakgrunden. V\u00e4rdet p\u00e5 denna parameter varierar fr\u00e5n 0 till 100; dock kan ett v\u00e4rde under 5 vara ineffektivt, och vissa k\u00e4rnor st\u00f6der det inte. 10 \u00e4r standardv\u00e4rdet i de flesta Linux-system. Du kan \u00f6ka prestanda f\u00f6r skrivintensiva operationer med en l\u00e4gre kvot som betyder att Linux kommer att skriva smutsiga sidor i bakgrunden.<\/p>\n<p>Du m\u00e5ste st\u00e4lla in v\u00e4rdet <b>vm.dirty_background_bytes<\/b> beroende p\u00e5 hastigheten p\u00e5 din disk.<\/p>\n<p>F\u00f6r dessa tv\u00e5 parametrar finns det inga 'bra' v\u00e4rden, eftersom b\u00e5da beror p\u00e5 h\u00e5rdvaran. Men att st\u00e4lla in vm.dirty_background_ratio p\u00e5 5 och vm.dirty_background_bytes p\u00e5 25 % av diskens hastighet \u00f6kar prestandan med ~ 25 % i de flesta fall.<\/p>\n<h3>vm.dirty_ratio \/ dirty_bytes<\/h3>\n<p>\nDetta \u00e4r detsamma som <b>vm.dirty_background_ratio \/ dirty_background_bytes<\/b>, med den skillnaden att skrivningen g\u00f6rs i en aktiv session, och blockerar applikationen. D\u00e4rf\u00f6r b\u00f6r vm.dirty_ratio vara h\u00f6gre \u00e4n <b>vm.dirty_background_ratio<\/b>. Detta s\u00e4kerst\u00e4ller att bakgrundsprocesserna startas tidigare f\u00f6r att undvika maximal blockering av applikationen. Du kan justera skillnaden mellan dessa tv\u00e5 kvoter beroende p\u00e5 belastningen p\u00e5 disk I\/O.<\/p>\n<h2>Resultat<\/h2>\n<p>\nDu kan justera andra parametrar f\u00f6r att \u00f6ka prestandan, men f\u00f6rb\u00e4ttringarna kommer att vara minimala och du kommer inte att f\u00e5 n\u00e5gra s\u00e4rskilda f\u00f6rdelar. Vi m\u00e5ste komma ih\u00e5g att inte alla parametrar g\u00e4ller f\u00f6r alla typer av applikationer. Vissa applikationer fungerar b\u00e4ttre n\u00e4r vi justerar vissa parametrar, medan andra inte g\u00f6r det. Du m\u00e5ste hitta r\u00e4tt balans mellan konfigurationerna av dessa parametrar f\u00f6r den f\u00f6rv\u00e4ntade arbetsbelastningen och typ av applikation, samt ta h\u00e4nsyn till operativsystemets beteende vid justering. Att justera k\u00e4rnparametrar \u00e4r inte s\u00e5 enkelt som att justera databasparametrar: h\u00e4r \u00e4r det sv\u00e5rare att ge rekommendationer.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Justering av Linux-k\u00e4rnparametrar f\u00f6r att optimera PostgreSQL | ProHoster","description":"Optimal prestanda.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/nastrojka-parametrov-yadra-linux-dlya-optimizatsii-postgresql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/35920","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=35920"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/35920\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/26870"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=35920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=35920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=35920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}