* Start recording abnormal client thread terminations

0.6.0-stable
Justin Clarke Casey 2008-06-04 16:30:44 +00:00
parent 11246c284f
commit 6e2f3bd3fb
2 changed files with 25 additions and 1 deletions

View File

@ -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");

View File

@ -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.