Replication Server bottleneck

I wonder how well the single replication server scales. Say for an MMO with 10.000 players. Is it possible to have multiple? Do you have any numbers on that?

Hey!

That’s a fairly complex question to which, I’m afraid, I won’t be able to provide an answer other than “it depends”.

First, there’s a question of the workload. In other words, how much strain does each player put on the Replication Server? This depends on many factors like:

  • How many entities does each player control?
  • How many variables does each player sync and at what rate?
  • How many Live Queries do they have and how often do they update those?
  • How many other entities does each player see on average?
  • How many commands do they send? How big are the commands? Are those broadcasts or single target?
  • How many NPCs are there?
    … and many, many more

Then, there’s a question of hardware. Server hosted on a server with a 128 core EPYC CPU, hundreds of gigs of RAM and a high end NIC is likely to serve more players than a typical dev machine.

That said, the Replication Server has been designed to take heavy use of multi-threading and should scale well for most workloads. It was also built with a “you don’t pay for the things you do not use” philosophy, so entities that are not being updated, incur virtually no computational costs (except for when they have to be synced due to entering or leaving player’s query).

Over the years we’ve run multiple benchmarks, on multiple different hardware setups, and with different workload scenarios. In most cases we could out-of-the-box handle thousands of entities or players, in other’s we’d need to leverage our Optimization window and tweak Live Queries to make it fly.

The smartest thing you can do in my opinion is, not to take my words, and just test it yourself, with your specific workload. The Replication Server executable is right there in the SDK (for Linux, OSX and Windows). You can fairly easily build a test client that can make dozens of connections to the Replication Server, simulating your typical player behavior for each one. Run the Replication Server on the target hardware, spin up the clients on some cloud VMs, and observe.

Even smarter thing you could probably do is, consider if you really need all those players on one server. I don’t know of a single commercial MMO that tries to handle 10 000 players on a single server. Each one that I’m aware of uses some kind of sharding or instancing (with or without seamless travel between). There’s nothing preventing you from implementing sharding by running multiple Replication Servers.

@cary has been playing with that concept for quite some time, he can probably provide some guidance if needed.

Hope that helps!

1 Like

This topic was automatically closed after 30 days. New replies are no longer allowed.