Konfigurácia PostgreSQL pre veľké inštalácie Flexi

Tento článok opisuje naše dlhoročné skúsenosti s prevádzkou PostgreSQL pri veľkom zaťažení a s mnohými používateľmi a slúži ako súbor odporúčaní.

Ota Rádl avatar
Written by Ota Rádl
Updated over a week ago

Pri

veľkých inštaláciách Flexi je potrebné nakonfigurovať inštanciu PostgreSQL v súbore postgresql.conf (presné umiestnenie v adresári Flexi Directory Locations vo vašom počítači

):

  • Zvýšte počet max_connections (približne 30 na jedného možného klienta, ešte viac, ak používate REST API alebo webový/mobilný prístup). Ak zadáte hodnotu vyššiu ako 200, musíte skontrolovať aj hodnotu shared_buffers.

  • zvýšiť počet zámkov na transakciu - minimálne na počet tabuliek: [Lock Management] max_locks_per_transaction = 512

Je možné nastaviť aj viacero zámkov (napr. ak spoločnosť už dlho nevytvára aktualizácie, počet 500 nemusí stačiť; nemáme však skúsenosti s nikým, komu by tento počet nestačil).

Upozornenie: nezabudnite nastaviť automatické zálohovanie

!

Vákuum

V predvolenom nastavení sa proces automatického vysávania spustí automaticky. V niektorých prípadoch, napr. ak databáza prekročí určitú hranicu, manuálne vysávanie prestane fungovať. Preto je vhodné zvýšiť niektoré parametre.

MS Windows

V systéme MS Windows môžete naraziť na problém s viac ako 125 pripojeniami:

Zaujímavé informácie o nastavení: http://postgres.cz/wiki/Desatero

Pri väčšom zaťažení disku pomáha nastavenie: checkpoint_segments . Optimálne nastavenie je 32. Nastavenie je potom: checkpoint_segments = 32

Ak na serveri používate antivírusový program ESET NOD32, môžete naraziť na ďalšie problémy. V tomto prípade nepomôže odstránenie procesu PostgreSQL, adresára ani vypnutie NOD32 z kontrol. Fungovať bude len odinštalovanie alebo používanie najnovšej verzie PostgreSQL.

PGTune

Na konfiguráciu postgresql sa osvedčil nástroj pgtune z https://pgtune.leopard.in.ua/#/

. Skript vypočíta ďalšie hodnoty v konfigurácii, ako sú shared_buffers, effective_cache_size atď., na základe nastaveného počtu spojení.

Did this answer your question?