当前位置: 首页 > article >正文

mysql线上问题集合

1、too many connections

连接数量太多,可以先通过以下命令先调整最大连接数,得以连接上mysql进行问题排查。
临时修改:

gdb -p mysql进程id -ex "set max_connections=500" -batch

gdb:这是 GNU 调试器,用于调试程序。
-p 16732:这个选项告诉 gdb 附加到进程 ID 为 16732 的进程。这意味着 gdb 将连接到已经在运行的 MySQL 进程(假设 16732 是 MySQL 进程的 PID)。
-ex “set max_connections=500”:这个选项允许你在 gdb 启动时执行一条命令。这里的命令是 set max_connections=500,意图是设置 max_connections 变量为 500。
-batch:这个选项告诉 gdb 在执行完所有命令后退出。这样可以确保 gdb 不会进入交互模式,而是直接执行完命令并退出。

修改连接数后,连接上mysql,用以下命令排除下问题。

SHOW VARIABLES LIKE 'log_error'; -- mysql日志文件路径
SHOW FULL PROCESSLIST;  -- 查询当前连接进程列表
SHOW VARIABLES LIKE 'max_%'; -- 查询最大连接数max_connections
SHOW GLOBAL STATUS LIKE 'Max_used_connections'; -- 查询mysql本次启动以来最多的连接数
SHOW STATUS LIKE 'Threads_connected'; -- 查询当前连接数量

SET GLOBAL max_connections = 300;  -- 默认151,修改最大连接数
SET GLOBAL wait_timeout = 300;  -- 默认8小时,设置连接的最大空闲时间为 8 小时,
SET GLOBAL interactive_timeout = 300;  -- 默认8小时,设置交互式连接的最大空闲时间为 8 小时,如命令行,navicat中的查询都是以这个为准

SELECT SLEEP(30);  -- 让查询暂停 30 秒

通过mysql层面解决,在配置文件中永久修改最大连接数和空闲时间参数:

[mysqld]
max_connections = 300
wait_timeout = 300
interactive_timeout = 300

通过代码程序层面解决,如程序bug,连接池配置,以下为dbcp连接池配置:
详细参考官网:DBCP连接池官网

    <!-- 默认8 最大连接数 -->
    <property name="maxActive" value="40"/>
    <!-- 默认8 最大空闲连接数,一般为最大连接数的一半 -->
    <property name="maxIdle" value="20"/>
    <!-- 单位ms 获取连接的最大等待时间。如果超过这个时间仍然无法获取到连接,则抛出异常。设置为5-10秒是一个合理的范围。 -->
    <property name="maxWait" value="10000"/>
    <property name="defaultAutoCommit" value="true"/>
    <property name="removeAbandoned" value="true"/>
    <!-- 单位s 如果一个连接在7200秒内没有被归还到连接池,DBCP会认为这个连接已经被遗弃,并自动关闭它。    -->
    <property name="removeAbandonedTimeout" value="7200"/>
    <property name="logAbandoned" value="true"/>
    <!-- 默认null 用于验证连接的SQL查询 -->
    <property name="validationQuery" value="select 1"/>
    <!-- 默认false 连接空闲时对其进行验证 -->
    <property name="testWhileIdle" value="true"/>
    <!-- 单位ms,默认-1不执行 空闲连接回收器线程运行的时间间隔,仅testWhileIdle为true时执行	-->
    <property name="timeBetweenEvictionRunsMillis" value="30000"/>
    <!-- 单位ms,默认1800000L 连接在池中空闲的最短存活时间 -->
    <property name="minEvictableIdleTimeMillis" value="18000"/>
    <!-- 默认3 每次运行空闲对象回收器线程时要检查的对象数量 -->
    <property name="numTestsPerEvictionRun" value="3"/>

http://www.kler.cn/a/420630.html

相关文章:

  • Rust学习笔记_12——闭包
  • 【鸿蒙NEXT】arrayBuffer和base64字符串互相转换
  • OpenCV_Code_LOG
  • 深度探索Spring Context:框架式的Bean访问与企业级功能
  • 移远通信携手紫光展锐,以“5G+算力”共绘万物智联新蓝图
  • 第二节——计算机网络(四)物理层
  • Stable Diffusion 3 论文
  • 淘宝商品数据获取:Python爬虫技术的应用与实践
  • 大数据营销
  • Flink四大基石之窗口(Window)使用详解
  • 如何实现人机环境之间动态交互的事实与价值编排组合
  • 前端面试热门题(二)[html\css\js\node\vue)
  • Docker 容器隔离关键技术:SELinux
  • el-table 组件二次封装(vue2)
  • 【MATLAB源码-第230期】基于matlab的32QAM系统相位偏移估计HOS算法仿真,对比补偿前后的星座图误码率。
  • 机器学习算法(六)---逻辑回归
  • Qt Serial Bus 前置介绍篇
  • ​导游|基于SprinBoot+vue的在线预约导游系统
  • 【Django-xadmin】
  • Git命令大全(超详细)
  • 技术创新与人才培养并重 软通动力子公司鸿湖万联亮相OpenHarmony人才生态大会
  • 【Redis初阶】Zset 有序集合
  • 704. 二分查找 C++
  • C# winform非常好用的图表开源控件Scottplot
  • 基于SSM+vue的个性化商铺系统(源码+数据库+文档)
  • 【Elasticsearch】03-ES RESTFUL使用