aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2014-11-05 19:02:26 +0000
committerJustin Clark-Casey (justincc)2014-11-25 23:23:11 +0000
commitd6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea (patch)
treeb2c2782d4825c5b407fef7e9d57d96d07852910a /OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
parentAdd missing class from recent commit 69abade (diff)
downloadopensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.zip
opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.gz
opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.bz2
opensim-SC-d6c9705a3b9d4c9bbe0e23f6d8d3793c07bf53ea.tar.xz
Add incoming packet async handling engine to queue some inbound udp async requests.
This is to reduce the potential for overload of the threadpool if there are many simultaneous requets in high concurrency situations. Currently only applied to AvatarProperties and GenericMessage requests.
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs9
1 files changed, 9 insertions, 0 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index 61e1d6a..d8cf7a5 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -364,6 +364,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
364 private IClientAPI m_currentIncomingClient; 364 private IClientAPI m_currentIncomingClient;
365 365
366 /// <summary> 366 /// <summary>
367 /// Queue some low priority but potentially high volume async requests so that they don't overwhelm available
368 /// threadpool threads.
369 /// </summary>
370 public IncomingPacketAsyncHandlingEngine IpahEngine { get; private set; }
371
372 /// <summary>
367 /// Experimental facility to run queue empty processing within a controlled number of threads rather than 373 /// Experimental facility to run queue empty processing within a controlled number of threads rather than
368 /// requiring massive numbers of short-lived threads from the threadpool when there are a high number of 374 /// requiring massive numbers of short-lived threads from the threadpool when there are a high number of
369 /// connections. 375 /// connections.
@@ -454,6 +460,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
454 if (usePools) 460 if (usePools)
455 EnablePools(); 461 EnablePools();
456 462
463 IpahEngine = new IncomingPacketAsyncHandlingEngine(this);
457 OqrEngine = new OutgoingQueueRefillEngine(this); 464 OqrEngine = new OutgoingQueueRefillEngine(this);
458 } 465 }
459 466
@@ -461,6 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
461 { 468 {
462 StartInbound(); 469 StartInbound();
463 StartOutbound(); 470 StartOutbound();
471 IpahEngine.Start();
464 OqrEngine.Start(); 472 OqrEngine.Start();
465 473
466 m_elapsedMSSinceLastStatReport = Environment.TickCount; 474 m_elapsedMSSinceLastStatReport = Environment.TickCount;
@@ -506,6 +514,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
506 m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name); 514 m_log.Info("[LLUDPSERVER]: Shutting down the LLUDP server for " + Scene.Name);
507 base.StopOutbound(); 515 base.StopOutbound();
508 base.StopInbound(); 516 base.StopInbound();
517 IpahEngine.Stop();
509 OqrEngine.Stop(); 518 OqrEngine.Stop();
510 } 519 }
511 520