[英]How to manage max connection, HttpClient, C#?
我正在Windows服務上。 Windows服務的代碼非常簡單,但是方式卻很奇怪!
在Windows服務中,我應該每20秒調用一次WebApi並將結果保存到SQL數據庫中
我正在使用autofac
在Program.cs
上創建HttpClient
實例
// HttpClient
builder.Register(ctx =>
{
var httpClient = new HttpClient
{
BaseAddress = new Uri(StaticAssets.WebApiBaseAddress)
};
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return httpClient;
});
我從不手動處理httpClient
實例。
在運行Windows服務大約8個小時后,IIS無法正常工作,我們無法再遠程訪問服務器,我們測試了Windows遠程桌面連接,VNC(服務器上有VNC)...
我們可以使用KVM遠程訪問服務器並停止Windows服務,然后一切都會恢復。 我從這里可以發現問題是由於連接號! 我不肯定?
我也發現以下內容:
<system.web>
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>
<system.net>
<connectionManagement>
<add address="[ProvideIPHere]" maxconnection="96"/>
</connectionManagement>
</system.net>
在HttpClient
.Net Windows服務和IIS中管理最大連接的最佳實踐是什么?
基於谷歌搜索的解決方案:
1.將HttpClient
定義為SingleTone,不要手動進行處理。
在AutoFac
使用如下所示的內容:
builder.Register(ctx =>
{
var httpClient = new HttpClient
{
BaseAddress = new Uri('https://www.sample.com/')
};
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return httpClient;
}).SingleInstance();
在.Net Core
使用以下命令:
services.AddSingleton(provider =>
{
var httpClient = new HttpClient
{
BaseAddress = new Uri('https://www.sample.com/')
};
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return httpClient;
});
2.在config
文件中添加以下內容
<configuration>
....
<system.web>
<processModel maxWorkerThreads="100" maxIoThreads="100" minWorkerThreads="50"/>
<httpRuntime minFreeThreads="704" minLocalRequestFreeThreads="608"/>
</system.web>
<system.net>
<connectionManagement>
<add address="[ProvideIPHere]" maxconnection="96"/>
</connectionManagement>
</system.net>
</configuration>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.