Hikari连接池配置之最大连接数(MySQL篇)

原文链接:https://segmentfault.com/a/1190000017268959
  • Hikari连接池配置之最大连接数
  • MySQL数据库最大连接数修改
  • MySQL数据库清理Sleep连接

Hikari连接池配置参考
建议根据实际访问量设置setMaximumPoolSize,不宜过大,否则会造成数据库连接数太多,无法访问。
生产环境和测试环境可区别设置,比如:测试环境设置10,生产环境设置20

    // Hikari连接池配置
    HikariConfig config = new HikariConfig();
    config.setMaximumPoolSize(20);
    ...

最大连接数之MySQL篇
通常,MySQL数据库的默认最大连接数是100。实际情况下,我们需要大于100。
下面介绍如何修改MySQL最大连接数

  1. 命令行修改
    首先通过命令行登录MySQL,查看当前最大连接数:

       mysql> show variables like '%max_connections%';

    修改最大连接数:

       mysql> set GLOBAL max_connections = 600;

    注意:这种方式设置的最大连接数只在当前服务进程中有效,一旦MySQL重启,就会恢复到初始状态。

  2. 配置文件修改
    打开MySQL配置文件/etc/my.cnf,添加配置项max_connections=600,保存。
    这样,最大连接数就被设置成了600,重启MySQL后生效。

当出现数据库连接数太大,影响MySQL数据库访问时,我们需要对一些Sleep连接进行清理。
查询连接情况,可选择加上DB、HOST等查询条件:

SELECT * FROM information_schema.processlist
WHERE COMMAND = 'Sleep'
AND DB IN ( 'xx', 'yy')
AND HOST LIKE 'xxx.xxx.xx.xxx%'
ORDER BY TIME DESC;

用root用户登录数据库,清理连接:
KILL xxx;
xxx为上面SQL查询出的连接ID

展开阅读全文

连接池超过最大连接数问题

09-11

[9/11/12 14:26:23:860 CST] 000000aa SystemOut O 1981-09-28rn[9/11/12 14:26:23:860 CST] 000000aa SystemOut O rn[9/11/12 14:26:23:860 CST] 000000aa SystemOut O aaaa=5按机构查询客户与操作员信息==select p.cifno,p.cifname,p.idnum,p.mangno,t.name from cr_personinfo p left JOIN cms_tlrctl t on p.mangno=t.tlrno where p.delstat='0' and p.stat <='2' and length(p.cifno)>=10 and p.canalno = '09903' and rownum<21 and p.cifname like '%董红霞%' union all select p.cifno,p.cifname,p.license,p.mangno,t.name from cr_corp_inf p left JOIN cms_tlrctl t on p.mangno=t.tlrno where p.delstat='0' and p.stat <='2' and length(p.cifno)>=10 and p.canalno = '09903' and rownum<21 and p.cifname like '%董红霞%'rn[[color=#FF0000]9/11/12 14:26:27:806 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection getConnection()rn[9/11/12 14:26:27:818 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Check for timeout, activeCount=500, useCount=500rn[9/11/12 14:26:27:836 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Sleep until next testrn[9/11/12 14:26:28:854 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Check for timeout, activeCount=500, useCount=500rn[9/11/12 14:26:28:865 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Sleep until next testrn[9/11/12 14:26:29:885 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Check for timeout, activeCount=500, useCount=500rn[9/11/12 14:26:29:909 CST] 00000017 GenericDataSo I org.apache.struts.legacy.GenericDataSource getConnection Sleep until next test[/color]rnrn数据库为aix,was为webspherern今天出现两次由于超过最大连接池导致项目无法登陆,有一次还导致websphere宕掉。rn求解决方法?由于程序比较乱,而且是很多人都参与开发过?无法定位具体是由于什么原因导致的?rn我猜想有两种可能:1、是在访问了数据库没有释放链接所致,但功能模块太多,无法定位具体是那个模块?rn2、由于是中毒引起,因为该情况以前从来没有出现过,项目上线都半年了,今天才暴露这个问题。rn求高手帮忙解决一下?rn比如怎么定位错误?有什么命令可以定位具体是什么链接没有释放等等? 论坛

没有更多推荐了,返回首页