SpringBoot內置tomcat調優測試優化

問題

怎麼配置springBoot 內置tomcat,才能使得自己的服務效率更高呢?

基礎配置

Spring Boot 能支持的最大並發量主要看其對Tomcat的設置,可以在配置文件中對其進行更改。我們可以看到默認設置中,Tomcat的最大線程數是200,最大連接數是10000。 這個不同SpringBoot 版本可能有所細微差別。本文測試基於Springboot 2.0.7.RELEASE

默認配置

/**
		 * Maximum amount of worker threads.
		 */
		private int maxThreads = 200;

		/**
		 * Minimum amount of worker threads.
		 */
		private int minSpareThreads = 10;

		/**
		 * Maximum size in bytes of the HTTP post content.
		 */
		private int maxHttpPostSize = 2097152;

		/**
		 * Maximum size in bytes of the HTTP message header.
		 */
		private int maxHttpHeaderSize = 0;

		/**
		 * Whether requests to the context root should be redirected by appending a / to
		 * the path.
		 */
		private Boolean redirectContextRoot = true;

		/**
		 * Whether HTTP 1.1 and later location headers generated by a call to sendRedirect
		 * will use relative or absolute redirects.
		 */
		private Boolean useRelativeRedirects;

		/**
		 * Character encoding to use to decode the URI.
		 */
		private Charset uriEncoding = StandardCharsets.UTF_8;

		/**
		 * Maximum number of connections that the server accepts and processes at any
		 * given time. Once the limit has been reached, the operating system may still
		 * accept connections based on the "acceptCount" property.
		 */
		private int maxConnections = 10000;

		/**
		 * Maximum queue length for incoming connection requests when all possible request
		 * processing threads are in use.
		 */
		private int acceptCount = 100;

測試步驟

通過我們查看源碼得知瞭(org.springframework.boot.autoconfigure.web.ServerProperties)springBoot 內置tomcat 默認配置,現在我們為瞭在本地體現出效果,我們將配置參數有意調小配置如下進行壓測,同時將壓測接口中設置sleep(2000) 模擬線程沒有釋放。

  tomcat:
     #最小線程數
    min-spare-threads: 5
    #最大線程數
    max-threads: 5
    #最大鏈接數
    max-connections: 5
    #最大等待隊列長度
    accept-count: 1

該配置對應壓測

在這裡插入圖片描述

通過壓測100並發 發現異常達到瞭85% 由於我們配置ReadTimeout 和ConnectTimeout 配置2秒 100個線程同時達到,處理最大線程才1,排隊也是1 導致一個是沒有線程處理請求導致超時一個是排不上隊別拒絕。當我按照本機cup 合理配置後看看壓測情況。優化配置如下:

  tomcat:
      #最小線程數
    min-spare-threads: 100
    #最大線程數
    max-threads: 600
    #最大鏈接數
    max-connections: 10000
    #最大等待隊列長度
    accept-count: 1000

在這裡插入圖片描述

如上圖 同樣是100並發 異常率為0 全部通過,響應時間也是減除sleep(2000) 大多數都是10毫秒內。優化效果可見顯著。

到此這篇關於SpringBoot內置tomcat調優測試優化的文章就介紹到這瞭,更多相關SpringBoot內置tomcat調優測試內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: