Welcome, Guest. Please login or register.
Did you miss your activation email?
November 28, 2024, 11:50:45 pm *

Login with username, password and session length
Pages: [1]
Print
Author Topic: Server Lockup Issue  (Read 4817 times)
Akkadius
Administrator
Legend
*****
Posts: 2016



View Profile
« on: March 21, 2020, 05:55:54 pm »

Non-Technical Explanation

The server has reached an edge case where too many zones are being cycled and the world server goes into a loop trying to determine available zones

A root cause has been found and a fix will be applied

Technical Explanation

Symptom

World will go into an infinite loop, unresponsive, character select doesn't work, zoning doesn't work, server appears down on Loginserver list

Investigation

I finally had some actual time to dig deeper into this issue after the work week and very long days, after doing a trace on the process I had quickly found the problem

Code:
   100.00%     0.00%             0  world    world             [.] operator() (inlined)
            |
            ---operator() (inlined)
               ?? (inlined)
               EQ::Net::TCPConnection::Start()::{lambda(uv_stream_s*, long, uv_buf_t const*)#2}::_FUN
               EQ::Net::ServertalkServerConnection::ProcessReadBuffer
               EQ::Net::ServertalkServerConnection::ProcessMessage
               EQ::Net::ServertalkServerConnection::ProcessMessage
               ZoneServer::HandleMessage
               ZSList::GetAvailableZonePort
               |
               |--76.67%--?? (inlined)
               |          ZSList::GetAvailableZonePort
               |
                --18.99%--ZSList::GetAvailableZonePort

World was stuck in a loop in this code

Code:
uint16 ZSList::GetAvailableZonePort()
{
    const WorldConfig *Config = WorldConfig::get();
    int               i;
    uint16            port    = 0;

    if (LastAllocatedPort == 0) {
        i = Config->ZonePortLow;
    }
    else {
        i = LastAllocatedPort + 1;
    }

    while (i != LastAllocatedPort && port == 0) {
        if (i > Config->ZonePortHigh) {
            i = Config->ZonePortLow;
        }

        if (!FindByPort(i)) {
            port = i;
            break;
        }
        i++;
    }

    LastAllocatedPort = port;

    return port;
}

Because we have ports 7000 -> 7100 allocated, we safely cycle through the same ports everyday all the time.

However, recently due to a lot more zone activity, we have run into scenarios where we've had 100 simultaneous zone processes up at once from people spawning way too many instances

When world can't find a free port, it will simply infinitely loop because there is nothing available anymore, this is faulty logic but can easily be mitigated by expanding our available port range pool

Fix

I will be expanding our available zone port range to 200 and we should see this issue go away
Logged


EZ Server GM
Riggidy
Newbie
*
Posts: 2


View Profile
« Reply #1 on: March 21, 2020, 06:20:54 pm »

Not seeing any mobs in new instances I just created.  please help
Logged
Akkadius
Administrator
Legend
*****
Posts: 2016



View Profile
« Reply #2 on: March 21, 2020, 06:23:28 pm »

Not seeing any mobs in new instances I just created.  please help

I’m aware, I’m making preparations for updating and rebooting, no fixes have been applied yet

Please sit tight and and all will be good soon
Logged


EZ Server GM
shiftingsands1
Newbie
*
Posts: 10


View Profile
« Reply #3 on: May 11, 2020, 07:06:22 pm »

Akkadius, could this be the reason if I make a group of solo instances of a zone that all of my toons will, after a little bit, go link dead at the same time?  I have been messing around with my computer overclock settings, ram timings, drivers, etc, but i keep hitting this issue.  It was cleared up for a few days it seemed a couple weeks back, but has since gone back to going link dead.  Just for clarification, I am not complaining, just curious if this is causing what I have been experiencing.  Thanks for your time!
Logged
Brannyn
Sr. Member
****
Posts: 368


View Profile
« Reply #4 on: May 12, 2020, 07:18:09 am »

Akkadius, could this be the reason if I make a group of solo instances of a zone that all of my toons will, after a little bit, go link dead at the same time?  I have been messing around with my computer overclock settings, ram timings, drivers, etc, but i keep hitting this issue.  It was cleared up for a few days it seemed a couple weeks back, but has since gone back to going link dead.  Just for clarification, I am not complaining, just curious if this is causing what I have been experiencing.  Thanks for your time!
I'm no expert, but characters going LD should have nothing to do with overclock settings, ram timings, and drivers (except maybe network drivers).
Logged
Pages: [1]
Print
Jump to:  

Recent

Stats

Members
  • Total Members: 6156
  • Latest: Rin1
Stats
  • Total Posts: 65127
  • Total Topics: 5066
  • Online Today: 333
  • Online Ever: 8678
  • (December 19, 2022, 02:32:09 pm)
Users Online
Users: 0
Guests: 292
Total: 292
TinyPortal v1.0 beta 4 © Bloc