Beispiel #1
0
        private static void DiskLogStatsTimer_ElapsedHandler(object sender, ElapsedEventArgs e)
        {
            try
            {
                DiskLogStatsTimer.Stop();

                List <Stat> stats = Stats.ToList();

                double minMessagesWritten = stats.Where(x => !x.IsReader).GroupBy(x => x.Second).Min(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;
                double avgMessagesWritten = stats.Where(x => !x.IsReader).GroupBy(x => x.Second).Average(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;
                double maxMessagesWritten = stats.Where(x => !x.IsReader).GroupBy(x => x.Second).Max(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;

                double minMessagesRead = stats.Where(x => x.IsReader).GroupBy(x => x.Second).Min(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;
                double avgMessagesRead = stats.Where(x => x.IsReader).GroupBy(x => x.Second).Average(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;
                double maxMessagesRead = stats.Where(x => x.IsReader).GroupBy(x => x.Second).Max(x => x.Sum(y => (int?)y.ProcessedMessages)) ?? 0;

                double minCheckpointLatency = stats.Where(x => x.IsReader).Min(x => (int?)x.CheckpointDuration) ?? 0;
                double avgCheckpointLatency = stats.Where(x => x.IsReader).Average(x => (int?)x.CheckpointDuration) ?? 0;
                double maxCheckpointLatency = stats.Where(x => x.IsReader).Max(x => (int?)x.CheckpointDuration) ?? 0;

                GlobalStats.MaxMessagesWrittenPerSecond = Math.Max(GlobalStats.MaxMessagesWrittenPerSecond, maxMessagesWritten);
                GlobalStats.MaxMessagesReadPerSecond    = Math.Max(GlobalStats.MaxMessagesReadPerSecond, maxMessagesRead);
                GlobalStats.MaxCheckpointLatency        = Math.Max(GlobalStats.MaxCheckpointLatency, maxCheckpointLatency);

                DiskStatsLog.Info($"Data s# {stats.Count}, ucs# {UserChangeStats.Count()}, l# {Log.Count()} | " +
                                  $"Global m- {GlobalStats.LifetimeMessagesWritten}, m- {GlobalStats.LifetimeMessagesRead}, m/s+ {GlobalStats.MaxMessagesWrittenPerSecond}, m/s- {GlobalStats.MaxMessagesReadPerSecond}, chck. {GlobalStats.MaxCheckpointLatency} | " +
                                  $"m/s+ min {minMessagesWritten}, avg {avgMessagesWritten}, max {maxMessagesWritten} | " +
                                  $"m/s- min {minMessagesRead}, avg {avgMessagesRead}, max {maxMessagesRead} | " +
                                  $"chck. min {minCheckpointLatency}, avg {avgCheckpointLatency}, max {maxCheckpointLatency}");
            }
            catch (Exception ex)
            {
                Error(nameof(Data), "Could not log stats to file.", ex);
            }
            finally
            {
                DiskLogStatsTimer.Start();
            }
        }
Beispiel #2
0
 public static void RecordSetting(string name, int value)
 {
     UserChangeStats.Enqueue(new GenericStat {
         Name = name, Value = value,
     });
 }