我正在使用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条经验 获得超4个赞
我正在使用System.Diagnostics和NLog记录网络跟踪。这导致严重的性能下降。
禁用System.Diagnostics解决了我的问题。
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报
0/150
提交
取消