Облік, бази даних і віддалена робота

Сервер під BAS на 5, 10, 20, 50 користувачів: процесор, пам’ять, диски

Зміст статті

Для адміністратора або керівника, який обирає виділений сервер під BAS на 5–50 користувачів. У підсумку ви матимете орієнтовну конфігурацію — ядра, пам’ять, диски — і спосіб перевірити, чи її вистачає.

Що знадобиться#

  • Кількість користувачів, які працюють одночасно, і прогноз на рік-два.
  • Розмір бази і темп її зростання.
  • Програми, що працюють поряд із BAS: M.E.Doc, офісний пакет, браузер, клієнт-банк.

Ліцензії BAS, Windows Server і СУБД у цій статті не розглядаємо.

Два варіанти роботи#

Файлова база і віддалені робочі столи#

База — один файл на диску сервера. Користувачі входять через RDP і запускають BAS на самому сервері. Окремого сервера BAS і СУБД немає: усю роботу виконує програма в сеансі користувача, тож тривала операція одного (закриття місяця, перепроведення) сповільнює решту. Розробник описує цей варіант як простий у встановленні й експлуатації, а для одночасної роботи багатьох користувачів призначає клієнт-серверний. На практиці файлова база добре працює до 5–7 одночасних користувачів, 10 — уже межа.

Файл бази має лежати на сервері, де працюють сеанси. Відкривати його з офісних комп’ютерів через мережеву папку чи VPN не варто: це повільно, а обрив зв’язку може пошкодити базу.

Клієнт-серверний варіант із СУБД#

Три ланки: тонкий клієнт у сеансі користувача, сервер BAS (робочі процеси rphost) і СУБД — найчастіше MS SQL Server або PostgreSQL. Обчислення й блокування відбуваються на сервері, користувачі менше заважають одне одному, а ланки можна рознести на два сервери. Від 10 користувачів це основний варіант. Підтримувані операційні системи і СУБД перелічено в системних вимогах розробника; таблиці «скільки ядер на скільки користувачів» там немає, тому далі — інженерні орієнтири.

Що визначає швидкість#

Процесор: швидкість ядра важливіша за кількість ядер#

Проведення документа, звіт, закриття місяця — кожна така операція виконується здебільшого в один потік і на сервері BAS, і в СУБД. Тому час очікування залежить від швидкості одного ядра, а кількість ядер визначає, скільки людей можуть виконувати важкі операції одночасно. Для обліку 8 ядер із частотою 4,5–5 ГГц зазвичай кращі за 32 ядра з частотою 2–2,5 ГГц.

Для сеансів RDP Microsoft дає початкову оцінку: до 6 користувачів на ядро (vCPU) за легкої роботи на кшталт введення даних, 4 — за середньої, 2 — за важкої; щонайменше 4 ядра, а після приблизно 16 кожне наступне додає дедалі менше.

Пам’ять: сеанси, сервер BAS і СУБД#

Що споживає пам’ятьОрієнтир
Windows Server і служби4–6 ГБ
Клієнт BAS у сеансі, клієнт-серверний варіант0,3–0,7 ГБ
Клієнт BAS у сеансі, файлова база1–2 ГБ
Браузер із кількома вкладками й офісний пакет1,5–2,5 ГБ на сеанс
M.E.Doc на термінальному серверіза формулою розробника: 2 ГБ на активного користувача, 4–5 ГБ на систему, 1,5 ГБ на кожен модуль автоматичної обробки; ядер — 4 і ще по одному на активного користувача
Сервер BAS (усі процеси rphost)2–4 ГБ і ще 0,3–0,5 ГБ на сеанс
СУБДвід 8 ГБ; добре, коли активна частина бази вміщується в пам’ять

У клієнт-серверному варіанті сеанс із BAS, браузером і офісним пакетом займає 2–3 ГБ, із файловою базою — 3–4 ГБ; M.E.Doc рахуйте окремо. Усе, крім рядка про M.E.Doc, — оцінки з практики, а не норми розробника, тому виміряйте власні сеанси (крок 1 нижче).

Якщо СУБД працює на одному сервері із сеансами, обмежте її пам’ять. У SQL Server параметр max server memory типово фактично нічого не обмежує, і СУБД поступово займає всю вільну пам’ять; у PostgreSQL розмір кешу задає shared_buffers. Докладніше — у статті про сервер під PostgreSQL і MS SQL Server.

Диски: NVMe у дзеркалі#

  • NVMe. Облікова база — це безліч дрібних операцій читання й запису; жорсткі диски і навіть SATA SSD тут помітно повільніші.
  • Дзеркало (RAID 1) з двох дисків. Відмова одного диска не зупиняє роботу. Резервних копій дзеркало не замінює: видалений документ чи пошкоджена база «віддзеркаляться» миттєво.
  • Обсяг. Близько 100 ГБ на систему, 10–30 ГБ на профіль користувача і три-чотири розміри бази: база, вивантаження, журнал транзакцій, тимчасові файли СУБД.

Орієнтовна таблиця на 5, 10, 20 і 50 користувачів#

Увага. Це початковий орієнтир, а не гарантія і не норма розробника: потрібні ресурси залежать від конфігурації BAS, розміру бази і характеру роботи. Таблицю складено для типової конфігурації без значних доопрацювань, бази до 30 ГБ (5–10 користувачів) або до 100 ГБ (20–50) і сеансів із BAS, браузером та офісним пакетом. Якщо конфігурацію доопрацьовано, є обміни із сайтом, важкі звіти серед дня чи M.E.Doc на тому самому сервері — закладайте більше.

КористувачівСхемаЯдраПам’ятьДиски
5Файлова база і RDP, один сервер4–6 швидких32 ГБ2 × NVMe від 480 ГБ у дзеркалі
10Клієнт-серверний, один сервер6–8 швидких64 ГБ2 × NVMe від 960 ГБ у дзеркалі
20Клієнт-серверний, один сервер8–16 швидких128 ГБ2 × NVMe від 960 ГБ у дзеркалі; краще окрема пара під базу
50Клієнт-серверний, два серверисеанси: 16–24; база і сервер BAS: 8–16 швидкихсеанси: 128–192 ГБ; база: 64–128 ГБNVMe у дзеркалі на кожному сервері; на сервері бази — окрема пара під базу

Коли розділяти сервер бази і термінальний сервер. До 20 користувачів зазвичай вистачає одного сервера. Розділяйте, якщо одночасних користувачів понад 25–30, якщо моделям зі швидкими ядрами бракує пам’яті на сеанси і СУБД разом або якщо важкі звіти серед дня сповільнюють сеанси. Тоді на одному сервері працюють сеанси RDP з клієнтами BAS, M.E.Doc і офісним пакетом, на другому — сервер BAS і СУБД. Обидва замовляйте в одній країні і з’єднуйте приватною мережею: одна операція в BAS — це сотні дрібних запитів до бази, і затримка між серверами множиться на їхню кількість.

Як розрахувати сервер для своєї компанії#

  1. Виміряйте те, що є. У робочий день на нинішньому сервері відкрийте PowerShell від імені адміністратора:

    quser
    Get-Process | Group-Object SessionId | ForEach-Object {
      [pscustomobject]@{
        Session  = $_.Name
        MemoryGB = [math]::Round(($_.Group | Measure-Object WorkingSet64 -Sum).Sum / 1GB, 1)
      }
    } | Sort-Object MemoryGB -Descending

    Сеанс 0 — це служби (сервер BAS, СУБД), решта — користувачі; номери сеансів зіставте з виводом quser. Цифри трохи завищені через спільні сторінки пам’яті — для оцінки це запас. Виняток — SQL Server із правом Lock pages in memory: його закріплену пам’ять дивіться в самій СУБД.

  2. Порахуйте пам’ять. Система + сеанси × пам’ять на сеанс + сервер BAS + СУБД, і ще 20–25 % запасу. Приклад для 10 користувачів на одному сервері: 5 + 10 × 2,5 + 6 + 12 = 48 ГБ, із запасом — 60 ГБ, тобто модель із 64 ГБ.

  3. Оберіть процесор. Спершу частота ядра, потім кількість: ядра для сеансів за оцінкою Microsoft і ще 4–8 для сервера BAS і СУБД. Рахуйте фізичні ядра, а потоки залиште як запас.

  4. Підберіть диски і сплануйте резервні копії. На основних лінійках у вартість сервера входить місце для резервних копій на окремому сховищі (обсяг — у картці сервера); копіювання ви налаштовуєте самі.

  5. Закладіть запас на зростання — на рік-два. Пам’ять і диски після видачі можна додати лише на лінійках «Бізнес», «Потужність» та «Ультра» (через підтримку); на інших лінійках зазвичай ні — обирайте іншу конфігурацію.

Яку лінійку обрати#

  • Стандарт — процесори з високою частотою ядра (AMD Ryzen, Intel Xeon E) і серверні AMD EPYC; на більшості моделей є приватна мережа. Основний вибір для 5–20 користувачів на одному сервері і для обох серверів розділеної схеми.
  • Турбо — AMD Ryzen X3D, максимальна швидкість одного ядра. Для одного сервера «все в одному», коли найважливіше — швидкість проведення документів і звітів. Приватної мережі немає, тому для схеми з двох серверів не підходить.
  • Бізнес — AMD EPYC та Intel Xeon 6, DDR5, NVMe, приватна мережа до 25 Гбіт/с. Коли потрібно багато пам’яті й ядер — наприклад, для термінального сервера на 50 користувачів.
  • Потужність — десятки ядер і терабайти пам’яті: для великих систем із кількома базами чи віртуалізацією.
  • Лайт для робочого обліку не радимо: це сервери попередніх поколінь без приватної мережі, місця для резервних копій і віддаленої консолі.

Час відгуку: чи заважатиме відстань#

З більшості міст України час відгуку до серверів у Польщі — 15–25 мс, з Києва — близько 15 мс. Це наші вимірювання з мереж українських провайдерів у жовтні 2026 року; значення залежить від провайдера і маршруту, а з мобільного інтернету воно більше. За такої затримки віддалений робочий стіл працює без відчутних пауз, тому для BAS радимо сервери в Польщі.

Як перевірити, чи вистачає сервера#

Дивіться не на середні значення за добу, а на години пік: ранковий вхід і дні закриття періоду.

  • Диспетчер завдань (Ctrl+Shift+Esc). Вкладка Users показує пам’ять і процесор кожного сеансу. На графіку процесора (вкладка Performance) увімкніть логічні процесори: права кнопка миші → Change graph to → Logical processors. Якщо під час довгої операції одне ядро тримається близько 100 % або один процес на вкладці Details стабільно займає частку одного логічного процесора (близько 6 % на 16 процесорах), а загальне завантаження низьке, бракує швидкості ядра, а не кількості ядер.
  • Монітор ресурсів (resmon). На вкладці Memory стежте за стовпцем Hard Faults/sec: якщо там постійно сотні й більше, а вільної пам’яті мало, пам’яті бракує. На вкладці Disk у розділі Storage є Disk Queue Length — черга кожного диска.

Те саме в цифрах — у PowerShell від імені адміністратора (хвилина спостереження):

Get-Counter -Counter @(
  '\Processor Information(_Total)\% Processor Time',
  '\System\Processor Queue Length',
  '\Memory\Available MBytes',
  '\PhysicalDisk(_Total)\Avg. Disk Queue Length',
  '\PhysicalDisk(_Total)\Avg. Disk sec/Transfer'
) -SampleInterval 5 -MaxSamples 12
ЛічильникУ норміЧас діяти
% Processor Timeдо 50 %постійно понад 80–85 %
Processor Queue Lengthблизько нулястабільно 2 і більше на логічний процесор (значення поділіть на їхню кількість) за високого завантаження
Available MBytesпонад 20 % пам’ятіменше 10 % у години пік
Avg. Disk Queue Lengthменше 1стабільно понад 2 на диск
Avg. Disk sec/Transferдо 0,002 (2 мс)стабільно понад 0,010–0,015 (10–15 мс)

Порогові значення для завантаження і черги процесора та 10–15 мс для затримки диска взято з документації Microsoft, решта — поширені інженерні орієнтири. Назви лічильників наведено для англомовної Windows Server; у локалізованій системі їх покаже Get-Counter -ListSet *. Щоб записати цілий робочий день, додайте ці лічильники до збирача даних у perfmon (розділ Data Collector Sets).

Типові помилки#

  • СУБД без обмеження пам’яті поряд із сеансами. За кілька днів сеанси починають працювати з файлом підкачки.
  • Файлова база на 15–20 користувачів. Очікування на блокуваннях потужніший сервер не усуне — потрібен клієнт-серверний варіант.

Що далі#