10 Windows VPS Workloads That Actually Pay Off: IIS, SQL, RDS, Build Agents and More

A Windows VPS is only worth its licence cost if the workload it runs cannot be served more cheaply elsewhere. The table below maps the ten most common production workloads seen on Windows Server 2022/2025 VPS instances to the resources they genuinely consume, so you can size before you buy instead of after.

WorkloadMinimum vCPUMinimum RAMStorage profileLicensing note
Single ASP.NET Core site behind IIS24 GB80 GB NVMeHosted by provider, no CALs
IIS + SQL Server Express48 GB120 GB NVMeExpress = 10 GB DB cap, 1.4 GB buffer pool
SQL Server Standard4-816-32 GB200 GB+ NVMePer-core licensing, own licence often required
RDS Session Host (5-10 users)416 GB100 GBRDS CALs per user/device
Active Directory + DNS24 GB60 GBCALs required for domain users
.NET CI/CD build agent4-816 GB200 GB NVMe (MSBuild is I/O heavy)No CALs for build service accounts used internally
Remote Desktop Gateway24 GB60 GBCALs only if terminating RDS sessions
PowerShell automation / scheduled jobs1-22-4 GB60 GBCheapest tier
Game server (single instance)2-48-16 GBNVMe strongly preferredConsumer Windows permitted only if licence terms allow
File / SMB share with quota management24 GBStorage-sizedSMB CALs

1. IIS Hosting for ASP.NET Core

IIS remains the default reverse proxy for .NET on Windows. Install the ASP.NET Core Hosting Bundle, then confirm the module registered correctly:

net stop was /y
net start w3svc
dotnet --list-runtimes | Select-String "AspNetCore"
Get-WebGlobalModule | Where-Object name -like "AspNetCoreModuleV2"

If AspNetCoreModuleV2 is absent, the Hosting Bundle did not register — reinstall it and restart WAS, not just W3SVC. A single low-traffic site fits comfortably in 2 vCPU / 4 GB; the bottleneck is almost always first-request JIT, not throughput.

2. SQL Server Express vs Standard

Express is hard-capped at 10 GB per database, 1,410 MB of buffer pool, and 4 cores. You can verify the cap from the instance itself:

SELECT SERVERPROPERTY('Edition'), SERVERPROPERTY('EngineEdition');
SELECT name, size/128.0 AS size_mb FROM sys.database_files;

Move to Standard when any database approaches 8 GB, when you need SQL Agent (Express has no Agent — a common surprise when migrating backup jobs), or when buffer pool pressure shows as high Page life expectancy churn in PerfMon. Review the sizing tradeoffs in our Windows VPS comparison table before jumping tiers.

3. RDS Session Host

A session host is the workload that most often gets undersized. Budget roughly 2 GB of RAM per interactive user once Office and a browser are open, and note that Windows Server allows 2 administrative RDP sessions free — beyond that you need the RDS role and CALs. If your users only need one published app, RemoteApp is dramatically cheaper than a full desktop; the difference is covered in our RemoteApp vs session host breakdown.

4. Active Directory and DNS

A single-domain-controller setup runs in 4 GB, but it must not share a VPS with a workload that reboots for application updates. AD is latency-sensitive and unforgiving about unclean shutdowns. Keep FSMO roles, DNS zones, and DHCP together on a dedicated 2 vCPU instance unless you have a second DC.

5. .NET CI/CD Build Agents

Self-hosted agents are the highest-value Windows VPS use case for development teams, because hosted runners are expensive at volume and ship with a fixed toolset. Give MSBuild real NVMe — the obj and bin churn is random I/O heavy:

msbuild MySolution.sln /t:Restore,Build /p:Configuration=Release /m:4 /v:minimal

# install agent as a service, run as a dedicated non-admin account
.\config.cmd --url https://dev.azure.com/ORG --auth PAT --runAsService --windowsLogonAccount "CONTOSO\svc-build"

Run the agent service under a least-privilege account that is local admin only if the pipeline needs to install SDKs. This isolation pattern is worth copying from our Windows VPS build agent guide.

6. Remote Desktop Gateway

An RD Gateway lets you expose exactly one port (443) instead of 3389. Configure the RDP-Tcp listener to accept only gateway connections once the gateway is validated:

$s = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $s -Name UserAuthentication -Value 1
Set-ItemProperty -Path $s -Name SecurityLayer -Value 2

7-10. Automation Hosts, Game Servers, File Shares

  • Automation host: 1-2 vCPU runs all your scheduled PowerShell, but disable the desktop experience and skip the GUI.
  • Game servers: single-thread performance dominates; NVMe over SSD is a real gain, and you must confirm the host permits consumer Windows licences.
  • File shares: size storage, not CPU. Enable FSRM quotas before the share fills, not after.

Sizing Shortcut

Measure, do not guess. Capture 24 hours of baseline on a live instance and read the counters that matter:

Get-Counter -Counter "\Processor Information(_Total)\% Processor Utility",
  "\Memory\Available MBytes",
  "\LogicalDisk(_Total)\Avg. Disk sec/Read", "\LogicalDisk(_Total)\Avg. Disk sec/Write" \
  -SampleInterval 15 -MaxSamples 240 | Export-Counter -Path C:\baseline.blg -Force

Sustained disk latency above 20 ms or available memory below 10% of total are the two signals that justify a tier upgrade.

Recommended Entry Point

For a single IIS or SQL workload, InterServer Windows VPS is the lowest-cost way to get licensed Windows Server with full admin rights — promotional code TRYINTERSERVER brings the first month to $0.01, and renewals stay flat rather than spiking. If you need faster NVMe and API-driven provisioning for build agents, Vultr is the better fit.

Storage Tiers Change the Answer More Than CPU

Two VPS instances with identical vCPU and RAM counts can differ by a factor of five in database and build performance purely on storage. The practical tiers and what they mean for the workloads above:

TierTypical latencyWorkloads it supportsWhere it fails
SATA SSD0.5-2 msSingle IIS site, low-traffic SQL Express, file sharesBuild agents, SQL Standard under load
NVMe0.05-0.2 msSQL Server, MSBuild, multi-site IIS, session hosts with FSLogixNothing typical — this is the default choice
Network/cloud block storage0.5-5 ms variableArchival, backups, cold file sharesAnything transactional — latency jitter breaks SQL and MSBuild
HDD5-15 msBackup targets onlyEvery production workload

The trap is network-attached storage marketed as fast because throughput benchmarks look good. SQL Server and MSBuild care about random read latency and write latency, not sequential throughput, so a tier with 200 MB/s sequential and 5 ms random write is worse for both than a local NVMe with a quarter of the throughput. Always confirm whether the disk is local or network-backed before ordering.

# measure random write latency, which is what actually matters
Get-Counter "\LogicalDisk(C:)\Avg. Disk sec/Write" -SampleInterval 2 -MaxSamples 15 | ForEach-Object {
  [math]::Round($_.CounterSamples[0].CookedValue * 1000, 2)
}

What to Do Next

Pick your workload from the first table, size it from the second, and measure rather than assume. If you are still between providers, the pricing, storage tier, and licensing inclusions for the hosts most commonly used for Windows workloads are laid out side by side in our Windows VPS comparison table.

Leave a Comment