Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
One additional info - last time I tested RCON "say" command I observed micro-vibrations ("shimmies") on my client after sending just few messages. My Linux server was "up" for only few minutes. I stopped investigating at about this point and went on with other things in life.
I'll re-run the test on Linux after the next release, and I will post my findings here. I hope to close this topic soon, and start using RCON commands! For Plan-Z (when all else fails) I'll give WINE a shot.
We experienced as well playing on a full server many hours in a row zero issues... while recently it seems to always "stutter" after a while. These moments take less than a second and in between there might be up to a minute full stutter free gaming.
I doubt this to be hardware related, one of our test grounds is a dedicated server XEON E3 based with 3.5GHz and 32GB RAM in example, on Windows Server 2012 OS.
I suspect obviously a code difference in between the community server binaries compared to the matchmaking servers (matchmaking demands), perhaps a certain background / coding issue influencing the community servers not restarting every round (backend connectivity, EAC connectivity etc), while matchmaking servers seem to be created on demand and per round. So pratically they are restarted/newly created all the time.
I still get map change crashes, server lock up under certain conditions and the dreaded 95 black screen, but none are related to rcon.
the community server is different than the matchmaking server but at a same time the matchmaking server doesn't have stutter because the server is automatic kill after every match. After you finish the matchmaking, you will go back to the menu. At that time the server is kill and restart and then you will be looking for a new matchmaking in a new server if you're going to continue playing for the next match. That's why they don't have stutter and really stable because it killed. For our community server, player keep playing in the same server over and over again without restart the server. That cause the stutter for us in the long run.
For the QC department this is what I did to test it:
1) Debian9/64 Linux Community Dedicated Server (2-core Xeon, 4GB RAM)
2) Install htop: sudo apt-get install htop
2) Install mcrcon:
Download from: https://github.com/Tiiffi/mcrcon
Compile as: gcc -std=gnu11 -pedantic -Wall -Wextra -O2 -s -o mcrcon mcrcon.c
3) BASH Test script loop.sh as follows:
4) Run it for about 10 minutes and observe by "htop" that CPU usage creeps up after 5-10 minutes.
Mitigation:
Reduce use of RCON to absolute minimum between server reboots. Occasional manual remote kick/ban of players is ok.
I used MCRCON for test because this tool was mentioned in the Sandstorm Admin Guide -- hoping that the NWI QC team was familiar with it. I used my own RCON driver also, and got the same result.
I chose the 1.0Hz rate because I wasn't sure if UE4 has a built-in counter-spoofing algorithm. I
didn't want to make it angry!
Very good to know you can offer independent confirmation with a different tool & execution timing, thank you!
I'm observing things got WORSE than the previous versions.
CPU % now goes up at much faster rate even on a idle (zero player) server.
Still reproducible on version 1.1.4.
Meanwhile your post explains this:
https://steamcommunity.com/app/581320/discussions/1/1813170373219376670/
...since I wrote my on MOTD and connection/disconnection announcements via the Rcon.
I concur with Ferret’s finding of growing thread-count. I found this is independent of number of RCON commands sent to the server, instead, this is due to repeated opening-closing of the UDP connection. You can watch the thread-count like so:
NWI Dedi Server software appears to spawn a thread for each new UDP connection (while UDP is connectionless I assume the server has to track “channel” for password-authenticated security). It fails to terminate the thread when client disconnects. Therefore if you are using tools like mcrcon to periodically broadcast server policies via the “say” RCON command, you will end up with 500-700 zombie threads after few hours, consuming CPU cycles under the name of kernel services.
A client-side workaround is to write your own app (C/C++, Python, etc.) that opens/connects to the server once, and use this connection for all your RCON command/status interactions. I found thread count to stay fixed even after many hours of up-time, and that red bar on htop (kernel services) pretty much stays fixed. As with any network software, your client should detect a closed or unresponsive connection with the server, and automatically re-connect when prudent.
For NWI, if you decide to fix this in the future:
* Detecting client disconnect and killing the thread is the ideal fix IMHO.
* I’m aware of at least one game the server implements timeout algorithm to close the client connection and kill inactive threads. If you do this, please let the community know so we know the timeout value, as we may need to send “keep-alive” pings to maintain open connection.
* You could add a new rcon command “close” – I think mcrcon can handle multiple rcon commands so some server operator might postfix with this (I did not verify this mcrcon behaviour/feature!)
* If you don’t plan to fix this issue, perhaps update your documentation to make clear that client RCON app should not repeatedly connect/disconnect. If you are recommending use of mcrcon, you might make a note that using this in a bash loop or cron may degrade your server performance over time.
Last tested on Dedi Server version 1.1.4, using Debian 9 64-bit Stretch