欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot tomcat最大線程數(shù)與最大連接數(shù)解析

 更新時(shí)間:2021年06月04日 14:59:40   作者:裂開(kāi)的湯圓  
這篇文章主要介紹了springboot tomcat最大線程數(shù)與最大連接數(shù)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot tomcat最大線程數(shù)與最大連接數(shù)

首先看看springboot內(nèi)置的tomcat,該如何配置這兩個(gè)參數(shù)

# 在配置文件中添加如下內(nèi)容
# tomcat最大線程數(shù),默認(rèn)為200
server.tomcat.max-threads=200
# tomcat最大連接數(shù),默認(rèn)為10000(網(wǎng)上的說(shuō)法)
server.tomcat.max-connections=300

如何理解上面兩個(gè)參數(shù)

為了方便理解,我這里使用了springboot編寫(xiě)了一個(gè)簡(jiǎn)單了的服務(wù),包含一個(gè)模擬登錄的接口,并使用jmeter進(jìn)行測(cè)試,不了解jmeter如何使用的朋友可以翻看我的歷史文章。部分代碼如下

// java 代碼
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UsersRepository usersRepository;

    @PostMapping("/login")
    public String login(Users user) throws InterruptedException {
        // 這里將線程掛起3秒,方便觀察結(jié)果
        Thread.sleep(3000);
        Users checkUser = usersRepository.findByName(user.getName());
        if(checkUser == null)
            return "用戶不存在";
        if(!checkUser.getPassword().equals(user.getPassword()))
            return "密碼錯(cuò)誤";
        System.out.println("用戶:" + checkUser.getName() + ",登錄成功");
        return "登錄成功";
    }
}

接下來(lái),設(shè)置jmeter中的線程數(shù),分別測(cè)試以下場(chǎng)景返回的結(jié)果

注意:我在java代碼中添加將線程掛起3秒的語(yǔ)句,實(shí)際的響應(yīng)時(shí)間應(yīng)該減去3秒

場(chǎng)景1:并發(fā)請(qǐng)求數(shù) <= tomcat最大線程數(shù)200

設(shè)置jmeter并發(fā)請(qǐng)求數(shù)量為200

結(jié)果統(tǒng)計(jì)

結(jié)論:可以看到200個(gè)請(qǐng)求,平均響應(yīng)時(shí)間為(3156-3000)=156ms,最小響應(yīng)時(shí)間為23ms,最大響應(yīng)時(shí)間為336ms,響應(yīng)結(jié)果正常。

場(chǎng)景2:并發(fā)數(shù) >tomcat最大線程數(shù)200,以下我將jmeter線程數(shù)設(shè)置為201,再來(lái)看看結(jié)果

看了下,平均值,最小值好像沒(méi)什么異常,但是最大值卻去到了5606毫秒,接近6S的時(shí)間。為什么會(huì)有個(gè)接近6S的最大值,原因很簡(jiǎn)單,因?yàn)閠omcat最大的線程數(shù)為200,201的并發(fā)請(qǐng)求量,超出了并發(fā)處理的數(shù)量200,多出來(lái)的1個(gè)請(qǐng)求,需要等待某個(gè)處理中的請(qǐng)求處理完成。

這里我翻看了jmeter中大部分的http請(qǐng)求,驗(yàn)證了我的想法。大部分的http請(qǐng)求,響應(yīng)時(shí)間都是3000多毫秒,只有最后一個(gè)響應(yīng)的請(qǐng)求,響應(yīng)的時(shí)間為5606毫秒,截圖如下

場(chǎng)景3:請(qǐng)求數(shù)超過(guò)最大連接數(shù)300,這里將jmeter并發(fā)線程數(shù)設(shè)置為600

異常數(shù)量由原本的百分之0變成37.45%

可以看到有大量的沒(méi)有正常響應(yīng)的http請(qǐng)求,原因很簡(jiǎn)單,因?yàn)槌^(guò)了tomcat設(shè)置的最大連接數(shù),服務(wù)器拒絕了該次請(qǐng)求的連接

SpringBoot中修改tomcat最大連接數(shù)、最大線程數(shù)、最大等待數(shù)

1)maxThreads(最大線程數(shù))

每一次HTTP請(qǐng)求到達(dá)Web服務(wù)器,Web服務(wù)器都會(huì)創(chuàng)建一個(gè)線程來(lái)處理該請(qǐng)求,該參數(shù)決定了應(yīng)用服務(wù)同時(shí)可以處理多少個(gè)HTTP請(qǐng)求,tomcat默認(rèn)為200;

2)accepCount(最大等待數(shù))

當(dāng)調(diào)用Web服務(wù)的HTTP請(qǐng)求數(shù)達(dá)到tomcat的最大線程數(shù)時(shí),還有新的HTTP請(qǐng)求到來(lái),這時(shí)tomcat會(huì)將該請(qǐng)求放在等待隊(duì)列中,這個(gè)acceptCount就是指能夠接受的最大等待數(shù),默認(rèn)100.如果等待隊(duì)列也被放滿了,這個(gè)時(shí)候再來(lái)新的請(qǐng)求就會(huì)被tomcat拒絕(connection refused);

3)maxConnections(最大連接數(shù))

這個(gè)參數(shù)是指在同一時(shí)間,tomcat能夠接受的最大連接數(shù)。一般這個(gè)值要大于maxThreads+acceptCount。

根據(jù)公司用戶量及機(jī)器配置信息,公司的最大連接數(shù)、最大線程數(shù)和最大等待數(shù)優(yōu)化為:

   #最大連接數(shù)
   server.tomcat.max-connections=2000
   #最大線程數(shù)
   server.tomcat.max-threads=1000
   #最大等待數(shù)
   server.tomcat.accept-count=800

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    SpringBoot中Zookeeper分布式鎖的原理和用法詳解

    Zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù),它提供了高可用、高性能、可擴(kuò)展的分布式鎖機(jī)制,SpringBoot是一個(gè)基于Spring框架的開(kāi)發(fā)框架,它提供了對(duì)Zookeeper分布式鎖的集成支持,本文將介紹SpringBoot中的 Zookeeper分布式鎖的原理和使用方法,需要的朋友可以參考下
    2023-07-07
  • Spring?零基礎(chǔ)入門WebFlux框架體系

    Spring?零基礎(chǔ)入門WebFlux框架體系

    Spring5發(fā)布有兩年了,隨Spring5一起發(fā)布了一個(gè)和Spring?WebMvc同級(jí)的Spring?WebFlux。這是一個(gè)支持反應(yīng)式編程模型的新框架體系。反應(yīng)式模型區(qū)別于傳統(tǒng)的MVC最大的不同是異步的、事件驅(qū)動(dòng)的、非阻塞的,這使得應(yīng)用程序的并發(fā)性能會(huì)大大提高,單位時(shí)間能夠處理更多的請(qǐng)求
    2022-07-07
  • Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)分表

    Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)分表

    當(dāng)數(shù)據(jù)量比較多時(shí),放在一個(gè)表中的時(shí)候會(huì)影響查詢效率,本文主要介紹了Mybatis攔截器實(shí)現(xiàn)數(shù)據(jù)分表,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • SpringBoot中配置Web靜態(tài)資源路徑的方法

    SpringBoot中配置Web靜態(tài)資源路徑的方法

    這篇文章主要介紹了SpringBoot中配置Web靜態(tài)資源路徑的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java byte數(shù)組與16進(jìn)制間相互轉(zhuǎn)換的示例

    java byte數(shù)組與16進(jìn)制間相互轉(zhuǎn)換的示例

    這篇文章主要介紹了java byte數(shù)組與16進(jìn)制間相互轉(zhuǎn)換的示例,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10
  • Java自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏

    Java自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏

    在實(shí)際開(kāi)發(fā)中經(jīng)常會(huì)遇到有一些信息不能全部展示用戶,需要隱藏(可以叫脫敏),所以本文為大家分享了利用自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏的示例代碼,需要的可以參考下
    2023-07-07
  • java中對(duì)象為null時(shí)的打印輸出方式

    java中對(duì)象為null時(shí)的打印輸出方式

    這篇文章主要介紹了java中對(duì)象為null時(shí)的打印輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 小議Java中@param注解與@see注解的作用

    小議Java中@param注解與@see注解的作用

    這篇文章主要介紹了Java中@param注解與@see注解的作用,注解的功能類似于通常代碼中的注釋,需要的朋友可以參考下
    2015-12-12
  • Mybatis plus通用字段自動(dòng)填充的示例

    Mybatis plus通用字段自動(dòng)填充的示例

    這篇文章主要介紹了Mybatis plus通用字段自動(dòng)填充的示例,幫助大家更好的理解和使用Mybatis,感興趣的朋友可以了解下
    2021-01-01
  • Mybatis-Plus中的MetaObjectHandler組件的使用

    Mybatis-Plus中的MetaObjectHandler組件的使用

    MetaObjectHandler是Mybatis-Plus中一個(gè)實(shí)用組件,專門用于自動(dòng)處理實(shí)體對(duì)象中的特定字段,如創(chuàng)建時(shí)間、更新時(shí)間、創(chuàng)建人和修改人等,該接口允許開(kāi)發(fā)者在不修改業(yè)務(wù)代碼的情況下,實(shí)現(xiàn)自動(dòng)填充功能,極大地簡(jiǎn)化了代碼的復(fù)雜性,感興趣的可以了解一下
    2024-10-10

最新評(píng)論