Preskoči na glavno vsebino

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

Tento článok popisuje naše dlhoročné skúsenosti s prevádzkou PostgreSQL pod vysokou záťažou a s mnohými používateľmi a slúži ako súbor odporúčaní.

Avtor: Petr Pech

Pre veľké inštalácie systému Flexi je nevyhnutné vykonať nastavenie inštancie PostgreSQL v súbore postgresql.conf (presné umiestnenie v Umiestnenie adresárov Flexi na Vašom počítači):

  • zvýšenie počtu spojení max_connections (cca 30 na jedného možného klienta, pri použití REST API či webového/mobilného prístupu ešte viac). Ak zadáte hodnotu väčšiu ako 200, je potrebné tiež skontrolovať 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 viac zámkov (napr. ak firma dlho nevytvárala aktualizácie, nemusí množstvo 500 stačiť; zatiaľ však nemáme skúsenosť s nikým, komu by počet nestačil).

Windows

  • Ak aktualizujeme z verzie, kde sme postgresql.conf nahrádzali, vrátime tam predvolenú hodnotu

  • Do hlavného postgresql.conf iba pridáme odkaz na podpriečinok s ďalšími konfiguračnými súbormi (include_dir = 'conf.d')

  • V podpriečinku conf.d máme vlastné .conf súbory. Názvy majú formát: 0xx_flexi_popis.conf (napr. 051_flexi_main.conf)

  • Postgres súbory načítava v poradí podľa názvu, neskôr načítané súbory majú prednosť. Používateľ by si teda mal prípadne vytvoriť súbor yxx_cokoliv.conf kde y > 0 (napr: 101_custom.conf). Tým môže prepísať našu konfiguráciu. Pri reinštalácii mu takýto súbor nemeníme.

  • Hlavný postgresql.conf ani naše .conf súbory by používateľ nemal meniť, môžu sa pri reinštalácii prepísať.

V MS Windows sa môžete stretnúť s problémom s viac ako 125 spojeniami:

Zaujímavé informácie pre nastavenie: http://postgres.cz/wiki/Desatero

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

Ak používate na serveri antivírus ESET NOD32, môžete naraziť na ďalšie problémy. V tomto prípade nepomôže odstrániť z kontrol proces PostgreSQL, adresár ani vypnutie NOD32. Funguje iba odinštalácia, alebo použitie najnovšej verzie PostgreSQL.

Linux

  • Rieši to isté popísané v bode vyššie, len na linuxových systémoch:

    • v konfigurácii PostgreSQL nastavujeme voľbu jit = off (všeobecne by malo ísť o zrýchľujúce nastavenie, no u nás naopak dopyty spomaľuje)

    • inštalácia už nemení predvolený konfiguračný súbor databázy postgresql.conf (jediné, čo prípadne pridáva, je voľba include_dir = 'conf.d')

    • všetky dôležité nastavenia sa potom umiestňujú do conf.d podadresára v samostatných súboroch (napr. 53-jit-off.conf)

Nezabudnite nastaviť automatické zálohovanie!

Vacuum

Štandardne sa automaticky spúšťa proces autovacuum. V niektorých prípadoch, napr. ak databáza presiahne určitú hranicu, prestane manuálny vacuum fungovať. Je teda vhodné niektoré parametre zvýšiť.

PGTune

Pre konfiguráciu postgresql sa osvedčil nástroj pgtune z https://pgtune.leopard.in.ua/#/. Skript dopočítava ďalšie hodnoty v konfigurácii ako shared_buffers, effective_cache_size atď. na základe nastaveného počtu pripojení.

Ste s tem dobili odgovor na svoje vprašanje?