Skip to Content
ReferenceLimits
Open in ChatGPTOpen in Claude

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_maxClientsRequired onesync setting
1-31any (off, legacy, on)
32-64legacy or on
65-2048on

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.

How to measure

  1. Client: resmon 1 in the F8 console shows per-resource CPU time and memory. Read resmon before acting on the numbers.
  2. Server: use the profiler to find slow server frames.
  3. Assets: read the oversized-asset warnings in the server console at resource start.