我正在使用NServiceBus進(jìn)行集成POC。發(fā)生某些情況時(shí),此集成會(huì)向API發(fā)出通知。一切正常,但是在執(zhí)行并發(fā)http請(qǐng)求時(shí)會(huì)出現(xiàn)嚴(yán)重的性能問題。我配置了一個(gè)可以執(zhí)行以下操作的終結(jié)點(diǎn):將JSON請(qǐng)求(通知)發(fā)送到REST API。我的設(shè)置:端點(diǎn)(框架4.6.1)具有1個(gè)靜態(tài)HttpClient,該靜態(tài)HttpClient在程序啟動(dòng)時(shí)僅初始化一次: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; }我的處理程序負(fù)責(zé)發(fā)布請(qǐng)求: 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端點(diǎn)同時(shí)處理10條消息,這意味著同時(shí)處理10個(gè)http發(fā)布請(qǐng)求。Rest API大約需要0.2秒來響應(yīng)1條消息。但是同時(shí)觸發(fā)10個(gè)http發(fā)布請(qǐng)求大約需要35秒。所有請(qǐng)求均在同一時(shí)間開始,但也都在同一時(shí)間結(jié)束(大約35秒后)。
1 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
我正在使用System.Diagnostics和NLog記錄網(wǎng)絡(luò)跟蹤。這導(dǎo)致嚴(yán)重的性能下降。
禁用System.Diagnostics解決了我的問題。
- 1 回答
- 0 關(guān)注
- 148 瀏覽
添加回答
舉報(bào)
0/150
提交
取消