Jump to content

Roy

Banned
  • Posts

    2,853
  • Joined

  • Last visited

  • Days Won

    383

Posts posted by Roy

  1. Moving this to public since I'd like everyone to be aware of this situation. I made the post quickly so I apologize for any mistakes (I have other things to do today, but I just wanted to address this first).

     

    Thank you.

  2. Hi all,

     

    The Situation + Servers Affected

    I just wanted to address an issue with one of our machines. Our GS06 machine is currently highly overloaded. At the moment, the following servers are ran on it:

     

    b_560_95_1.png

    b_560_95_1.png

    b_560_95_1.png

    b_560_95_1.png

    b_560_95_1.png

    b_560_95_1.png

    b_560_95_1.png

     

    During peak times, our machine gets to 99+% CPU which results in severe performance issues. With that said, hyper-threading is also disabled on this machine. Typically, this wouldn't result in even poorer performance, but hyper-threading does help machines that are overloaded.

     

    What Needs To Be Done

    Talks With Hosting Provider

    So, I've been trying to talk to our hosting provider (GMCHosting). We've been trying to aim for a new machine that includes the i7-9700K overclocked to 5.1 GHz. This would be the best solution due to the extra core count along with the insane single-threaded performance (5.1 GHz overclock? That's crazy!) and I was told around two months ago there would be machines available at this time. However, after requesting an update, I was told they are putting all their resources into their new UK location and they have no ETA on when there will be new dedicated machines available in Dallas, TX. I even said a lower-end machine would be acceptable just to balance out the current load (e.g. the Intel i7-7700K or Intel i7-4790K) and unfortunately, unless if another customer gives up a machine with the Intel i7-7700K, we're out of luck.

     

    Yesterday, I talked to our hosting provider and asked if we could even move one of our IPs to the shared hosting packages until a dedicated server was available. He said this is possible but the highest shared hosting package is currently 'sold out' (with our servers, this is probably the package we'd prefer). This has been a frustrating experience because I guess we're used to other hosting providers such as NFO and OVH that have machines available right on the spot. Not having to wait months just to get a new dedicated machine.

     

    So I guess either we can try a lower-end shared hosting package or wait this issue out until more machines are available. I have other possible solutions listed below.

     

    Looking For Other Hosting Providers

    @Ben is on the lookout for new hosting providers and he has done an incredible job at receiving offers from hosting providers. This is more of a complicated process because we're very picky with our hosting providers. The biggest thing is we need good (D)DoS protection and high-end CPUs regarding single-threaded performance. Trying to get these machines at a reasonable price can be difficult. We have a lot of options but we're still asking questions and unfortunately, most hosting providers only have 20 gbps (D)DoS protection (in which, we will get null-routed constantly with if we host successful servers under). My fear would be if we do get null-routed so often, they'd ask us to leave (it has happened in 2012 before we went on our big run with NFO). But that said, we don't want null-routes in the first place ;) 

     

    If we do end up getting a new hosting provider, I'd like to move some servers off of the current GS06 machine (ones preferably lowest on population) to the new dedicated machine. This would result in an IP change but we can probably setup a redirection on the old servers since we'll still have the IP/Port.

     

    Lowering The Resources Our Servers Use

    The next thing we may want to try is lowering the resources our servers consume. This can be either by optimizing our servers more or lowering things such as the tick-rate. For example, our CS:GO Surf Timer server is at 85 tick but technically, we could probably get away with it at 64 tick. Not saying this needs to happen, but it could help if we have no other options. We run a lot of intense servers on this machine. It's no wonder we're getting pegged at 99% CPU during our peaks. Although I'd hate it, we can also lower the player count on some servers until we find out a solution. Though, that isn't needed I guess and I'm not going to blame anyone if they don't do it, lol.

     

    Conclusion

    That's it. It's unfortunate we're running into this issue. I will continue to talk to our hosting provider and post some possible solutions here.

     

    If you have any questions or concerns, please feel free to reply.

     

    Thank you for your time.

  3. 17 hours ago, Vrain said:

    @Roy Just got on csgo right now, and it seems I can read and join the server 😄 Looks like it resolves itself somehow, nevertheless thanks for reaching out Roy, really appreciate it!

    I'm glad the issue was resolved!

     

    If you experience issues again with your connection, please feel free to reach out to me.

     

    Thanks.

  4. Hi,

     

    I just want to notify everyone that our GS05 machine located in the United Kingdom experienced downtime this morning for a few hours. The machine is now up.

     

    This was due to a firewall issue with our hosting provider. I will ask if there are any more details available and if this can be prevented in the future.

     

    If you continue to experience any more issues regarding the machine, please post here.

     

    Thanks.

  5. I'm not sure if it's your ISP blocking the connection or NFO. However, if you'd like, I can submit a ticket to NFO asking if they are. If NFO is blocking your IP, I can ask if they can unblock it.

     

    I'd suggest running a trace route to the CS:GO ZE server as well and giving me the results. You can achieve this in Windows by running the following command in Command Prompt:

     

    tracert 216.52.148.47

     

    If you would like me to open a ticket with NFO, please PM your IPv4 address to me.

     

    Thanks.

  6. If you're interested in helping out on the server (e.g. Manager), feel free to reach out to me via Discord.

     

    As of right now, the server doesn't have a manager and I know I don't want to maintain it. Therefore, I don't mind giving somebody a chance (really can't hurt).

     

    Thanks.

  7. 1 hour ago, TheSadBandit said:

    Move member applications up on the forums, no need for new players to scroll all the way down to the bottom of the forums to be able to apply for member, it should be something we advertise.

    163-01-15-2019-gFbrSk3V.png

     

    As far as I'm aware, there isn't anything in the Member Applications forum that leads to the actual application form. Therefore, I don't believe that's necessary. I'd think people would use the website's nav-bar or the "Apply for Member" link on the home page to go to the member application form. The nav-bar really should be cleaned up, though.

     

    Thanks. 

  8. I'm taking a break for a week or two. If anything critical comes up (e.g. website, MySQL, or TS3 down-time), feel free to reach out to me. Otherwise, I'd suggest reaching out to other resources.

     

    I've been dealing with some personal-related things recently and just want a break from GFL.

     

    As always, thank you for understanding.

  9. Added

    • A plugin to possibly fix server crashes regarding a null.wav file.

     

    Notes

    Here is the source code of the plugin that was altered to suite the newest version of SourceBans:

     

    #include <sdktools_sound>
    
    #undef REQUIRE_PLUGIN
    #tryinclude <materialadmin>
    #tryinclude <sourcebanspp>
    
    bool g_bBanClient;
    #if defined _materialadmin_included
    bool g_bMaterialAdmin;
    #endif
    #if defined _sourcebans_included
    bool g_bSourceBans;
    #endif
    int g_iConnectNetMsgCount[MAXPLAYERS + 1];
    char g_szLog[PLATFORM_MAX_PATH];
    
    public Plugin myinfo =
    {
    	name		= "NullWave Crash Fix",
    	author		= "backwards, IT-KiLLER, SM9();, Roy (Christian Deacon)",
    	description	= "Exploit Fix for [SB] & [MA]",
    	version		= "0.2.2"
    }
    
    public void OnPluginStart()
    {
    	HookEvent("player_connect_full", Event_PlayerConnectFull, EventHookMode_Pre);
    	AddNormalSoundHook(NormalSoundHook);
    	AddAmbientSoundHook(AmbientSoundHook);
    
    	BuildPath(Path_SM, g_szLog, sizeof(g_szLog), "logs/NullWaveCrashFix.log");
    
    	ConVar CVar;
    	(CVar = CreateConVar("sm_nwfix_ban", "1", "Should the client be banned for crash attempt?", FCVAR_PROTECTED, true, _, true, 1.0)).AddChangeHook(CVarChanged_Ban);
    	g_bBanClient = CVar.BoolValue;
    #if defined _sourcebans_included
    	g_bSourceBans = LibraryExists("sourcebans++");
    #endif
    #if defined _materialadmin_included
    	g_bMaterialAdmin = LibraryExists("materialadmin");
    #endif
    
    	AutoExecConfig(true, "NullWaveFix");
    }
    
    public void CVarChanged_Ban(ConVar CVar, const char[] oldValue, const char[] newValue)
    {
    	g_bBanClient = CVar.BoolValue;
    }
    
    public void OnLibraryAdded(const char[] szName)
    {
    #if defined _sourcebans_included
    	if (StrEqual(szName, "sourcebans++"))
    		g_bSourceBans = true;
    #endif
    #if defined _materialadmin_included
    	if (StrEqual(szName, "materialadmin"))
    		g_bMaterialAdmin = true;
    #endif
    }
    
    public void OnLibraryRemoved(const char[] szName)
    {
    #if defined _sourcebans_included
    	if (StrEqual(szName, "sourcebans++"))
    		g_bSourceBans = false;
    #endif
    #if defined _materialadmin_included
    	if (StrEqual(szName, "materialadmin"))
    		g_bMaterialAdmin = false;
    #endif
    }
    
    public void OnMapStart()
    {
    	for (int i = 1; i <= MaxClients; i++) g_iConnectNetMsgCount[i] = 0;
    }
    
    public void OnClientDisconnect(int client)
    {
    	g_iConnectNetMsgCount[client] = 0;
    }
    
    public Action Event_PlayerConnectFull(Event event, const char[] name, bool dontBroadcast)
    {
    	int client = GetClientOfUserId(event.GetInt("userid"));
    
    	if (client && !IsClientInGame(client) && IsClientConnected(client) && !IsFakeClient(client) && !IsClientSourceTV(client) && !IsClientReplay(client))
    	{
    		if (!IsClientInKickQueue(client))
    		{
    			KickClient(client, "Something went wrong, please retry connecting");
    			LogToFileEx(g_szLog, "Kicked %L for sending an early player_connect_full event (Possible crash attempt)", client);
    		}
    		event.BroadcastDisabled = true;
    		return Plugin_Changed;
    	}
    
    	if (++g_iConnectNetMsgCount[client] == 1)
    		return Plugin_Continue;
    
    	if (!IsClientInKickQueue(client))
    	{
    		LogToFileEx(g_szLog, "%s %L for sending more than one player_connect_full event (Confirmed crash attempt)", g_bBanClient ? "Banned" : "Kicked", client);
    		if(g_bBanClient) BanCrasher(client);
    		else KickClient(client, "Attempted server crash exploit");
    	}
    
    	event.BroadcastDisabled = true;
    	return Plugin_Changed;
    }
    
    stock void BanCrasher(int client)
    {
    #if defined _materialadmin_included
    	if(g_bMaterialAdmin)
    	{
    		MABanPlayer(0, client, MA_BAN_STEAM, 0, "Attempted server crash exploit");
    		return;
    	}
    #endif
    #if defined _sourcebans_included
    	if(g_bSourceBans)
    	{
    		SBPP_BanPlayer(0, client, 1200, "Attempted server crash exploit");
    		return;
    	}
    #endif
    	BanClient(client, 0, BANFLAG_AUTO, "Attempted server crash exploit", "Attempted server crash exploit");
    }
    
    public Action NormalSoundHook(int clients[64], int &numClients, char sample[PLATFORM_MAX_PATH], int &entity, int &channel, float &volume, int &level, int &pitch, int &flags)
    {
    	return IsNullWav(sample) ? Plugin_Stop : Plugin_Continue;
    }
    
    public Action AmbientSoundHook(char sample[PLATFORM_MAX_PATH], int &entity, float &volume, int &level, int &pitch, float pos[3], int &flags, float &delay)
    {
    	return IsNullWav(sample) ? Plugin_Stop : Plugin_Continue;
    }
    
    stock bool IsNullWav(char[] name)
    {
    	return !name[0] || name[0] == 'c' && (StrEqual(name, "common\null.wav") || StrEqual(name, "common/null.wav"));
    }

     

    Thanks.

  10. @pomka What operating system are you running and are you running a VPS, a dedicated machine, or shared hosting? Ensure there's no power-saving mode enabled on your OS. I was playing on your server earlier and at ~28 players, I noticed the server's FPS dipping quite often. I'm not sure what the cause would be, it could be a poorly optimized plugin as well.

     

    I'm not sure how your server would operate at 50 players with the Intel Xeon E5-1650v4, but it shouldn't be performing that poorly at ~28 players and 64 tick in my opinion.

     

    Thanks.

  11. 21 hours ago, mosh said:

    Hi,

    Host Romania,

    Nr player - 51

    CPU - MD Ryzen 7 1700X Eight-Core Processor 3399.811

    Tickrate - 64

    Host - www.krond.ro

    sm_plugins_block.smx - disabel

     

    Thx,

     

    Thank you for the information.

     

    When I was playing on the server yesterday at 51/51, the performance wasn't terrible until there were intense holding points which is normal. However, I'm sure the current processor you have is the bottleneck here. The single-threaded performance of the Ryzen 7 1700X is most likely not strong enough to handle 51 players smoothly. I usually look at this chart to measure single-threaded performance for CPUs (your processor has a score of 1883). I'm sure there are other websites that measure this as well, though.

     

    The single-threaded performance matters the most for Source Engine servers since SRCDS doesn't have the best multi-threading.

     

    Is this a full dedicated machine, a VPS, or shared hosting? I'd assume shared hosting so there's a chance you're in a virtualized environment as well which is likely resulting in poorer performance.

     

    One thing you can try is lowering your server's tick rate. Your server's update rates are already low, so that's not an issue. HOWEVER, I've never ran a CS:GO server at <64 tick rate. I know it was common in CS:S back in the day when Valve allowed you to change the server's tick rate without an addon. But I'm unsure about the side effects in CS:GO. There may be some issues running at a lower tick rate with certain maps due to physics breaking/glitching. You'd have to test it out but it would likely result with less CPU being consumed. Therefore, it'd increase performance.

     

    Another thing you can try is setting net_compresspackets to 0. This is a hidden ConVar so you'd have to set it using sm_cvar. It has been a few years since I've messed with this ConVar but we used to have it disabled on our CS:GO Zombie Escape server. Keep in mind, there MIGHT be some negative side effects but I personally do not remember. Delays in the chat might have been one of those side effects.

     

    Having this ConVar set to 0 will increase bandwidth. However, it will decrease the amount of CPU the server consumes since it won't be compressing packets, etc.

     

    Overall, you'd have to test those two suggestions since I haven't messed with them much. The only other thing is actually upgrading the server's CPU or getting off of a virtualized environment if you're currently on it (e.g. switching to a full dedicated machine).

     

    I hope this helps!

     

    Thanks.

  12. Update

    I have talked to Croncos and they're going to look into how far they can overclock the i7-9700K. They said above 5 GHz should be possible.

     

    This is the build we are looking at:

    • Intel i7-9700K overclocked to 5.0+ GHz.
    • 32 GBs of DDR4 RAM.
    • 500 GBs NVMe.
    • 1 Gbps port (10 - 20+ TBs of bandwidth).
    • $254.00/m (no setup fee).

     

    Croncos is looking to give us this machine around the beginning of February. This works perfectly for us because we are preparing our servers this month.

     

    Thanks.

  13. In addition to my last reply, I see the hosting provider is Teen Telecom SRL. This appears to be a standard ISP in Romania.

     

    Are you or someone else hosting this server from home?

     

    Thanks.

  14. 5 minutes ago, mosh said:

    Ip server:

    <removed>

    I've removed the IP from the public reply but saved it to my computer.

     

    I see the server is 51 slots. Can you answer #2 and #3 above (especially #3 since that's important).

     

    Thanks.

  15. @mosh Your max update rate is a bit low, but that shouldn't make the server unplayable. Everything else looks fine.

     

    We'll need the following:

    1. The server's player count.
    2. The server's tick-rate.
    3. The server's specs (e.g. CPU, RAM, network speeds, and hosting provider).
    4. Preferably a video of the lag with net_graph set to 4 client-side (or you can just PM me the server's IP).

     

    P.S. net_splitpacket_maxrate does not exist in CS:GO. This is very useful for other games, though.

     

    Thanks.

×
×
  • Create New...