Accounting, databases and remote work
Server for BAS with 5, 10, 20 or 50 users: CPU, memory and disks
Contents
For an administrator or manager choosing a dedicated server for BAS with 5–50 users. You get an approximate configuration (cores, memory, disks) and a way to check that it is enough.
What you will need#
- The number of users working at the same time, and a forecast for a year or two.
- The database size and how fast it grows.
- Programs running alongside BAS: M.E.Doc, an office suite, a browser, a banking client.
Licences for BAS, Windows Server and the DBMS are not covered here.
Two ways to run BAS#
File database and remote desktops#
The database is a single file on the server’s disk. Users sign in over RDP and start BAS on the server itself. There is no separate BAS server or DBMS: the program in each user’s session does all the work, so one user’s long operation (month-end closing, reposting) slows everyone else down. The developer describes this variant as simple to install and run, and intends the client-server one for many concurrent users. In practice a file database works well for up to 5–7 concurrent users; 10 is already the limit.
Keep the database file on the server where the sessions run. Do not open it from office computers over a network share or a VPN: it is slow, and a dropped connection can damage the database.
Client-server variant with a DBMS#
Three tiers: a thin client in the user’s session, the BAS server (rphost worker processes) and a DBMS, most often MS SQL Server or PostgreSQL. Calculations and locking happen on the server, users get in each other’s way less, and the tiers can be split across two servers. From 10 users up this is the main option. Supported operating systems and DBMSs are listed in the developer’s system requirements; they have no “cores per users” table, so what follows are engineering rules of thumb.
What determines speed#
Processor: core speed matters more than core count#
Posting a document, building a report, closing the month: each runs mostly in one thread, both on the BAS server and in the DBMS. So waiting time depends on single-core speed, while the core count sets how many people can run heavy operations at once. For accounting, 8 cores at 4.5–5 GHz usually beat 32 cores at 2–2.5 GHz.
For RDP sessions Microsoft gives an initial estimate: up to 6 users per core (vCPU) for light work such as data entry, 4 for medium, 2 for heavy; at least 4 cores, and beyond roughly 16 each extra core adds less and less.
Memory: sessions, the BAS server and the DBMS#
| Consumer | Estimate |
|---|---|
| Windows Server and services | 4–6 GB |
| BAS client in a session, client-server variant | 0.3–0.7 GB |
| BAS client in a session, file database | 1–2 GB |
| Browser with a few tabs and an office suite | 1.5–2.5 GB per session |
| M.E.Doc on a terminal server | by the developer’s formula: 2 GB per active user, 4–5 GB for the system, 1.5 GB per automatic processing module; cores: 4 plus one more per active user |
BAS server (all rphost processes) | 2–4 GB plus 0.3–0.5 GB per session |
| DBMS | from 8 GB; ideally the active part of the database fits in memory |
In the client-server variant a session with BAS, a browser and an office suite takes 2–3 GB; with a file database, 3–4 GB. Count M.E.Doc separately. Apart from the M.E.Doc row, these are estimates from practice, not the developer’s standards, so measure your own sessions (step 1 below).
If the DBMS runs on the same server as the sessions, cap its memory. By default SQL Server’s max server memory limits nothing in practice, so the DBMS gradually takes all free memory; in PostgreSQL the cache size is set by shared_buffers. See the article on a server for PostgreSQL and MS SQL Server.
Disks: mirrored NVMe#
- NVMe. An accounting database means a great many small reads and writes; hard drives and even SATA SSDs are noticeably slower here.
- A mirror (RAID 1) of two disks. One failed disk does not stop work. A mirror does not replace backups: a deleted document or a damaged database is “mirrored” instantly.
- Capacity. About 100 GB for the system, 10–30 GB per user profile and three to four times the database size: the database, dumps, the transaction log, DBMS temporary files.
Indicative table for 5, 10, 20 and 50 users#
Warning. This is a starting point, not a guarantee and not the developer’s standard: what you need depends on the BAS configuration, the database size and how people work. The table assumes a typical configuration without major customisation, a database of up to 30 GB (5–10 users) or up to 100 GB (20–50), and sessions with BAS, a browser and an office suite. With a customised configuration, exchanges with a website, heavy daytime reports or M.E.Doc on the same server, plan for more.
| Users | Layout | Cores | Memory | Disks |
|---|---|---|---|---|
| 5 | File database and RDP, one server | 4–6 fast | 32 GB | 2 × NVMe from 480 GB, mirrored |
| 10 | Client-server, one server | 6–8 fast | 64 GB | 2 × NVMe from 960 GB, mirrored |
| 20 | Client-server, one server | 8–16 fast | 128 GB | 2 × NVMe from 960 GB, mirrored; ideally a separate pair for the database |
| 50 | Client-server, two servers | sessions: 16–24; database and BAS server: 8–16 fast | sessions: 128–192 GB; database: 64–128 GB | mirrored NVMe on each server; on the database server, a separate pair for the database |
When to separate the database server from the terminal server. Up to 20 users, one server is usually enough. Split above 25–30 concurrent users, when models with fast cores lack memory for the sessions and the DBMS together, or when heavy daytime reports slow the sessions down. One server then runs the RDP sessions with BAS clients, M.E.Doc and the office suite; the other runs the BAS server and the DBMS. Order both in the same country and connect them over the private network: one BAS operation means hundreds of small database queries, and the delay between the servers is multiplied by their number.
How to size a server for your company#
Measure what you have. On a working day, open PowerShell as administrator on the current server:
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 -DescendingSession 0 is the services (BAS server, DBMS), the rest are users; match the session numbers with the
quseroutput. Shared memory pages make the figures slightly high; for an estimate that is a margin. The exception is SQL Server with the Lock pages in memory right: check its locked memory in the DBMS itself.Add up the memory. System + sessions × memory per session + BAS server + DBMS, plus a 20–25% margin. Example for 10 users on one server: 5 + 10 × 2.5 + 6 + 12 = 48 GB, 60 GB with the margin, so a model with 64 GB.
Choose the processor. Core frequency first, then the count: cores for the sessions by Microsoft’s estimate plus 4–8 for the BAS server and the DBMS. Count physical cores and keep the threads as a margin.
Pick the disks and plan the backups. On the main lines, backup space on separate storage is included in the price of the server (the amount is on the server card); you set up the copying yourself.
Allow for growth a year or two ahead. Memory and disks can be added after delivery only on the Business, Power and Ultra lines (through support); on the other lines usually not — choose a different configuration instead.
Which line to choose#
- Standard: high-clock processors (AMD Ryzen, Intel Xeon E) and server-grade AMD EPYC; most models have a private network. The main choice for 5–20 users on one server and for both servers of the split layout.
- Turbo: AMD Ryzen X3D, maximum single-core speed. For a single all-in-one server where posting and report speed matters most. No private network, so it does not suit the two-server layout.
- Business: AMD EPYC and Intel Xeon 6, DDR5, NVMe, a private network of up to 25 Gbit/s. For a lot of memory and cores, such as a terminal server for 50 users.
- Power: dozens of cores and terabytes of memory, for large systems with several databases or virtualization.
- Lite is not recommended for production accounting: these are previous-generation servers without a private network, backup space or a remote console.
Response time: will the distance get in the way#
From most Ukrainian cities the response time to servers in Poland is 15–25 ms; from Kyiv, about 15 ms. These are our measurements from Ukrainian providers’ networks in October 2026; the figure depends on the provider and route and is higher on mobile internet. With such a delay a remote desktop works without noticeable pauses, so for BAS we recommend servers in Poland.
How to check whether the server is enough#
Look at peak hours, not daily averages: the morning sign-in and period-closing days.
- Task Manager (Ctrl+Shift+Esc). The Users tab shows memory and processor use per session. On the processor graph (Performance tab), switch to logical processors: right-click → Change graph to → Logical processors. If during a long operation one core stays near 100%, or one process on the Details tab steadily takes the share of one logical processor (about 6% on 16 processors), while the overall load is low, you are short of core speed, not of cores.
- Resource Monitor (
resmon). On the Memory tab, watch the Hard Faults/sec column: a constant few hundred or more with little free memory means memory is short. On the Disk tab, the Storage section shows Disk Queue Length for each disk.
The same in figures, in PowerShell as administrator (one minute of observation):
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| Counter | Healthy | Time to act |
|---|---|---|
% Processor Time | up to 50% | constantly above 80–85% |
Processor Queue Length | close to zero | steadily 2 or more per logical processor (divide the value by their number) under high load |
Available MBytes | over 20% of memory | under 10% at peak hours |
Avg. Disk Queue Length | below 1 | steadily above 2 per disk |
Avg. Disk sec/Transfer | up to 0.002 (2 ms) | steadily above 0.010–0.015 (10–15 ms) |
The thresholds for processor load and queue and the 10–15 ms for disk latency come from Microsoft’s documentation; the rest are common engineering rules of thumb. Counter names are for English-language Windows Server; on a localised system Get-Counter -ListSet * lists them. To record a whole working day, add these counters to a data collector in perfmon (Data Collector Sets).
Common mistakes#
- A DBMS with no memory cap next to the sessions. Within a few days the sessions start working from the page file.
- A file database for 15–20 users. A more powerful server will not cure waiting on locks; you need the client-server variant.
What next#
- Pick a model in the dedicated server catalogue. The article on choosing a line and a configuration explains how the lines differ; company scenarios are on the For business page.
- In the comment to your request, state the number of users, the database size and the DBMS: we confirm the configuration before issuing the invoice. For questions, call +38 044 206 08 08; technical support is available around the clock.
- Planning a move? Read how to move an accounting database to a server in Europe.
- Right after the server is delivered, close RDP off from the whole internet and set up database backups.