* Start recording abnormal client thread terminations
parent
11246c284f
commit
6e2f3bd3fb
|
@ -37,7 +37,9 @@ namespace OpenSim.Framework.Statistics
|
||||||
/// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane
|
/// Collects sim statistics which aren't already being collected for the linden viewer's statistics pane
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class SimExtraStatsCollector : IStatsCollector
|
public class SimExtraStatsCollector : IStatsCollector
|
||||||
{
|
{
|
||||||
|
private long abnormalClientThreadTerminations;
|
||||||
|
|
||||||
private long assetsInCache;
|
private long assetsInCache;
|
||||||
private long texturesInCache;
|
private long texturesInCache;
|
||||||
private long assetCacheMemoryUsage;
|
private long assetCacheMemoryUsage;
|
||||||
|
@ -45,6 +47,11 @@ namespace OpenSim.Framework.Statistics
|
||||||
private long blockedMissingTextureRequests;
|
private long blockedMissingTextureRequests;
|
||||||
|
|
||||||
private long inventoryServiceRetrievalFailures;
|
private long inventoryServiceRetrievalFailures;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Number of times that a client thread terminated because of an exception
|
||||||
|
/// </summary>
|
||||||
|
public long AbnormalClientThreadTerminations { get { return abnormalClientThreadTerminations; } }
|
||||||
|
|
||||||
public long AssetsInCache { get { return assetsInCache; } }
|
public long AssetsInCache { get { return assetsInCache; } }
|
||||||
public long TexturesInCache { get { return texturesInCache; } }
|
public long TexturesInCache { get { return texturesInCache; } }
|
||||||
|
@ -71,6 +78,11 @@ namespace OpenSim.Framework.Statistics
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private IDictionary<LLUUID, PacketQueueStatsCollector> packetQueueStatsCollectors
|
private IDictionary<LLUUID, PacketQueueStatsCollector> packetQueueStatsCollectors
|
||||||
= new Dictionary<LLUUID, PacketQueueStatsCollector>();
|
= new Dictionary<LLUUID, PacketQueueStatsCollector>();
|
||||||
|
|
||||||
|
public void AddAbnormalClientThreadTermination()
|
||||||
|
{
|
||||||
|
abnormalClientThreadTerminations++;
|
||||||
|
}
|
||||||
|
|
||||||
public void AddAsset(AssetBase asset)
|
public void AddAsset(AssetBase asset)
|
||||||
{
|
{
|
||||||
|
@ -147,6 +159,14 @@ namespace OpenSim.Framework.Statistics
|
||||||
Blocked requests for missing textures: {2}" + Environment.NewLine,
|
Blocked requests for missing textures: {2}" + Environment.NewLine,
|
||||||
TexturesInCache, TextureCacheMemoryUsage / 1024.0,
|
TexturesInCache, TextureCacheMemoryUsage / 1024.0,
|
||||||
BlockedMissingTextureRequests));
|
BlockedMissingTextureRequests));
|
||||||
|
|
||||||
|
sb.Append(Environment.NewLine);
|
||||||
|
sb.Append("CONNECTION STATISTICS");
|
||||||
|
sb.Append(Environment.NewLine);
|
||||||
|
sb.Append(
|
||||||
|
string.Format(
|
||||||
|
"Abnormal client thread terminations: {0}" + Environment.NewLine,
|
||||||
|
abnormalClientThreadTerminations));
|
||||||
|
|
||||||
sb.Append(Environment.NewLine);
|
sb.Append(Environment.NewLine);
|
||||||
sb.Append("INVENTORY STATISTICS");
|
sb.Append("INVENTORY STATISTICS");
|
||||||
|
|
|
@ -39,6 +39,7 @@ using libsecondlife.Packets;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications.Cache;
|
using OpenSim.Framework.Communications.Cache;
|
||||||
|
using OpenSim.Framework.Statistics;
|
||||||
using OpenSim.Region.ClientStack.LindenUDP;
|
using OpenSim.Region.ClientStack.LindenUDP;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
using Timer=System.Timers.Timer;
|
using Timer=System.Timers.Timer;
|
||||||
|
@ -729,6 +730,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (e is ThreadAbortException)
|
if (e is ThreadAbortException)
|
||||||
throw e;
|
throw e;
|
||||||
|
|
||||||
|
if (StatsManager.SimExtraStats != null)
|
||||||
|
StatsManager.SimExtraStats.AddAbnormalClientThreadTermination();
|
||||||
|
|
||||||
// Don't let a failure in an individual client thread crash the whole sim.
|
// Don't let a failure in an individual client thread crash the whole sim.
|
||||||
// FIXME: could do more sophisticated cleanup since leaving client resources around may
|
// FIXME: could do more sophisticated cleanup since leaving client resources around may
|
||||||
// cause instability for the region server over time.
|
// cause instability for the region server over time.
|
||||||
|
|
Loading…
Reference in New Issue