Pg+dSpam: zvyseni vykonu

Jan Kasprzak kas na fi.muni.cz
Pondělí Prosinec 12 22:10:26 CET 2011


	Dobry vecer,

mam postovni system, ktery dorucuje maily a filtruje je pres dSpam.
Mym ukolem je najit uzke misto, protoze cele dorucovani je nejake pomale.

System se ze dvou stroju: mailserver, na kterem bezi dorucovaci proces
a dspamc; a pak spamovy server, kde bezi dspam a postgresql.

Na mailserveru:
doruceni je paralelizovano az do 100 procesu, pricemz
kazde doruceni se sklada z vice akci, a mezi jinymi i spusteni dspamc.
Kdyz se podivam na vypis procesu, tak obvykle vidim az ke stovce dspamc.
Takze dorucovani evidentne vazne na dspamu.

Top pise:
Cpu(s):  8.3%us,  3.3%sy, 13.5%ni, 68.7%id,  4.5%wa,  0.0%hi,  1.6%si,  0.0%st
pricemz dorucovani je cast z toho "%ni" spolu s dalsimi nekolika vecmi.
Z toho a z iowaitu soudim, ze tady uzke misto neni.

Server ma 8 procesoru v /proc/cpuinfo (4 fyzicka jadra a 2x hyperthreading).

Iostat nerika pretizeny filesystem (max kolem 40 %).


Na spamovem serveru:
dspam ma okolo 50 vlaken (pricemz v konfiguraci je
PgSQLConnectionCache 100, takze by teoreticky mohl mit az 100 vlaken).

PostgreSQL ma okolo 90 bezicich backendu, z nichz tak 30-40 pise "idle".

Top vypada takto:
Cpu(s):  0.7%us,  0.8%sy,  0.0%ni, 78.1%id, 20.4%wa,  0.0%hi,  0.0%si,  0.0%st
(ale opet tam bezi i nesouvisejici veci).

Podle iostatu je temer ke 100 % vytizeny filesystem, na kterem ma
dspam a postgresql sva data.

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdi               0.00   290.40   10.00  311.40   136.80  1495.20    10.16     3.15    9.79   1.47  47.36
sdj               0.00   279.20   11.00  314.80   191.20  1464.00    10.16     2.53    7.75   1.27  41.22
sdk               0.20   292.20   11.00  322.00   212.00  1544.80    10.55     1.32    3.97   0.69  23.04
sdl               0.20   291.80    8.00  322.40   148.00  1573.60    10.42     3.03    9.66   1.48  49.02
sdn               0.00   284.00    7.60  320.80   136.00  1524.80    10.11     2.07    6.49   1.63  53.58
sdm               0.00   294.60    7.40  327.60    87.20  1576.80     9.93     2.35    7.03   1.36  45.66
dm-1              0.00     0.00   55.60 2509.60   912.00  9135.20     7.83    29.78   12.06   0.38  96.88

dm-1 je prokladany LV nad sdi-sdm, coz jsou HW RAID-1 LUNy.

A ted je otazka, jestli jde nejak rict postgresu, aby delal zapisy nejak
"inteligentneji", aby nepotreboval tolik zapisovych operaci za jednotku casu.
Nebo vubec nejak nastavit parametry Postgresu.

Mate k tomu nejake tipy?

	Diky,

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list.     --Alan Cox


Další informace o konferenci Linux