Running two servers over two IP addresses on the same hardware produces errors

We are currently running two servers in parallel on the same dedicated server. We also have two IP addresses for this server.

  • Both servers have their endpoints set to their dedicated IP address and they even use different ports.
  • Ports have been opened in the Windows and external firewall.
  • Both servers are using version 5848 currently.

Server A endpoints: (uses the primary IP address)

endpoint_add_tcp "a.b.c.d:30120"
endpoint_add_udp "a.b.c.d:30120"

Server B endpoints: (uses the secondary IP address)

endpoint_add_tcp "x.y.z.w:30121"
endpoint_add_udp "x.y.z.w:30121"

Server B produces this error every so often:

[ citizen-server-impl] Server list query returned an error: System.Threading.Tasks.TaskCanceledException: A task was canceled. <- System.TimeoutException: A task was canceled. <- System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 30 seconds elapsing.

And whichever server starts last has this error as the first thing in the console:

Could not register with breakpad server.

There also seems to be no problem impacting gameplay at all. It is just these two errors.
Especially the server list query error is just plain annoying. Any way around this problem? Did we miss something when configuring the server?

EDIT: Running both servers on the same IP address gets rid of the server list query error.

If a server isn’t listening on the primary IP of a machine, set sv_listingIPOverride to that IP.

This fixed the issue with the server list query, thank you!

Any idea about the other error? Don’t really care as long as it’s not breaking anything down the long run but would still like to know if it is fixable.

How quickly after one another are you launching the two servers, and what OS are you running them on?

This might be indicative of a bug somewhere in the server’s crash handler, which uses Google’s ‘Breakpad’ library.

Since we were testing, one after the other pretty quickly (as soon as one server was done loading resources (so literally a few seconds apart only).

I just tested 15min, 30min and 1 hour apart and it is still happening to the second server everytime.

Ah.

A few more questions (after I saw the first post did mention Windows):

  1. Are you running the two servers from the same artifacts directory?
  2. Are you running the two servers from the same data directory?
  3. What tool are you running to launch the servers?
  4. Do both servers run under the same Windows user account?

Oh yea, sorry, WIndows :smiley:

1+2. No, entirely different directories (both servers using the manual setup for windows without txAdmin)
3. .bat file executing the FXServer.exe like this:

cd /d D:\Kiminaze\FiveM_Server_A\data
D:\Kiminaze\FiveM_Server_A\server\FXServer.exe +exec server.cfg 
  1. No, they were started under different accounts, both Windows Administrator accounts.

Right, that should be enough information to replicate this issue - I guess somehow the server thinks there’s already a dump handler but it’s actually in the other session and therefore it can’t actually connect to it.

I have a few ideas on fixing this in the platform codebase - likely adding a OS session ID and the server path to the named pipe or such, and will hopefully work on such sometime soon.

Thanks for the insides and glad I could be of help :slight_smile:

If you require any more information, let me know!

For anyone else that comes across the Breakpad issue, we found if you don’t launch the FXserver.exe with Administrator perms, you’ll get this issue. Not sure if its the right way to launch it, but it works for us.