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

SpringBoot優(yōu)化連接數(shù)的方法詳解

 更新時間:2023年06月08日 08:46:05   作者:中唄  
SpringBoot開發(fā)最大的好處是簡化配置,內(nèi)置了Tomcat,下面這篇文章主要給大家介紹了關(guān)于SpringBoot優(yōu)化連接數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

由于springboot內(nèi)置web容器是Tomcat,所以我們在使用springboot時,如果內(nèi)置Tomcat參數(shù)不滿足要求時,可按需優(yōu)化。
SpringBoot內(nèi)置Tomcat,在默認(rèn)設(shè)置中,Tomcat的最大線程數(shù)是200,最大連接數(shù)是10000。支持的并發(fā)量是指連接數(shù),也就是說 支持最大并發(fā)量是一萬(默認(rèn))。

Tomcat有兩種處理連接的模式,

1,是BIO,一個線程只處理一個Socket連接,

2,是NIO,一個線程處理多個Socket連接。

由于HTTP請求不會太耗時,而且多個連接一般不會同時來消息,所以一個線程處理多個連接沒有太大問題。一個線程處理多個連接數(shù)會很慢 有可能會超時。

springboot 配置Tomcat參數(shù):

server:
  tomcat:
    accept-count: 80 #掛起的請求隊(duì)列最大連接數(shù),默認(rèn)100
    max-connections: 2000  #最大連接數(shù),默認(rèn)10000,tomcat內(nèi)tcp連接池的大小
    max-threads: 200 #最大線程數(shù),默認(rèn)200,超過加入等待隊(duì)列,默認(rèn)是100,當(dāng)?shù)却?duì)列達(dá)到100后,直接拒絕此次請求返回connection refused。連接超時時間默認(rèn)為20秒
    min-spare-threads: 5  #最小工作線程數(shù)
    connection-timeout: 60000  #server端的socket超時間,默認(rèn)60s
    accesslog:
      enabled: true #啟動tomcat訪問日志

靜態(tài)內(nèi)部類Accesslog:主要用于配置Tomcat訪問日志的參數(shù)信息:

  • enabled:是否啟用訪問日志
  • pattern:訪問日志的格式化模式,默認(rèn)為common
  • directory:創(chuàng)建日志文件的目錄。可以是絕對或相對于Tomcat的基目錄,默認(rèn)是logs
  • prefix:日志文件名稱前綴,默認(rèn)access_log
  • suffix:日志文件名稱后綴,默認(rèn).log
  • rotate:是否啟用訪問日志旋轉(zhuǎn),默認(rèn)為true
  • renameOnRotate:是否推遲將日期戳包含在文件名中
  • fileDateFormat:日志文件名稱中的日期格式,默認(rèn)為.yyyy-MM-dd。
  • requestAttributesEnabled:為請求使用的IP地址、主機(jī)名、協(xié)議和端口設(shè)置請求屬性
  • buffered:是否緩沖輸出,使其只定期刷新,默認(rèn)為true

優(yōu)化完內(nèi)置Tomcat配置,我們可以按需再優(yōu)化下數(shù)據(jù)庫連接配置:

查詢mysql最大連接數(shù):

show variables like "%max_connections%";

MySQL 最大連接數(shù)的默認(rèn)值是 100,這個數(shù)值對于并發(fā)連接很多的數(shù)據(jù)庫應(yīng)用是遠(yuǎn)不夠用的。當(dāng)連接請求大于默認(rèn)連接數(shù)后,就會出現(xiàn)無法連接數(shù)據(jù)庫的錯誤,因此我們需要把它適當(dāng)調(diào)大一些。在使用 MySQL 數(shù)據(jù)庫的時候,經(jīng)常會遇到一個問題,就是 “Can not connect to MySQL server. Too many connections” -mysql 1040 錯誤,這是因?yàn)樵L問 MySQL 且還未釋放的連接數(shù)已經(jīng)達(dá)到 MySQL 的上限。通常,MySQL 的最大連接數(shù)默認(rèn)是 100,,最大可以達(dá)到 16384。

常用的修改MySQL最大連接數(shù)的兩種方式如下:

第一種:命令行修改最大連接數(shù) (max_connections),設(shè)置最大連接數(shù)為 1000。

set global max_connections = 1000;

這種方式有個問題,就是設(shè)置的最大連接數(shù)只在 MySQL 當(dāng)前服務(wù)進(jìn)程有效,一旦 MySQL 重啟,又會恢復(fù)到初始狀態(tài)。因?yàn)?MySQL 啟動后的初始化工作是從其配置文件中讀取數(shù)據(jù)的,而這種方式?jīng)]有對其配置文件做更改。

第二種:通過修改配置文件來修改 MySQL 最大連接數(shù) (max_connections)。

進(jìn)入 MySQL 安裝目錄,打開 MySQL 配置文件 my.ini 或 my.cnf 查找 max_connections=100,修改為 max_connections=1000,重啟 MySQL 服務(wù)即可。

mybatis 的并發(fā)上限優(yōu)化:

spring.datasource.name=druidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.1.1:13306/test?useUnicode=true&characterEncoding=utf8&useTimezone=true&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456test
spring.datasource.filters=stat,wall,log4j,config
spring.datasource.max-active=100
spring.datasource.initial-size=1
spring.datasource.max-wait= 60000
spring.datasource.min-idle=1
spring.datasource.time-between-eviction-runs-millis=60000
spring.datasource.min-evictable-idle-time-millis=300000
spring.datasource.validation-query=select 'x'
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=false
spring.datasource.test-on-return=false
spring.datasource.pool-prepared-statements=true
spring.datasource.max-open-prepared-statements=50
spring.datasource.max-pool-prepared-statement-per-connection-size=20

總結(jié)

到此這篇關(guān)于SpringBoot優(yōu)化連接數(shù)的文章就介紹到這了,更多相關(guān)SpringBoot優(yōu)化連接數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatisPlus分頁時排序的實(shí)現(xiàn)

    MyBatisPlus分頁時排序的實(shí)現(xiàn)

    本文主要介紹了MyBatisPlus分頁時排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • JAVA下單接口優(yōu)化實(shí)戰(zhàn)TPS性能提高10倍

    JAVA下單接口優(yōu)化實(shí)戰(zhàn)TPS性能提高10倍

    今天小編就為大家分享一篇關(guān)于JAVA下單接口優(yōu)化實(shí)戰(zhàn)TPS性能提高10倍,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • JavaEE中用response向客戶端輸出中文數(shù)據(jù)亂碼問題分析

    JavaEE中用response向客戶端輸出中文數(shù)據(jù)亂碼問題分析

    這篇文章主要介紹了JavaEE中用response向客戶端輸出中文數(shù)據(jù)亂碼問題分析,需要的朋友可以參考下
    2014-10-10
  • 解析JAVA深度克隆與淺度克隆的區(qū)別詳解

    解析JAVA深度克隆與淺度克隆的區(qū)別詳解

    本篇文章是對JAVA深度克隆與淺度克隆的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Springboot整合mqtt服務(wù)的示例代碼

    Springboot整合mqtt服務(wù)的示例代碼

    MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡單、開放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。本文為大家分享了Springboot整合mqtt服務(wù)的示例代碼,需要的可以參考一下
    2022-03-03
  • 教你在JNA中將本地方法映射到JAVA代碼中的示例

    教你在JNA中將本地方法映射到JAVA代碼中的示例

    對于JNI來說,我們可以使用native關(guān)鍵字來定義本地方法。那么在JNA中有那些在JAVA代碼中定義本地方法的方式呢?對JNA本地方法映射JAVA代碼的相關(guān)知識感興趣的朋友一起看看吧
    2022-04-04
  • Java基于解釋器模式實(shí)現(xiàn)定義一種簡單的語言功能示例

    Java基于解釋器模式實(shí)現(xiàn)定義一種簡單的語言功能示例

    這篇文章主要介紹了Java基于解釋器模式實(shí)現(xiàn)定義一種簡單的語言功能,簡單描述了解釋器模式的概念、功能及Java使用解釋器模式定義一種簡單語言的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-05-05
  • log4j與slf4j的使用與區(qū)別詳解

    log4j與slf4j的使用與區(qū)別詳解

    這篇文章主要介紹了log4j與slf4j的使用與區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java倒計(jì)時三種實(shí)現(xiàn)方式代碼實(shí)例

    Java倒計(jì)時三種實(shí)現(xiàn)方式代碼實(shí)例

    這篇文章主要介紹了Java倒計(jì)時三種實(shí)現(xiàn)方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • spring boot 默認(rèn)異常處理的實(shí)現(xiàn)

    spring boot 默認(rèn)異常處理的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot 默認(rèn)異常處理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論