日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

tomcat 集群監控與彈性伸縮詳解

瀏覽:317日期:2023-03-19 16:51:51
目錄
  • 如何給 tomcat 配置合適的線程池
  • 如何監控 tomcat 線程池的工作情況
  • tomcat 線程池擴縮容
  • tomcat 是如何避免原生線程池的缺陷的

如何給 tomcat 配置合適的線程池

任務分為 CPU 密集型和 IO 密集型

對于 CPU 密集型的應用來說,需要大量 CPU 計算速度很快,線程池如果過多,則保存和切換上下文開銷過高反而會影響性能,可以適當將線程數量調小一些

對于 IO 密集型應用來說常見于普通的業務系統,比如會去查詢 mysql、redis 等然后在內存中做簡單的數據組裝和邏輯判斷,此時由于有 epoll、dma 等支持,消耗較長時間的線程不會長時間占據 CPU 時間,所以可以適當將線程數量調大一些

對于線程數到底該設置多大,網上有很多的方案

我們在實際情況中基于 wrk 等壓測工具進行壓測,壓測邏輯相對復雜請求量相對較高的接口先配置一個相對保守的值

先預估假設當前接口處理平均耗時 300MS,1S 一個線程平均處理 3 個請求,最大 100 個線程 1S 能處理 300 TPS

粗略估算每個請求會消耗多大的內容空間,假如是 2KB,那么每秒會消耗 600KB 以此來估算 YGC 多久會觸發一次,假設年輕代為 1GB 那么大約 29 分鐘觸發一次 YGC

然后再看 100 個線程持續處理 300TPS 的時候 CPU 消耗情況

觀察內存幾分鐘 GC 一次,或者 CPU 使用率穩定在 50% 左右就好,假設此時線程池 70 個線程都在運作

那么監控系統采集到線程池線程使用率達到了 80% 就開始擴容,因為擴容拉起新的服務器到提供服務可能也需要1-2分鐘的時間,所以需要預留服務器資源能夠處理彈性擴容期間的流量

實際場景中是相對比較復雜的,前期最好設置一個相對保守的擴容閾值,如果發現在達到這個閾值前服務器已經頂不住了就可以實時的縮小閾值

同時還可以根據在達到擴容閾值擴容的時候,觀察線上真實的 CPU 和內存使用情況,可以基于 promethues + grafana 來進行監控,如果發現擴容時候 CPU 使用率和內存使用率 GC 評率比較低,那么可以再配置中心動態的調整線程池的大小

所以說與其尋找一個準確的計算線程池數量的配置方式,不如提供一個可以動態調整的線程池作為 tomcat 的線程池

如何監控 tomcat 線程池的工作情況

spring boot 在啟動過程中會調用 TomcatProtocolHandlerCustomizer 的實現類,此處可以自定化 tomcat 線程池,也可以獲取到 tomcat 線程池

public class MyTomcatProtocolHandlerCustomizer implements TomcatProtocolHandlerCustomizer<ProtocolHandler> {    private final ThreadPoolExecutor tomcatThreadPoolExecutor;    public TomcatProtocolHandlerCustomizer(ThreadPoolExecutor tomcatThreadPoolExecutor) {this.tomcatThreadPoolExecutor = tomcatThreadPoolExecutor;    }    @Override    public void customize(ProtocolHandler protocolHandler) {protocolHandler.setExecutor(tomcatThreadPoolExecutor);    }    public ThreadPoolExecutor getThreadPoolExecutor() {return tomcatThreadPoolExecutor;    }}

然后將線程池裝入一個容器 bean 中注冊到 promethues 監控中,當每秒進行采集的時候通過回調的方法去獲取線程池的最新指標

promethues 每秒采集一次容器的線程池運行指標、服務器測 CPU 使用率當滿足定義的擴容閾值時就拉起新的 POD

grafana 每秒采集一次 promethues 的數據匯聚圖標展示

@Beanpublic AllServersThreadPoolCollector allServersThreadPoolCollector(@Qualifier(value = "GrpcThreadPoolExecutor") ThreadPoolExecutor GrpcThreadPoolExecutor,       @Qualifier(value = "jdTomcatThreadPoolExecutor") org.apache.tomcat.util.threads.ThreadPoolExecutor TomcatThreadPoolExecutor,       MeterRegistry registry) {    return new AllServersThreadPoolCollector(GrpcThreadPoolExecutor, jdTomcatThreadPoolExecutor, registry);}
public void init() {    try {createGauge(this, "grpc_tomcat_core_pool_size", pool -&gt; this.getCorePoolSize());createGauge(this, "grpc_tomcat_maximum_pool_size", pool -&gt; this.getMaximumPoolSize());createGauge(this, "grpc_tomcat_busy_pool_size", pool -&gt; this.getActiveCount());createGauge(this, "grpc_tomcat_wait_queue_size", pool -&gt; this.getWaitQueueSize());    } catch (Exception e) {log.error("注冊 all servers 監控失敗", e);    }}private void createGauge(AllServersThreadPoolCollector weakRef, String metric, ToDoubleFunction&lt;AllServersThreadPoolCollector&gt; measure) {    Gauge.builder(metric, weakRef, measure)    .register(this.registry);}public int getWaitQueueSize() {    return grpcThreadPoolExecutor.getQueue().size() + tomcatThreadPoolExecutor.getQueue().size();}

tomcat 線程池擴縮容

Java 線程池是支持直接修改 corePoolSize、maximumPoolSize 的

  • 修改 corePoolSize

(1)數量小于 maximumPoolSize 拋異常

(2)如果 corePoolSize - 原來的 = delta,delta 大于 0 那么創建等待隊列任務數量和 delta 個線程來處理等待處理的任務

(3)如果正在運行的線程數量 > corePoolSize 那么就中斷多余的線程

  • 修改 maximumPoolSize

(1)maximumPoolSize 小于 corePoolSize 拋錯

(2)如果運行的線程大于 maximumPoolSize 中斷掉一些空閑的線程

基于這些機制就能在運行期間動態調整線程池內容

無需擔心會中斷掉正在運行的任務,因為線程池 worker 線程每執行一個任務的時候

tomcat 是如何避免原生線程池的缺陷的

原生線程池的工作原理

(1)運行的線程數小于核心線程,就創建一個 worker 線程去執行任務

(2)運行的線程數 >= 核心線程了,將任務全部積壓到隊列中

(3)隊列如果滿了繼續創建非核心線程 worker 去執行任務

假如 tomcat 采用了原生線程池,核心線程為 10 個,最大線程為 100,隊列為 200,并發來了 100 個請求,那么同時系統只能處理 10 個,剩下 90 個都得放入隊列中讓 10 個核心線程慢慢排隊處理,延時必然非常高

tomcat 如何優化線程池,核心在于阻塞隊列的實現,因為阻塞隊列滿了才會繼續創建非核心 worker 線程處理任務

(1)運行的線程數小于核心線程,就創建一個 worker 線程去執行任務

(2)當前已經創建的核心+非核心線程數等于最大線程數,任務壓入隊列

(3)正在處理的請求數量小于核心+非核心線程數,任務壓入隊列

(4)當前已經創建的核心+非核心線程數小于最大線程數,創建 worker 線程處理請求

總結就是一句話當高并發流量過來的時候,會去創建最大線程數的 worker 去處理請求用以降低尾延遲,超過最大線程后,任務將被壓入隊列中進行處理

以上就是tomcat 集群監控與彈性伸縮詳解的詳細內容,更多關于tomcat 集群監控彈性伸縮的資料請關注其它相關文章!

標簽: Tomcat
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩av中文字幕一区二区| 99久久久久| 亚洲午夜电影| 99久久九九| 久久久噜噜噜| 国产精品久久久久久妇女| 六月丁香综合| 日韩一级欧洲| 久久精品三级| 国产精品高清一区二区| 男女精品网站| 伊人久久亚洲热| 日韩av免费| 色偷偷偷在线视频播放| 欧美黄色一区二区| 国产精选一区| 国产精品一区二区av交换| 日韩在线视频一区二区三区| 91精品福利| 国产一区日韩一区| 欧美va天堂| 91久久中文| 蜜桃av一区二区三区电影| 91精品综合| 99久久亚洲精品| 激情综合自拍| 午夜精品网站| 亚洲日本三级| 久久国产尿小便嘘嘘| 精品国产一区二区三区性色av| а√在线中文在线新版| 欧美天堂视频| 噜噜噜躁狠狠躁狠狠精品视频| 欧美三级精品| 欧美福利专区| 色综合视频一区二区三区日韩| 91欧美日韩在线| 精品中文字幕一区二区三区| 欧美亚洲人成在线| 久久一区欧美| 91久久中文| 精品久久97| 黄色免费成人| 国产精品1区| 久久精品亚洲欧美日韩精品中文字幕| 欧美精品日日操| 日韩三区四区| 国产福利电影在线播放| 视频在线观看一区| 欧美1区二区| 国产亚洲激情| 国产欧美一区二区三区精品酒店 | 日韩精品国产欧美| 精品视频黄色| 日韩一区二区三免费高清在线观看| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产成人精品一区二区三区免费 | 在线日韩欧美| 国产精品永久| 久久亚洲色图| 精精国产xxxx视频在线播放| 亚洲毛片在线免费| 国产黄大片在线观看| 欧美日韩视频免费看| 国产在线成人| 中文在线а√天堂| 欧美亚洲三级| 亚洲精选91| 成人精品天堂一区二区三区| 老牛国产精品一区的观看方式| 四季av一区二区凹凸精品| 国产精品a级| 欧美中文一区| 日韩三区四区| 香蕉成人久久| 不卡一区综合视频| 97国产成人高清在线观看| 国产精品115| 国产精品第一| 国产精品a级| 精品国产欧美日韩| 精品国产美女a久久9999| 国产精品视频一区二区三区四蜜臂| 日韩欧美在线精品| 中国女人久久久| 99精品电影| 水蜜桃精品av一区二区| 欧美日韩在线观看首页| 成人污污视频| 日韩成人三级| 欧美日韩激情| 日韩精品一页| 美女性感视频久久| 欧美日韩在线观看首页| 亚洲精品a级片| 亚洲小说春色综合另类电影| 亚洲精品成人一区| 日本午夜精品视频在线观看| 欧美日韩a区| 国产精品白浆| 日韩国产一区二区三区| 偷拍欧美精品| 欧美精品观看| 在线人成日本视频| 中文国产一区| 国产精品久久久久77777丨| 日韩精品诱惑一区?区三区| 亚洲一区成人| 国产日韩视频在线| 久久香蕉国产| 国产美女久久| 亚洲性图久久| 国产精品视频一区视频二区| 91精品一区二区三区综合在线爱| 国产一区二区三区自拍| 日韩在线观看中文字幕| 中文在线资源| 日韩成人午夜精品| 亚洲婷婷在线| 久久国产精品美女| 亚洲一区亚洲| 日本在线高清| 国产日韩中文在线中文字幕| 午夜影院欧美| 岛国av在线网站| 国产精品自拍区| 石原莉奈在线亚洲三区| 日韩成人亚洲| 精品久久视频| 91亚洲无吗| 狠狠爱成人网| 免费不卡中文字幕在线| 都市激情国产精品| 国产欧美日韩在线一区二区| 亚洲欧美久久久| 久久精品国语| 伊人久久视频| 欧美日韩在线观看首页| 久久精品伊人| 麻豆91精品91久久久的内涵| 日本一区二区中文字幕| 午夜在线播放视频欧美| 免费欧美一区| 99在线观看免费视频精品观看| 欧美国产不卡| 久久国产精品美女| 精品亚洲精品| 特黄毛片在线观看| 日韩成人精品一区| 99精品综合| 亚洲午夜在线| 五月婷婷六月综合| 亚洲一卡久久| 日韩极品在线观看| 国产精品网站在线看| 国产精品亚洲人成在99www| 日本少妇精品亚洲第一区| 91精品国产自产在线丝袜啪| 日本免费一区二区视频| 日本成人手机在线| 国产精品蜜月aⅴ在线| 国产精品极品国产中出| 中文字幕色婷婷在线视频| 欧美午夜不卡| 午夜性色一区二区三区免费视频| 国产欧美日韩影院| 国产精品国产一区| 欧美精品自拍| 国产精品.xx视频.xxtv| 久久国产婷婷国产香蕉| 欧美日韩视频网站| 亚洲一区欧美| 精品国产一区二区三区噜噜噜| 日韩精品中文字幕第1页| 韩日一区二区三区| 久久国际精品| 亚洲性色av| 国产亚洲永久域名| 国产精品.xx视频.xxtv| 欧美女激情福利| 国产一区二区三区四区| 亚洲精品美女| 婷婷丁香综合| 精品精品久久| 日韩在线网址| 日韩午夜一区| 欧美片第1页| 久久69成人| 日韩区欧美区| 亚洲爱爱视频| 日本久久一区| 免费日韩av片| 亚洲高清二区| 久久久久国产精品一区三寸| 狠狠久久伊人中文字幕| 欧美日韩一区二区三区四区在线观看 | 日本久久综合| 国产精品九九| 久久丁香四色| 精品久久91|