Jump to content

[Help/Bug] High load performance bug. Could be camera system problem.


Guest tehavatar

Recommended Posts

I have below a screenshot of a function monitor during high load on my server, tons of people online. During these times it seems that the server lags to death, even though it has enough resources at its disposal.

From the looks of this screenshot, there is a LOT of self-calls to the function EnsureGridCreated() and getNGrid() also takes up a considerable amount of self-time.

Self-time is the time this function takes to execute.

Any ideas?

690541673c7aa64d7f7fac6ea718447b.jpg

Link to comment
Share on other sites

Why you decided so?

Map::Visit(const Cell& cell, TypeContainerVisitor<T, CONTAINER> &visitor)
{
   if( !cell.NoCreate() || loaded(GridPair(x,y)) )
   {
      [i] EnsureGridLoaded(cell); [/i]
       getNGrid(x, y)->Visit(cell_x, cell_y, visitor);
   }
}

called at each grid's cell visit

Do you have another test results without camera system in core?

Link to comment
Share on other sites

Im not saying its the camera system, just saw those functions and thought it could maybe be attributed to camera system.

How would I diagnose intermittent spikes?

Take a look at my bw graph:

273dbea35acafed9e8850decff65bc45.jpg

Clearly massive spikes, core freezes every now and then =|

Link to comment
Share on other sites

There is a possibility that this is caused by incorrect grid states handling

You may try this:

@@ -284,11 +284,11 @@ Map::EnsureGridCreated(const GridPair &p)
                p.x_coord, p.y_coord);

            // build a linkage between this map and NGridType
            buildNGridLinkage(getNGrid(p.x_coord, p.y_coord));

-            getNGrid(p.x_coord, p.y_coord)->SetGridState(GRID_STATE_IDLE);
+            getNGrid(p.x_coord, p.y_coord)->SetGridState(GRID_STATE_ACTIVE);

            //z coord
            int gx = (MAX_NUMBER_OF_GRIDS - 1) - p.x_coord;
            int gy = (MAX_NUMBER_OF_GRIDS - 1) - p.y_coord;

Link to comment
Share on other sites

If that's bandwidth spikes, I would be more concerned about how there's less activity just before a spike. The spike would be the server just sending all the packets that get queued while it was busy.

Is 31.488 Avg Self Time normal for 186 Visits for Player::LoadFromDB? Is the DB running in 64-bit or 32-bit?

Link to comment
Share on other sites

Hi again,

DB is running in 64bit mode.

Let me explain the graph. The green flatline areas indicate 0 activity - green and yellow is blended DOWNLOAD bandwidth, which means the server is receiving a ton of requests from the clients but it isnt sending anything back (red)... the spikes of bw is what happens when the server regains.... consciousness so to speak, it floods upload to clients to respond to the amount of requests received.

:<

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use