Limits
Many “limits” quoted in the community are folklore. This page lists only what the official manual or the FXServer source states, and points to the tool that measures the rest on your own server.
Player slots and OneSync
sv_maxClients accepts 1 to 2048. The value decides which OneSync mode you
need:
sv_maxClients | Required onesync setting |
|---|---|
| 1-31 | any (off, legacy, on) |
| 32-64 | legacy or on |
| 65-2048 | on |
onesync on (formerly “OneSync Infinity”) culls player peds and vehicles
outside a focus zone around each player (424 units according to the official
OneSync page), so clients only create entities near them and player iteration
has to happen server-side. Licensing for higher slot counts is managed by Cfx;
check the official OneSync page
for the current terms. Configuration details are in OneSync.
There is no officially documented “stable” player count. Real capacity depends on resources, assets and hardware; load-test with your own content (see performance testing).
Entity pools
GTA V allocates fixed-size pools for peds, vehicles, objects, textures and other entity types. Their default sizes are not published in the official manual. You can raise an allowed pool at server startup:
# server.cfg
increase_pool_size "TxdStore" 6000
increase_pool_size "CMoveObject" 15- Only pools on the Cfx allow list can grow, each up to a maximum increase listed in the pool size table. An invalid request has no effect and logs a warning on the server.
- It is a startup-only setting. Clients restart the game the first time they
join a server with different pool sizes, as with
sv_enforceGameBuild. - Larger pools cost client memory, so raise only the pool that overflowed.
With onesync on the server can track more entities than any single client
creates, because clients only create entities in their focus zone.
Streamed assets
FXServer checks each streamed resource file’s physical and virtual memory size when the resource starts. It prints a warning above 16 MiB, escalates above 32 MiB and 64 MiB, and above 48 MiB adds “Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)”. There is no fixed file size at which clients are guaranteed to crash; treat any warning as the cue to downscale textures or split the asset. See asset streaming and asset performance.
Events and state bags
- Send only what the receiver needs. For large one-off transfers use latent events with a bandwidth limit, described in event delivery.
- Rate-limit client-to-server events per player on the server; see anti-cheat basics.
- State bags replicate every change. Do not use them for values that change every frame; see state bags.
Database calls
In oxmysql, MySQL.Sync.* is a deprecated alias of MySQL.*.await: it builds a
promise and waits with Citizen.Await, which yields the calling coroutine
rather than freezing the server thread. Serial awaits in a hot path still add
latency per query. Prefer MySQL.query.await(...) inside a thread or event
handler, batch related writes in a transaction, and see
database scripting.