spring cloud系列組件的參數解析

来源:https://www.cnblogs.com/Hlingoes/archive/2020/01/12/12181723.html
-Advertisement-
Play Games

1. springboot內置tomcat容器的參數配置 server: port: 12021 # server端的socket超時間(毫秒),使用值-1表示沒有(即無限)超時,預設值為60000(即60秒) # Tomcat附帶的標準server.xml將此值設置為20000(即20秒),除非d ...


1. springboot內置tomcat容器的參數配置
server:
    port: 12021
    # server端的socket超時間(毫秒),使用值-1表示沒有(即無限)超時,預設值為60000(即60秒)
    # Tomcat附帶的標準server.xml將此值設置為20000(即20秒),除非disableUploadTimeout設置為false,否則在讀取請求正文(如果有)時也會使用此超時
    connection-timeout: 80000
    tomcat:
      # URL統一編碼
      uri-encoding: UTF-8
      # 處理的最大併發請求數,預設值200
      max-threads: 1000        
      # 在給定時間接受和處理的最大連接數,預設值10000
      max-connections: 20000
      # 初始化時創建的最小線程數,始終保持運行,預設值10
      min-spare-threads: 20
      # 監聽埠隊列最大數,滿了之後客戶請求會被拒絕(不能小於maxSpareThreads),預設為100
      acceptCount: 700
      # 取消post參數大小限制,預設為2097152(2M)
      max-http-post-size: -1 
      # 請求和響應HTTP標頭的最大大小,以位元組為單位指定,如果未指定,則此屬性設置為8192(8 KB)
      max-http-header-size: 8192(8 KB)

開發中遇到問題,需查詢tomcat官方文檔: http://tomcat.apache.org/tomcat-8.0-doc/config/http.html#HTTP/1.1_and_HTTP/1.0_Support

2. spring cloud hystrix的參數配置
hystrix.command.default和hystrix.threadpool.default中的default為預設CommandKey(預設值:當前執行方法名)
Execution相關的屬性的配置:
隔離策略,有THREAD和SEMAPHORE
THREAD - 它在單獨的線程上執行,併發請求受線程池中的線程數量的限制
SEMAPHORE - 它在調用線程上執行,併發請求受到信號量計數的限制
hystrix.command.default.execution.isolation.strategy 隔離策略,預設是Thread, 可選Thread|Semaphore
在THREAD模式下,達到超時時間,可以中斷
在SEMAPHORE模式下,會等待執行完成後,再去判斷是否超時
設置標準:有retry,99meantime+avg meantime;沒有retry,99.5meantime
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds 命令執行超時時間,預設1000ms
hystrix.command.default.execution.timeout.enabled 執行是否啟用超時,預設啟用true
hystrix.command.default.execution.isolation.thread.interruptOnTimeout 發生超時是是否中斷,預設true(THREAD模式有效)
execution.isolation.thread.interruptOnCancel 當發生取消時,執行是否應該中斷,預設值為false(THREAD模式有效)
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests 最大併發請求數,預設10,該參數當使用ExecutionIsolationStrategy.SEMAPHORE策略時才有效。如果達到最大併發請求數,請求會被拒絕。理論上選擇semaphore size的原則和選擇thread size一致,但選用semaphore時每次執行的單元要比較小且執行速度快(ms級別),否則的話應該用thread
semaphore應該占整個容器(tomcat)的線程池的一小部分

Fallback相關的屬性:(應用於Hystrix的THREAD和SEMAPHORE策略)
hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests 如果併發數達到該設置值,請求會被拒絕和拋出異常並且fallback不會被調用,預設10
hystrix.command.default.fallback.enabled 當執行失敗或者請求被拒絕,是否會嘗試調用hystrixCommand.getFallback(),預設true

Collapser Properties相關參數:
hystrix.collapser.default.maxRequestsInBatch 單次批處理的最大請求數,達到該數量觸發批處理,預設Integer.MAX_VALUE
hystrix.collapser.default.timerDelayInMilliseconds 觸發批處理的延遲,也可以為創建批處理的時間+該值,預設10
hystrix.collapser.default.requestCache.enabled 是否對HystrixCollapser.execute() and HystrixCollapser.queue()的cache,預設true

ThreadPool相關參數:
線程數預設值10適用於大部分情況(有時可以設置得更小),如果需要設置得更大,那有個基本得公式可以follow:
requests per second at peak when healthy × 99th percentile latency in seconds + some breathing room
每秒最大支撐的請求數 (99%平均響應時間 + 緩存值)
比如:每秒能處理1000個請求,99%的請求響應時間是60ms,那麼公式是:1000 * (0.060+0.012)
基本得原則時保持線程池儘可能小,主要是為了釋放壓力,防止資源被阻塞。當一切都是正常的時候,線程池一般僅會有1到2個線程激活來提供服務。
hystrix.threadpool.default.coreSize 併發執行的最大線程數,預設10
hystrix.threadpool.default.maxQueueSize BlockingQueue的最大隊列數,當設為-1,會使用SynchronousQueue,值為正時使用LinkedBlcokingQueue。該設置只會在初始化時有效,之後不能修改threadpool的queue size,除非reinitialising thread executor。預設-1。
hystrix.threadpool.default.queueSizeRejectionThreshold 即使maxQueueSize沒有達到,達到queueSizeRejectionThreshold該值後,請求也會被拒絕。因為maxQueueSize不能被動態修改,這個參數將允許我們動態設置該值。if maxQueueSize == -1,該欄位將不起作用
hystrix.threadpool.default.keepAliveTimeMinutes 如果corePoolSize和maxPoolSize設成一樣(預設實現)該設置無效。如果通過plugin(https://github.com/Netflix/Hystrix/wiki/Plugins)使用自定義實現,該設置才有用,預設1.
hystrix.threadpool.default.metrics.rollingStats.timeInMilliseconds 線程池統計指標的時間,預設10000
hystrix.threadpool.default.metrics.rollingStats.numBuckets 將rolling window劃分為n個buckets,預設10

實際使用中,可按照報錯詳情,調整參數


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • let和var區別: 1 for(var i=0;i<5;i++){ 2 setTimeout(()=>{ 3 console.log(i);//5個5 4 },100) 5 } 6 console.log(i);//5 7 console.log(' ') 8 9 for(let j=0;j<5; ...
  • 6)靜態方法和prototype(難)例 3.6.1<head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/></head><script> /*note that 馬克-to-win: static var ...
  • 2020-01-11 ant-Design ,Input , onPressEnter 和 onChange 的區別 onChange 輸入內容的回調 onPressEnter 按下回車的回調 需求:看下圖,右邊欄配置開關組件的內容。輸入內容,不想要左邊實時更改 原來的代碼:<Input defau ...
  • 效果圖 index.html <!DOCTYPE html> <html> <head> <title></title> <link rel="stylesheet" type="text/css" href="calc.css"> <script type="text/javascript" sr ...
  • 我們在k8s部署服務時,一般來說一個服務會對應一類pod,而pod通過rs實現副本集,而這些pod的日誌一般有控制台stdout和文件的,一般會把這些日誌最終輸出到elasticsearch里,再通過kabana進行分析,而在實現由pod到elasticsearch(es)時有多種方法,下麵我列舉一 ...
  • 1.代碼生成器: [正反雙向](單表、主表、明細表、樹形表,快速開發利器)freemaker模版技術 ,0個代碼不用寫,生成完整的一個模塊,帶頁面、建表sql腳本、處理類、service等完整模塊2.多數據源:(支持同時連接無數個資料庫,可以不同的模塊連接不同數的據庫)支持N個數據源3.阿裡資料庫連 ...
  • 中國礦業大學信控學院 /*文獻參考*/ https://blog.csdn.net/Fdog_/article/details/102625969 https://blog.csdn.net/DY_1024/article/details/78841757 一、問題描述 以數據結構思想設計實現貪吃蛇 ...
  • 中國礦業大學信控學院 一、 問題描述 問題中迷宮可用方陣[m,n]表示,0表示能通過,1表示不能通過。若要從從左上角[1,1]進入迷宮,設計演算法,尋求一條從右下角 [m,n] 出去的路徑。我們用遞增的數來代表尋找出口方向與步數,用-2來代表尋找過程中找錯的路徑。 二、 需求分析 需要先創建一個迷宮, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...