Couple tweaks to potentially improve performance

This commit is contained in:
Ske 2019-12-23 01:49:21 +01:00
parent bbbbb5a046
commit 265184f4f6

View File

@ -2,14 +2,12 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Reflection;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using App.Metrics; using App.Metrics;
using App.Metrics.Logging;
using Dapper; using Dapper;
using Discord; using Discord;
using Discord.Commands;
using Discord.WebSocket; using Discord.WebSocket;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -91,7 +89,8 @@ namespace PluralKit.Bot
MessageCacheSize = 0, MessageCacheSize = 0,
ConnectionTimeout = 2*60*1000, ConnectionTimeout = 2*60*1000,
ExclusiveBulkDelete = true, ExclusiveBulkDelete = true,
DefaultRetryMode = RetryMode.AlwaysRetry, LargeThreshold = 50,
DefaultRetryMode = RetryMode.AlwaysFail
// Commented this out since Debug actually sends, uh, quite a lot that's not necessary in production // Commented this out since Debug actually sends, uh, quite a lot that's not necessary in production
// but leaving it here in case I (or someone else) get[s] confused about why logging isn't working again :p // but leaving it here in case I (or someone else) get[s] confused about why logging isn't working again :p
// LogLevel = LogSeverity.Debug // We filter log levels in Serilog, so just pass everything through (Debug is lower than Verbose) // LogLevel = LogSeverity.Debug // We filter log levels in Serilog, so just pass everything through (Debug is lower than Verbose)
@ -161,10 +160,7 @@ namespace PluralKit.Bot
_client.ShardReady += ShardReady; _client.ShardReady += ShardReady;
_client.Log += FrameworkLog; _client.Log += FrameworkLog;
_client.MessageReceived += (msg) => _client.MessageReceived += (msg) => HandleEvent(s => s.AddMessageBreadcrumb(msg), eh => eh.HandleMessage(msg));
{
return HandleEvent(s => s.AddMessageBreadcrumb(msg), eh => eh.HandleMessage(msg));
};
_client.ReactionAdded += (msg, channel, reaction) => HandleEvent(s => s.AddReactionAddedBreadcrumb(msg, channel, reaction), eh => eh.HandleReactionAdded(msg, channel, reaction)); _client.ReactionAdded += (msg, channel, reaction) => HandleEvent(s => s.AddReactionAddedBreadcrumb(msg, channel, reaction), eh => eh.HandleReactionAdded(msg, channel, reaction));
_client.MessageDeleted += (msg, channel) => HandleEvent(s => s.AddMessageDeleteBreadcrumb(msg, channel), eh => eh.HandleMessageDeleted(msg, channel)); _client.MessageDeleted += (msg, channel) => HandleEvent(s => s.AddMessageDeleteBreadcrumb(msg, channel), eh => eh.HandleMessageDeleted(msg, channel));
_client.MessagesBulkDeleted += (msgs, channel) => HandleEvent(s => s.AddMessageBulkDeleteBreadcrumb(msgs, channel), eh => eh.HandleMessagesBulkDelete(msgs, channel)); _client.MessagesBulkDeleted += (msgs, channel) => HandleEvent(s => s.AddMessageBulkDeleteBreadcrumb(msgs, channel), eh => eh.HandleMessagesBulkDelete(msgs, channel));
@ -245,9 +241,6 @@ namespace PluralKit.Bot
using (var scope = _services.CreateScope()) using (var scope = _services.CreateScope())
{ {
var evtid = scope.ServiceProvider.GetService<EventIdProvider>().EventId; var evtid = scope.ServiceProvider.GetService<EventIdProvider>().EventId;
var sentryScope = scope.ServiceProvider.GetRequiredService<Scope>();
sentryScope.SetTag("evtid", evtid.ToString());
breadcrumbFactory(sentryScope);
try try
{ {
@ -255,6 +248,10 @@ namespace PluralKit.Bot
} }
catch (Exception e) catch (Exception e)
{ {
var sentryScope = scope.ServiceProvider.GetRequiredService<Scope>();
sentryScope.SetTag("evtid", evtid.ToString());
breadcrumbFactory(sentryScope);
HandleRuntimeError(e, scope.ServiceProvider); HandleRuntimeError(e, scope.ServiceProvider);
} }
} }
@ -309,7 +306,6 @@ namespace PluralKit.Bot
if (_client.GetShardFor((arg.Channel as IGuildChannel)?.Guild).ConnectionState != ConnectionState.Connected) if (_client.GetShardFor((arg.Channel as IGuildChannel)?.Guild).ConnectionState != ConnectionState.Connected)
return; // Discard messages while the bot "catches up" to avoid unnecessary CPU pressure causing timeouts return; // Discard messages while the bot "catches up" to avoid unnecessary CPU pressure causing timeouts
_logger.Debug("ThreadPool pending count: {PendingCount}, completed: {CompletedCount}, {ThreadCount} threads", ThreadPool.PendingWorkItemCount, ThreadPool.CompletedWorkItemCount, ThreadPool.ThreadCount); _logger.Debug("ThreadPool pending count: {PendingCount}, completed: {CompletedCount}, {ThreadCount} threads", ThreadPool.PendingWorkItemCount, ThreadPool.CompletedWorkItemCount, ThreadPool.ThreadCount);
RegisterMessageMetrics(arg); RegisterMessageMetrics(arg);