I'm looking for assistance for some trouble we're having with Procon and our Battlefield 3 server, relating to the size of our player ban list.
Our ban list has grown quite lengthy over the last couple of years, and unfortunately it's continuing to grow by the day with the rampant cheating and griefing in the game.
The problem we're having is that it seems each time a ban is added via the Procon GUI, it's performing a full update for known bans from the server. This means it iterates the full ban list with dozens of calls to banList.list in 100-length increments. (I've learned that this sequential lookup in 100-length lists is required and due to the BF3 server internals, which limit the responses to 100 items.)
With our ban list exceeding 2000+, the sequential banList.list fetches cause two problems:
1-5 minutes of the Procon process pegging to 100% CPU utilization and any GUI/connections going unresponsive for the duration.
A short, but significant, lag spike affecting gameplay on the server.
I'm posting today to ask for any suggestions to help us alleviate these issues. I've searched the forum a bit and issues on GitHub, but I haven't found much discussion surrounding this topic. Sorry if I have missed something.
An obvious attempt at a solution here is to drastically reduce the size of the ban list, however this isn't really feasible or viable for us; many of the abusive and cheating players are still active and return promptly when we do this, warranting another ban. It's ridiculous but this is true even for players banned a long time ago (year+).
I have some a few ideas for potential workarounds for us. These are just after a cursory look over the source code, so please excuse me if these are poor ideas due to my unfamiliarity:
Prevent the full BanList update after issuing a ban. It looks like there commit 9cfa19a references this change, but I'm uncertain if this is the same thing as what I'm thinking. (link here)
Increase the BanList packet cache TTL/duration within FrostbiteConnection.cs, to a value that is a couple of hours or even a day+. (link). My thought here is to reduce the amount of times the server itself needs to be queried for the full list.
My ideas here sound logical to me, since we primarily use Procon for ban management, but perhaps they aren't good ones and there are better options. My line of thought is that since Procon is aware of what the list is after the first load, any changes via the GUI are known to Procon and we could perhaps get by without a forced update every ban addition.
I feel comfortable forking the repository and trying to build the source with changes, but I first wanted to bring this up for discussion with you folks who are certainly much more knowledgeable with everything involved.
Thank you for your time,
Bryon
* Restored post. It could be that the author is no longer active.
Question
ImportBot
Originally Posted by LargeBanList*:
Howdy,
I'm looking for assistance for some trouble we're having with Procon and our Battlefield 3 server, relating to the size of our player ban list.
Our ban list has grown quite lengthy over the last couple of years, and unfortunately it's continuing to grow by the day with the rampant cheating and griefing in the game.
The problem we're having is that it seems each time a ban is added via the Procon GUI, it's performing a full update for known bans from the server. This means it iterates the full ban list with dozens of calls to banList.list in 100-length increments. (I've learned that this sequential lookup in 100-length lists is required and due to the BF3 server internals, which limit the responses to 100 items.)
With our ban list exceeding 2000+, the sequential banList.list fetches cause two problems:
I'm posting today to ask for any suggestions to help us alleviate these issues. I've searched the forum a bit and issues on GitHub, but I haven't found much discussion surrounding this topic. Sorry if I have missed something.
An obvious attempt at a solution here is to drastically reduce the size of the ban list, however this isn't really feasible or viable for us; many of the abusive and cheating players are still active and return promptly when we do this, warranting another ban. It's ridiculous but this is true even for players banned a long time ago (year+).
I have some a few ideas for potential workarounds for us. These are just after a cursory look over the source code, so please excuse me if these are poor ideas due to my unfamiliarity:
My ideas here sound logical to me, since we primarily use Procon for ban management, but perhaps they aren't good ones and there are better options. My line of thought is that since Procon is aware of what the list is after the first load, any changes via the GUI are known to Procon and we could perhaps get by without a forced update every ban addition.
I feel comfortable forking the repository and trying to build the source with changes, but I first wanted to bring this up for discussion with you folks who are certainly much more knowledgeable with everything involved.
Thank you for your time,
Bryon
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Archived
This topic is now archived and is closed to further replies.