Hey guys, I've been battling with this problem on and off over two different sets of machines and a couple of years now and I have finally reached the end of my tether in knowing what to do with regards to solving this problem. There seem to be so many variables that I can't quite pin what could be causing this down.
For anyone who wants to test this out, the IP address is:
tf2.mylittlemercs.co.uk
In brief, we are having lots of lag issues with our servers. This can sometimes be coupled with high choke, even after I spent all this time reading:
http://whisper.ausgamers.com/wiki/index.php/Tickrate
Now I realise the tickrate command was removed and running at 100 tickrate is mostly redundant.
However when visiting a group of servers that were reported to run near flawlessly, lag free I noticed they were running at 33 tick compared to the stock 66 which led me to the tickrate enabler plugin. Hence I have been experimenting as a last ditch attempt to solve my extrapolation problems.
Some pictures to illustrate the net graph I have been looking at:
An example of high choke:
An example of both the server not keeping up with the set tickrate (here it is the default 66) and also the two bizarre extrapolation peaks we keep getting:
I ought to point out I have never seen the server fps drop below its correct value.
I also get a slightly smaller single peak often. These peaks are most definitely NOT random, however they can happen at random intervals. Often when there are greater than 8 players on the server.
I have tried disabling plugins one by one and nothing could be determined conclusively that helped. I've sometimes had to restart the server. I've noticed various pieces of console spam before such as:
datatable warning: player: out-of-range value (346.000000) in sendpropfloat 'm_angeyeangles[0]', clamping.
However a map change usually makes them disappear.
I then went through disabling each extension, eventually restarting the server with only metamod loaded and no meta plugins. This did prove to be stable, but at the time I wasn't looking at choke and the server didn't fill up again to test properly.
My server is set to log everything to file and also to the console so that I can watch for any anomalies. I am not sure whether this in itself could cause the lag.
To make this clear, this problem has happened even on a stock server, however it can be so difficult to test since getting a server instance full while you are messing around with it can be difficult and people will only take so much.
I am running meta version:
-> meta version
Metamod:Source version 1.10.0
Build ID: 860:a58a1912f602
Loaded As: Valve Server Plugin
Compiled on: Aug 25 2013
Plugin interface version: 15:14
SourceHook version: 5:5
http://www.metamodsource.net/
and sourcemod version:
SourceMod Version Information:
SourceMod Version: 1.5.2
SourcePawn Engine: SourcePawn 1.1, jit-x86 (build 1.5.2)
SourcePawn API: v1 = 4, v2 = 4
Compiled on: Oct 29 2013 17
4
8
Build ID: 3946:238c41726d73
http://www.sourcemod.net/
My plugin list is as follows:
01 "Basic Comm Control" (1.5.2) by AlliedModders LLC
02 "[UMC] Prefix Exclusion" (3.4.5) by Steell
03 "[UMC] Map Commands" (3.4.5) by Steell
04 "[UMC] Ultimate Mapchooser Core" (3.4.5) by Steell
05 "[UMC] Echo Nextmap" (3.4.5) by Steell
06 "[UMC] Post-Played Exclusion" (3.4.5) by Sazpaimon and Steell
07 "[UMC] Player Limits" (3.4.5) by Steell
08 "[UMC] Player Count Monitor" (3.4.5) by Steell
09 "[UMC] Time Limits" (3.4.5) by Steell
10 "[UMC] Nominations" (3.4.5) by Steell
11 "[UMC] Vote Command" (3.4.5) by Steell
12 "[UMC] Random Cycle" (3.4.5) by Steell
13 "[UMC] Map Weight" (3.4.5) by Steell
14 "[UMC] Admin Menu" (3.4.5) by Steell
15 "[UMC] End of Map Vote" (3.4.5) by Steell
16 "[UMC] End of Map Vote Warnings" (3.4.5) by Steell
17 "[UMC] Map Rate Reweight" (3.4.5) by Steell
18 "[UMC] Rock The Vote" (3.4.5) by Steell
19 "[TF2] gScramble (Redux)" (3.0.16) by David
20 "Basic Votes" (1.5.2) by AlliedModders LLC
21 "Reserved Slots" (1.5.2) by AlliedModders LLC
22 "Admin File Reader" (1.5.2) by AlliedModders LLC
23 "Fun Commands" (1.5.2) by AlliedModders LLC
24 "Admin Menu" (1.5.2) by AlliedModders LLC
25 "Anti-Flood" (1.5.2) by AlliedModders LLC
26 "Basic Info Triggers" (1.5.2) by AlliedModders LLC
27 "Basic Commands" (1.5.2) by AlliedModders LLC
28 "TF2 Class Restrictions" (0.6) by Tsunami
29 "Basic Chat" (1.5.2) by AlliedModders LLC
30 "SMAC Command Monitor" (0.8.5.0) by SMAC Development Team
31 "SourceMod Anti-Cheat" (0.8.5.0) by SMAC Development Team
32 "SMAC Anti-Speedhack" (0.8.5.0) by SMAC Development Team
33 "SMAC Eye Angle Test" (0.8.5.0) by SMAC Development Team
34 "SMAC Rcon Locker" (0.8.5.0) by SMAC Development Team
35 "SMAC Aimbot Detector" (0.8.5.0) by SMAC Development Team
36 "SMAC ConVar Checker" (0.8.5.0) by SMAC Development Team
37 "Advertisements" (0.6) by Tsunami
38 "Player Commands" (1.5.2) by AlliedModders LLC
39 "Client Preferences" (1.5.2) by AlliedModders LLC
40 "Updater" (1.1.5) by GoD-Tony
41 "Sound Commands" (1.5.2) by AlliedModders LLC
42 "Be the Robot" (1.3) by MasterOfTheXP
43 "Spray Tracer" (5.8a) by Nican132, CptMoore, Lebson506th
44 "Admin Help" (1.5.2) by AlliedModders LLC
45 "Fun Votes" (1.5.2) by AlliedModders LLC
I have also disabled (after the latter two screenshots but before the first) any plugin that contacts a local mysql server, these plugins being:
MapRate
Notices
ParanoiaIP
Sourcebans
sm exts list:
[01] Automatic Updater (1.5.2): Updates SourceMod gamedata files
[02] Webternet (1.5.2): Extension for interacting with URLs
[03] SMRCon (1.2.1): Tools for SM plugins to interact with rcon auth and requests
[04] BinTools (1.5.2): Low-level C/C++ Calling API
[05] TF2Items (1.5.3): TF2 Item Modifier
[06] TF2 Tools (1.5.2): TF2 extended functionality
[07] SDK Hooks (1.5.2): Source SDK Hooks
[08] SDK Tools (1.5.2): Source SDK Tools
[09] Top Menus (1.5.2): Creates sorted nested menus
[10] Regex (1.5.2): Provides regex natives for plugins
[11] Client Preferences (1.5.2): Saves client preference settings
[12] SQLite (1.5.2): SQLite Driver
[13] file "steamtools.ext.so": /home/server/tf2/s1/tf/addons/sourcemod/extensions/steamtools.ext.so: cannot open shared object file: No such file or directory
[14] file "curl.ext.so": /home/server/tf2/s1/tf/addons/sourcemod/extensions/curl.ext.so: cannot open shared object file: No such file or directory
[15] Socket (3.0.1): Socket extension for SourceMod
[16] MySQL-DBI (1.5.2): MySQL driver implementation for DBI
I ought to point out the steamtools and curl extensions are used by updater and I wasn't using the plugin until recently. According to the updater plugin page:
Your server must be running at least one of the following extensions:
cURL
Socket
SteamTools (0.8.1+)
And hence I am running only socket. I didn't want to add more variables to an already complex problem.
As for meta plugins:
-> meta list
Listing 6 plugins:
[01] SourceMod (1.5.2) by AlliedModders LLC
[02] SMRCon (1.2.1) by psychonic
[03] TF2Items (1.5.3) by Asherkin & AzuiSleet & Damizean
[04] TF2 Tools (1.5.2) by AlliedModders LLC
[05] SDK Hooks (1.5.2) by AlliedModders LLC
[06] SDK Tools (1.5.2) by AlliedModders LLC
I have even gone as far as run a few srcds profiles and recorded the time of the spikes in a hope to correlate them back to actual plugin calls.
Here is the profiler XML. The profile was flushed at 9: 39 pm and hence a new profile (the one I have linked was started).
At 9: 39:46 I had a small spike followed by a large one at 9:44:08 and I stopped the profiler at 9:44:48.
https://dl.dropboxusercontent.com/u/...1384465510.xml
I think the calls are recorded in order with the time taken, so I was thinking I could make a simple program to parse through the XML and tell me what happened a specified number of seconds from the start of the profile.
Now for the obvious. Rate settings:
// Frame rate limiter
fps_max 600 (irrelevant due to updates, the server fps is limited to the tickrate)
// Max bandwidth rate allowed on server, 0 == unlimited
sv_maxrate 60000 (I read that increasing the maxrate helps with choke, however depending on the map I still get high 50+ choke and I am sure it isn't my internet connection).
// Maximum updates per second that the server will allow
sv_maxupdaterate 100 (I was running my server with 100 tick at the time, I have changed this before to reflect the -tickrate setting at run time) Either way, when running the server at the default 66, this was set to 66 as well.
Last by not least server specs:
Processor: AMD Opteron 3250
Ram: 8GiB
OS: Debian 7
I'm sorry for the wall of text, however I am fed up and felt like I should give as much information as I can think of from the offset.
Any help would be most appreciated!