Over the past week I have been trying to migrate Arma 2: OA dedi server from Linux (Ubuntu 10.4) to Windows.
The server hardware is exactly the same (AMD Opteron 3280, 8 Cores, 16 GB DDR3-RAM, 2x 2,000 GB SATA II-HDD, 7.2k, 100/100Mbps switch) with the exception of the Linux server having an extra 16GB or RAM. The problem we are experiencing is massive lag on the Windows server that starts at around 50 players and as more join it becomes completely unplayable.
The Linux server is capable of handling around 80 players before the server FPS drops down to 5. Even then there is no actual lag on the server, just scripts start being delayed. At that point according to #monitor the server is sending ~12Mbps and receiving ~1Mbps. 2 threads are clearly doing some work, one being at 99% (the limiting factor of the FPS), the other at around 60% on a different core. The bandwidth config... does not actually exist so I assume it will be using default?
The Windows server... at 60 players it becomes completely unusable. Every person joining the server causes it to grind to a halt, first when connecting to the lobby, then once more after being spawned into the game. It totally freezes, #monitor output stops for up to 10 seconds. The server FPS is around 12 but it's fluctuating madly, it actually does then with 15 players too. It will dip down from 40 to 15 out of nowhere. This is accompanied by a spike in CPU usage but that never goes over 80% per core. The other cores are bored with less than 10% on them. Bandwidth usage at 70 players is around 7Mbps out, 700Kbps in.
The observed results (low CPU usage, low bandwidth) lead me to assume that there must be something wrong with the server config:
The Linux server is running 94342, Windows is on 94444 but we've tried older patches too.Code:language="English"; adapter=-1; 3D_Performance=48387; Resolution_Bpp=32; Windowed=0; MaxBandwidth=104857600; MaxMsgSend=128; MaxSizeGuaranteed=512; MaxSizeNonguaranteed=128; MinErrorToSend=0.001; MinErrorToSendNear=0.039999999; MaxCustomFileSize=0;