# Resources & scaling

Every service declares an explicit CPU and memory for each of its replicas, and a web service scales by running a fixed number of replicas per location. This page covers picking a size, how replica counts work, the ceilings your plan sets, and how a resize applies.

## CPU and memory

You choose a CPU and a memory value for the service — every replica runs at exactly that size. Both are picked from discrete steps:

- 
-

Any CPU + memory pair is selectable, as long as memory stays within 8 GiB per vCPU. The rows below are representative examples with their monthly compute price — not presets:

| vCPU | Memory | Price |
| --- | --- | --- |
| 0.25 vCPU | 512 MiB | $5/mo |
| 0.5 vCPU | 1 GiB | $10/mo |
| 1 vCPU | 2 GiB | $20/mo |
| 2 vCPU | 4 GiB | $40/mo |
| 4 vCPU | 8 GiB | $80/mo |

Pick any CPU + memory (memory up to 8 GiB per vCPU).

Databases size the same way — you pick CPU and memory, and the disk is included automatically, sized from the memory you choose. See [Postgres](/docs/databases/postgres) and [Redis](/docs/databases/redis) for their size tables.

## Replicas

A web service scales horizontally with a fixed replica count in each of its locations. You set the number per location in the service's **Locations & replicas** settings — see [Locations & replicas](/docs/services/locations).

There is no autoscaler: no minimum/maximum range, and no metric-based scaling. The count you set is the count that runs.

Two modes treat the count differently:

- 
-

A web service with a [persistent volume](/docs/services/volumes) runs exactly one replica in one location, and databases always run exactly one replica in one location — neither has a count to set.

## Plan ceilings

Each plan sets, per service type, the largest CPU and memory a single service may request, and a per-location replica ceiling for web services. The numbers for every plan are on [usage and limits](/docs/account/usage-and-limits).

The console keeps you inside your ceilings as you drag the sliders, and names the plan that lifts a ceiling when you reach it. A request over a ceiling — from the console or the [API](/api/services) — is rejected with a `quota_exceeded` error that names the smallest plan that fits the request.

> **Note:**
>
> The always-free allowance covers one free unit — 0.5 vCPU / 1 GiB — of each service type on a primary account; see [the free tier](/docs/get-started/free-tier). On paid plans, compute above the allowance bills monthly in arrears — see [billing](/docs/account/billing).

## Resize a service

1. 
2. 
3. 
4.

Resizing is a [staged change](/docs/projects/staged-changes): nothing applies until you press Deploy. It requires the editor role or higher — see [teams and roles](/docs/collaboration/teams-and-roles).

Deploying creates a new [deployment](/docs/deploy/deployments-and-rollback) and replaces every replica at the new size. Watch the service's [status](/docs/observability/status) while the new replicas come up — the resize is done when the service reads online again.
