Цюнінг PostgreSQL 9.4.2-1.1C для 1С: Прадпрыемствы 8.3: рельаный досвед налады

  1. 1. Усталёўка PostgreSQL і pgAdmin.
  2. 2. Цюнінг PostgreSQL 9.4.2.

Як толькі памер файлавай базы дадзеных 1С: Прадпрыемства аднаго з нашых кліентаў дасягнуў памеру ў 32Гб (так, 32Гб), у выніку чаго ўсё паступова пачатак тармазіць, а потым і ўстала намёртва, нашы кліенты папрасілі нас вырашыць гэтую праблемы

Як толькі памер файлавай базы дадзеных 1С: Прадпрыемства аднаго з нашых кліентаў дасягнуў памеру ў 32Гб (так, 32Гб), у выніку чаго ўсё паступова пачатак тармазіць, а потым і ўстала намёртва, нашы кліенты папрасілі нас вырашыць гэтую праблемы. SSD Enterprise класа ненадоўга падсаладзіць пілюлю, але праз некаторы час усё вярнулася ў зыходную кропку. Ну што ж, тут і да бабкі не хадзі - пераходзім на SQL версію БД.

Паколькі мы заўзятыя карыстальнікі Windows, даступна нам толькі два варыянты СКБД - гэта MSSql і PostgreSQL. Першы добры да вар'яцтва, але кошт не парадавала. А яшчэ больш не парадавала навіна аб дадатковых ліцэнзіях 1С для працы з MSSQL. Таму PostgreSQL.

Падрабязная інструкцыя з відэа даступная тут . У гэтым артыкуле мы пройдземся па ключавых момантах.

Не забываемся пра рэзервовае капіраванне баз дадзеных 1С!

Зыходныя дадзеныя:

  • АС Windows Server 2008R2,
  • Intel Core i7-2600K 3.40GHz,
  • 32Gb RAM,
  • Intel SSD DC3700 100Gb (толькі пад БД, АС на асобным SSD),
  • ад 10 да 20 карыстальнікаў у БД штодня,
  • абмен з 5 вузламі размеркаванай БД ў фоне.

Злавесна, ці не праўда? Непасрэдна да справы.

1. Усталёўка PostgreSQL і pgAdmin.

Ніякіх адкрыццяў з нагоды таго, адкуль пампаваць PostgreSQL не будзе - гэта наш любімы сайт https://releases.1c.ru , Раздзел «Тэхналагічныя дыстрыбутывы». Спампоўваем, ставім. Не забываем ўсталяваць MICROSOFT VISUAL C ++ 2010 RUNTIME LIBRARIES WITH SERVICE PACK 1, які ідзе ў архіве з дыстрыбутывам. Самі папаліся на гэта: не ўсталявалі, выпрабавалі шмат болю.

Ставім усё на далей, далей, акрамя наступных момантаў. Ўсталёўваем, як сэрвіс (галачка) і задаём параметры ўліковага запісу Windows, ня PostgreSQL.

Ўсталёўваем, як сэрвіс (галачка) і задаём параметры ўліковага запісу Windows, ня PostgreSQL

Ініцыялізуючы кластар базы дадзеных (галачка). А вось тут задаём параметры ўліковага запісу для PostgreSQL! Важна: у Вас павінна быць запушчана служба «Secondary Logon» (або на лакалізаваць АС: «Другасны ўваход у сістэму»). Кадоўка UTF8 - гэта таксама важна!

Ініцыялізуючы кластар базы дадзеных (галачка)

Далей нічога цікавага. Далей ...

pgAdmin ў гэтай зборцы застары. ідзем на https://www.postgresql.org/ftp/pgadmin3/release/ . На момант напісання артыкула самая свежая версія 1.22.1. Качаем яе, ставім. Заходзім.

На працэсе ўстаноўкі аснасткі «Адміністраванне сервераў 1С Прадпрыемствы» не будзем спыняцца. Гэта зусім іншая тэма. Ды і складанага там нічога няма.

Ствараем SQL БД у гэтай аснастцы, правяраем у pgAdmin - БД там з'явіцца, калі ўсё паказана дакладна.

2. Цюнінг PostgreSQL 9.4.2.

2

Далей ўбіваем сабе ў галаву наступнае: перад любым захаваннем новых налад, рабіце рэзервовыя копіі файлаў:

  • pg_hba.conf
  • postgresql.conf
  • pgpass.conf

якія ляжаць тут:

C: \ Program Files \ PostgreSQL \ 9.4.2-1.1C \ data

Калі Вы памыліцеся хоць у адной літары, пасля абнаўлення канфігурацыі PostgreSQL ня запусціцца. Высветліць што ж стала прычынай будзе складана, нават гледзячы ў часопісы Windows. Таму не мяняйце шмат параметраў адразу і рабіце рэзервовыя копіі.

Для праўкі конфігу ёсць зручны інструмент, даступны прама з галоўнага акна pgAdmin. Вось ён:

Вось ён:

Што мы тут мяняем:

  • shared_buffers - Колькасць памяці, выдзеленай PgSQL для сумеснага кэша старонак. Гэтая памяць падзяляецца паміж усімі працэсамі PgSQL. Дзелім даступную АЗП на 4. У нашым выпадку гэта 8Gb.
  • effective_cache_size - Ацэнка памеру кэша файлавай сістэмы. Лічыцца так: АЗП - shared_buffers. У нашым выпадку гэта 32Gb - 8Gb = 24Gb. Але асабіста я пакідаю гэты параметр яшчэ ніжэй, дзесьці 20Gb - усё-ткі АЗП патрэбна не толькі для PostgreSQL.
  • random_page_cost = 1.5 - 2.0 для RAID, 1.1 - 1.3 для SSD. Кошт чытання рандомные старонкі (па-змаўчанню 4). Чым менш seek time дыскавай сістэмы тым менш (але> 1.0) павінен быць гэты параметр. Залішне вялікае значэнне параметру павялічвае схільнасць PgSQL да выбару планаў з сканаваннем ўсёй табліцы (PgSQL лічыць, што танней паслядоўна чытаць усю табліцу, чым рандомные індэкс). І гэта дрэнна.
  • temp_buffers = 256Mb. Максімальную колькасць старонак для часовых табліц. То бок, гэта верхні ліміт памеру часовых табліц у кожнай сесіі.
  • work_mem - Лічыцца так: АЗП / 32..64 - у нашым выпадку атрымліваецца 1Gb. Ліміт памяці для апрацоўкі аднаго запыту. Гэтая памяць індывідуальная для кожнай сесіі. Тэарэтычна, максімальна патрэбная памяць роўная max_connections * work_mem, на практыцы такога не сустракаецца таму што большая частка сесій амаль заўсёды вісіць у чаканні.
  • bgwrite_delay - 20ms. Час сну паміж цыкла запісу на дыск фонавага працэсу запісу. Дадзены працэс адказны за сінхранізацыю старонак, размешчаных у shared_buffers з дыскам. Занадта вялікае значэнне гэтага параметру прывядзе да ўзрастання нагрузкі на checkpoint працэс і працэсы, якія абслугоўваюць сесіі (backend). Малое значэнне прывядзе да поўнай загрузцы аднаго з ядраў.
  • synchronous_commit - off. ОПАСНО! Выключэнне сінхранізацыі з дыскам у момант камітаў. Стварае рызыку страты апошніх некалькіх транзакцый (у плыні 0.5-1 секунды), але гарантуе цэласнасць базы дадзеных, у ланцужку камітаў гарантавана адсутнічаюць пропускі. Але значна павялічвае прадукцыйнасць.

Гэта далёка не ўсё, што ўдалося даведацца з Інтэрнэту і артыкулаў на https://its.1c.ru . АЛЕ! Нават гэтых налад хопіць, каб мабыць паскорыць працу 1С: Прадпрыемства на PostgreSQL.

У гэтым канкрэтным выпадку пасля пераходу на PostgreSQL карыстальнікі сталі скардзіцца, што 1С пачатку тармазіць яшчэ мацней, чым у файлавым варыянце. Але пасля гэтага цюнінгу база «паляцела». Зараз усе атрымліваюць асалоду ад хуткай працай. Аднак ёсць і свае мінусы ў выглядзе блокаў зараз. Спыняцца на гэта мы не плануем, будзем капаць далей і выкладваць карысныя змены канфігурацыі PostgreSQL сюды.

Калі з базай дадзеных паўсталі нейкія праблемы, магчыма, Вам дапаможа ўнутранае або знешняе тэставанне .

Базы дадзеных 1С можна публікаваць на вэб-серверах !

Злавесна, ці не праўда?