MySQL 报 Can't create more than max_prepared_stmt_count statements
-
前言
-
最近压测完毕以后, MySQL 报 Can't create more than max_prepared_stmt_count statements. 正常情况下是程序没有关闭 stmt 导致. 也不排除并发量很大, MySQL 没机会去关闭. 这种情况我们系统来说出现概率较少, 并发量还没有那么大. 以下为定位问题的过程.
-
-
操作
-
1、出现此类问题, 如果是线上应立即执行 set global max_prepared_stmt_count = 1048576,先控制住错误。然后进行定位代码。它的取值范围为“0 - 1048576”,默认为16382。show variables like '%prepared%' 查看当前max_prepared_stmt_count的最大值。
-
2、以下为在测试环境的操作,首先开启mysql日志,容易定位错误。 set global general_log = on;
-
3、查看mysql日志存放路径,show variables where Variable_name like "general_log%" 结果中会显示。
-
4、set global max_prepared_stmt_count = 1000 设置小点, 容易复现错误. 静待错误发生.(也可以直接看日志, 但是日志太多, 不是很方便)
-
5、错误爆发后,SHOW GLOBAL STATUS LIKE 'com_stmt%'。查看数据库 prepare 的情况。如果Com_stmt_close与Com_stmt_prepare之间的差过大就会报错。
-
6、查看日志。正常情况日志由prepare、execute、close stmt组成,如果发现有很多prepare与execute组成,而没有close stmt则基本定位到这条sql没有close stmt。查看sql,定位源码。
-
原文地址:https://www.cnblogs.com/Zereker/p/11396597.html
- 使用自定义标记来构建页面
- ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]
- ASP.NET Core管道深度剖析(2):创建一个“迷你版”的管道来模拟真实管道请求处理流程
- 机器学习实战之决策树
- 初学ReactJS,写了一个RadioButtonList组件
- 今天,你有微信小游戏提交审核吗?
- 云计算,迷你版线程同步
- Kubernetes 年度关键进展回顾
- 比较一下以“反射”和“表达式”执行方法的性能差异
- 人工智能芯片是什么?有什么用?
- 柯洁食言“复出”再战AI:明年4月见分晓
- 深入探讨ASP.NET MVC的筛选器
- pytorch自然语言处理之Pooling层的句子分类
- su命令cannot set groups: Operation not permitted的解决方法
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解