• Tomcat 连接池调优


    性能较好的Tomcat 配置文件内容

    <Context>
    <Resource name="jdbc/pgsql" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://10.14.196.190:5432/foo"
    username="sdbadmin"
    password="sdbadmin"
    factory="org.apache.tomcat.jdbc.pool..DataSourceFactory"
    maxActive="600"
    maxIdle="600"
    minIdle="600"
    initialSize="400"
    timeBetweenEvictionRunsMillis="30000"
    minEvictableIdleTimeMillis="1800000"
    removeAbandoned="true"
    removeAbandonedTimeout="180"
    testOnBorrow="true"
    maxWait="300000"
    logAbandoned="true"
    testOnReturn="false"
    validationQuery="SELECT 1"
    /> 
    
    <ResourceLink global="jdbc/pgsql"
    name="jdbc/pgsqlDB"
    type="javax.sql.DataSource"
    />
    
    </Context>

    Resource 重要参数说明:
    factory 使用哪种连接池的库
    maxActive 连接池的最大连接上限
    maxIdle 最大空闲连接数,空闲的连接如果超过 minEvictableIdleTimeMillis 参数设置的值,空闲连接将被释放
    minIdle 最小空闲连接数
    initialSize 初始化连接数
    timeBetweenEvictionRunsMillis 多长时间去检查一次连接池的空闲连接,并且发现空闲连接的空闲时间超过了 minEvictableIdleTimeMillis 设置时间后,直接将空闲连接断开,直到空闲连接数为 minIdle 数为止
    minEvictableIdleTimeMillis 这个参数要和 timeBetweenEvictionRunsMillis 参数混合使用
    removeAbandoned 是否清理超过 removeAbandonedTimeout 设置时间的活动连接
    removeAbandonedTimeout 活动连接的最大空闲时间
    testOnBorrow 从连接池中借出连接前,是否对该连接进行正确性校验,连接正常才会出池,如果连接已经失效,将会把失效连接清除,并且重新申请新的连接。该参数可以保证成功借出的连接都是处于活动状态。该参数必须要和 validationQuery 参数配合使用,如果 validationQuery 参数为空字符串,该参数将不生效。
    maxWait 连接池用完后,申请新连接的等待时间
    logAbandoned 连接池回收空闲的活动连接时是否打印日志
    testOnReturn 将连接返回连接池时,是否对该连接进行正确性校验,如果连接失效,将清除该连接,如果连接正常,则回池。该参数必须和 validationQuery 参数配合使用。默认值为 false
    validationQuery 探测连接健壮性的模板SQL

    老的tomcat 连接池的配置,性能不好

    <Context>
    <Resource name="jdbc/pgsql" type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
    url="jdbc:postgresql://10.14.196.190:5432/foo"
    username="sdbadmin"
    password="sdbadmin"
    factory="org.apache.tomcat.jdbc.pool..DataSourceFactory"
    maxActive="1000"
    maxIdle="-1"
    minIdle="600"
    initialSize="500"
    timeBetweenEvictionRunsMillis="0"
    removeAbandoned="true"
    removeAbandonedTimeout="1000"
    /> 
    
    <ResourceLink global="jdbc/pgsql"
    name="jdbc/pgsqlDB"
    type="javax.sql.DataSource"
    />
    </Context>

    该配置的问题
    maxIdle 设置-1 是错误,tomcat 会报告该参数大于maxActive ,然后设置为与 maxActive 相同的值
    timeBetweenEvictionRunsMillis 由于没有设置 validationQuery 参数,所以不生效
    removeAbandoned 由于没有设置 validationQuery 参数,所以不生效
    removeAbandonedTimeout 由于没有设置 validationQuery 参数,所以不生效

  • 相关阅读:
    Java Mail学习整理
    @RequestBody, @ResponseBody 注解详解(转)
    @RequestMapping 用法详解之地址映射(转)
    理解static关键字
    ClassLoader如何加载class
    请说出作用域public,private,protected,以及不写时的区别
    分页语句-取出sql表中第31到40的记录(以自动增长ID为主键)
    Java构造器和方法的区别
    8月收到的最新更新附近的人交友系统源码,自动打招呼,自动发视频通话+自动聊天多功能机器人交友源码
    8月新亲测完美短视频点赞系统支持抖音+快手+刷宝+微视等所有主流短视频点赞/关注/评论系统源码
  • 原文地址:https://www.cnblogs.com/chenfool/p/6717681.html
Copyright © 2020-2023  润新知