netcore保持活動狀態超時設置


用.netcore 2.2+ 創建WebApi項目,服務器為k8s+docker+linux環境。

上線初期,由於調用方調用次數較少,會出現這么一個情況,每隔幾分鍾再次調用,第1次接口都會變慢,繼續調用速度又變快了。根據以往的經驗,這個情況有點像似 IIS里應用程序池被回收造成的。而.netcore采用kestrel作為邊緣服務器,沒有應用程序池回收這一說法,但是應該是類似的原因。

看官方文檔,發現Kestrel有個選項屬性 “保持活動狀態超時”,即為KeepAliveTimeout  ,默認為2分鍾,項目的這個情況是否是這個 選項造成的呢?根據官方文檔,修改代碼,將

保持活動狀態超時 KeepAliveTimeout  設置為10分鍾試一試。

 代碼如下:

在Program.cs里

public class Program
    {
        public static void Main(string[] args)
        {
             System.Threading.ThreadPool.SetMinThreads(200, 200); 
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args).
            ConfigureLogging((context, loggingbuilder) =>
            {
                //該方法需要引入Microsoft.Extensions.Logging名稱空間

                loggingbuilder.AddFilter("System", LogLevel.Warning); //過濾掉系統默認的一些日志
                loggingbuilder.AddFilter("Microsoft", LogLevel.Warning);//過濾掉系統默認的一些日志
                //var path = Directory.GetCurrentDirectory() + "\\log4net.config"; 
                //不帶參數:表示log4net.config的配置文件就在應用程序根目錄下,也可以指定配置文件的路徑
                loggingbuilder.SetMinimumLevel(LogLevel.Debug);
                loggingbuilder.AddLog4Net("Config/log4net.config");
            })
              .UseStartup<Startup>()
            .ConfigureKestrel((context, serverOptions) =>
              {
                  //為整個應用設置並發打開的最大 TCP 連接數,默認情況下,最大連接數不受限制 (NULL)
                  serverOptions.Limits.MaxConcurrentConnections = 100;
                  //對於已從 HTTP 或 HTTPS 升級到另一個協議(例如,Websocket 請求)的連接,有一個單獨的限制。 連接升級后,不會計入 MaxConcurrentConnections 限制
                  serverOptions.Limits.MaxConcurrentUpgradedConnections = 100; 
                  //獲取或設置保持活動狀態超時。 默認值為 2 分鍾。
                  serverOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(10);
                //  serverOptions.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(1);
              });
    }

測試下來,感覺不怎么管用。有誰能知道這個 KeepAliveTimeout  是干嘛的嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM