最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

字節(jié)二面SpringBoot可以同時處理多少請求

 更新時間:2023年07月09日 14:56:41   作者:AC編程  
這篇文章主要為大家介紹了字節(jié)二面之SpringBoot可以同時處理多少請求面試分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、并發(fā)測試

1.1 代碼

SpringBoot可以同時處理多少請求?站在SpringBoot的角度來,確實可以通過一些配置來有效的去控制一次請求的連接數。比如控制100,一旦連接數超過100,客戶端就會顯示連接超時。看一個簡單的例子,我在這里創(chuàng)建了一個Springboot應用,聲明了一個接口。里面很簡單,就是sleep了兩秒。

@Slf4j
@RestController
@RequestMapping("test")
public class TestController {
    @GetMapping
    public String test() throws InterruptedException {
        log.info("線程:{}", Thread.currentThread().getName());
        Thread.sleep(2000);
        return "OK";
    }
}

然后我配置了連接池的一些參數,參數的意思呢,后面會講到。

server:
  tomcat:
    threads:
      min-spare: 10        # 最少線程數
      max: 20              # 最多線程數
    max-connections: 30    # 最大線程數
    accept-count: 10       # 最大等待數

1.2 壓測

然后通過JMeter來給大家做一個壓測。我發(fā)起的線程數是100,qps相當于是100,請求我們剛剛的那個接口??梢钥吹酱藭r的這個異常數是60%,也就是我們的100請求當中呢,只有40次成功了,其中60次是失敗的。結合剛剛這個參數來看一下,最大連接數加這個最大等待數的數量,40次成功了,剩下的60次呢是失敗了。

二、參數說明

作為SpringBoot,我可以通過配置內嵌的這個tomcat的線程池的參數去控制它的請求數量,當我們問到SpringBoot可以同時處理多少請求的話,我們只需要知道這兩個參數它的默認值是多少,其實就是這個問題的答案了。

這幾個參數的默認值呢,我們打開這個spring配置原數據的json文件來進行查看,這份文件當中把SpringBoot所有的默認可配置項,都給我們列出來了。包括每一個配置項,它的說明、默認值都在上面。我們剛剛配置的這個最大連接數max-connections,它的默認值是8192,最大等待數是100,所以SpringBoot可以同時處理多少請求的答案呢,就是8192+100=8292。

配置

三、詳解

那在我們的一個高并發(fā)的應用當中,這幾個參數它需不需要改變呢?答案是肯定需要的。首先要搞清楚這幾個參數的意思,才能更好的去配置。

大家可以把我們的web服務器,當做是一個飯店,最小線程數當做飯店里面正式員工的廚師,最大線程數當做兼職廚師,最大連接數是我們這個飯店最多可以容納的客戶,最大等待數當作是最多可以多少人去排隊。

大概的流程是這樣的。當一個客戶進來,我們首先會看一下這個最大連接數,是不是小于當前連接數,也就是這個飯店里面到底能不能坐得下。如果能坐下的話,我們看一下最小工作線程數里面,這兩個廚師他是不是都閑著,如果都閑著的話,肯定就分配一個廚師去直接給我們炒菜了。那如果這兩個廚師,他都在為這兩桌客人在炒菜的話,那我們就需要去找到那些兼職的廚師來為我們去炒菜。炒完菜,整個流程就結束了。

像我們剛剛應用程序當中所示,我們的最大連接數呢配置的是30,最大等待數是10,最大工作線程數是20,最小工作線程數是10,然后我們的連接我們的qps是100,那這個過程是什么樣的呢?那首先這100個請求進來,我們會看一下最大連接數當中是不是有,我們會分配30個人坐到飯店里面去,然后呢還有10個人可以去排隊。那么其余的60個人他不會立馬走,會觀望一下,看還有沒有機會,所以這60個人會等待一個超時時間,如果在這個超時間之內,你這40個人有人出來,有人吃完了之后,我這60個人依然可以進去。如果這60個人耐心用光了,也就是我的超時時間用完了,就會顯示connect timeout,連接超時大概是一個這樣的過程。

這30個人進來之后,并不是說直接就有30個線程直接去處理,而是根據最大工作線程數來的。首先看一下最小線程數能不能滿足,如果最小線程數滿足的話,就不需要額外再開辟多余的線程去處理了。如果最小線程數滿足不了,就需要開辟多余的線程數來去幫我們炒菜。最大線程數我們配置是20個,那這30個呢首先會有20個來進行處理,其余的10個會放入到我們線程池的阻塞隊列當中,完了之后再處理這10個,最后處理排隊的這10個。如果這60個沒有超過這個連接超時時間的話,那這60個依然會進行處理。

那我們剛剛壓測的時候,為什么這60個都失敗了呢?其實是因為我也配置了一個連接超時間是300ms,那我們的業(yè)務處理時間是2秒鐘,所以其余的60個肯定就超時了。我只能等待300ms,我的耐心就300ms,你如果這里面還沒人出來,我就直接走了。

實際我們在服務器當中,要去調整這幾個參數的話,得結合很多的指標,比如說我們服務器的硬件的性能,io模型,網絡,還要結合一些壓測,服務器的監(jiān)控,實際的數據,才能設置最佳性能的一個配置。

以上就是字節(jié)二面SpringBoot可以同時處理多少請求的詳細內容,更多關于SpringBoot同時處理請求的資料請關注腳本之家其它相關文章!

相關文章

  • Java使用PreparedStatement接口及ResultSet結果集的方法示例

    Java使用PreparedStatement接口及ResultSet結果集的方法示例

    這篇文章主要介紹了Java使用PreparedStatement接口及ResultSet結果集的方法,結合實例形式分析了PreparedStatement接口及ResultSet結果集的相關使用方法與操作注意事項,需要的朋友可以參考下
    2018-07-07
  • JDBC數據源連接池配置及應用

    JDBC數據源連接池配置及應用

    這篇文章主要介紹JDBC建立數據庫連接的兩種方式,使用配置數據源的方式連接數據庫,效率更高,推薦使用,希望能給大家做一個參考。
    2016-06-06
  • IDEA中多行注釋及取消注釋的快捷鍵分享

    IDEA中多行注釋及取消注釋的快捷鍵分享

    這篇文章主要介紹了IDEA中多行注釋及取消注釋的快捷鍵分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringCloud Stream使用解析

    SpringCloud Stream使用解析

    這篇文章主要介紹了SpringCloud Stream介紹,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Java?HashMap底層原理的全方位深度解析

    Java?HashMap底層原理的全方位深度解析

    Java中的HashMap是我們在開發(fā)中經常使用的集合之一,它提供了基于哈希表的數據存儲方式,使得對數據的插入、刪除和查找操作都具有較高的效率,這篇文章主要介紹了Java?HashMap底層原理的全方位深度解析,需要的朋友可以參考下
    2026-02-02
  • Python文件高級操作函數之文件信息獲取與目錄操作

    Python文件高級操作函數之文件信息獲取與目錄操作

    這篇文章主要介紹了Python文件高級操作函數之文件信息獲取與目錄操作,在Python中,內置了文件(File)對象。在使用文件對象時,首先需要通過內置的open()方法創(chuàng)建一個文件對象,然后通過該對象提供的方法進行一些基本文件操作,需要的朋友可以參考下
    2023-05-05
  • Java封裝的實現(xiàn)訪問限定符、包

    Java封裝的實現(xiàn)訪問限定符、包

    封裝就是將數據和操作數據的方法進行有機結合,隱藏對象的屬性(成員變量)和實現(xiàn)細節(jié),僅對外公開接口來和對象進行交互,下面這篇文章主要給大家介紹了關于Java封裝實現(xiàn)訪問限定符、包的相關資料
    2022-08-08
  • Java中LinkedList詳解和使用示例_動力節(jié)點Java學院整理

    Java中LinkedList詳解和使用示例_動力節(jié)點Java學院整理

    LinkedList 是一個繼承于AbstractSequentialList的雙向鏈表。它也可以被當作堆棧、隊列或雙端隊列進行操作。接下來通過示例代碼給大家詳細介紹java中l(wèi)inkedlist的使用,需要的朋友參考下吧
    2017-05-05
  • idea整合deepseek實現(xiàn)AI輔助編程的流程步驟

    idea整合deepseek實現(xiàn)AI輔助編程的流程步驟

    文章介紹了如何在IntelliJ IDEA中整合DeepSeek平臺實現(xiàn)AI輔助編程,步驟包括安裝CodeGPT插件、注冊DeepSeek開發(fā)者賬號、配置API密鑰以及設置API信息,需要的朋友可以參考下
    2025-02-02
  • java根據List內對象的屬性排序方法

    java根據List內對象的屬性排序方法

    下面小編就為大家分享一篇java根據List內對象的屬性排序方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

芜湖市| 蓝田县| 黄浦区| 桓仁| 洪洞县| 年辖:市辖区| 昌江| 五大连池市| 金昌市| 奉贤区| 抚州市| 甘孜| 丰台区| 务川| 松桃| 井陉县| 汾西县| 阜城县| 沙田区| 加查县| 麻阳| 永平县| 临沭县| 乳山市| 德江县| 新兴县| 肥东县| 景宁| 阳东县| 康乐县| 乐业县| 江西省| 韩城市| 黄浦区| 商城县| 农安县| 宝丰县| 新蔡县| 安岳县| 荃湾区| 乡宁县|