为了账号安全,请及时绑定邮箱和手机立即绑定

将HttpClient与NServiceBus结合使用会严重延迟

将HttpClient与NServiceBus结合使用会严重延迟

C#
哈士奇WWW 2021-04-08 14:15:13
我正在使用NServiceBus进行集成POC。发生某些情况时,此集成会向API发出通知。一切正常,但是在执行并发http请求时会出现严重的性能问题。我配置了一个可以执行以下操作的终结点:将JSON请求(通知)发送到REST API。我的设置:端点(框架4.6.1)具有1个静态HttpClient,该静态HttpClient在程序启动时仅初始化一次:internal static void Intitialize()        {            ServicePointManager.DefaultConnectionLimit = 100;            var apiSettings = NotificationEngineManager.GetInterfaceSettings()?.API;            NotificationClient = new HttpClient();            NotificationClient.Timeout = TimeSpan.FromSeconds(45);            if (!string.IsNullOrEmpty(apiSettings.UserName))            {                var byteArray = Encoding.ASCII.GetBytes($"{apiSettings.UserName}:{apiSettings.Password}");                NotificationClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));            }        }        internal static HttpClient NotificationClient { get; set; }我的处理程序负责发布请求:   public async Task Handle(EventRegistered message, IMessageHandlerContext context)            {                var apiSettings = NotificationEngineManager.GetInterfaceSettings()?.API;                if (apiSettings == null)                {                    throw new BusinessException("No valid API settings found");                }                JsonSerializerSettings settings = new JsonSerializerSettings();                settings.NullValueHandling = NullValueHandling.Ignore;                settings.DateFormatString = "s";                settings.Converters.Add(new StringEnumConverter { });问题:NServiceBus端点同时处理10条消息,这意味着同时处理10个http发布请求。Rest API大约需要0.2秒来响应1条消息。但是同时触发10个http发布请求大约需要35秒。所有请求均在同一时间开始,但也都在同一时间结束(大约35秒后)。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

我正在使用System.Diagnostics和NLog记录网络跟踪。这导致严重的性能下降。

禁用System.Diagnostics解决了我的问题。


查看完整回答
反对 回复 2021-04-24
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信