数据库连接数量过多处理办法
1.查看当前所有连接的详细资料:
mysqladmin -uroot -proot processlist
客户端使用:
show full processlist
2、只查看当前连接数(Threads就是连接数.):
mysqladmin -uroot -proot status
客户端使用:
3.查看最大连接数
show variables like "max_connections";
4:查看当前连接数:
show global status like 'Max_used_connections';
如果进程过多打印下来:
mysql -e 'show full processlist;' > 111
5:查看连接状态
mysql> show status like 'Threads%';| Variable_name | Value |+-------------------+-------+| Threads_cached | 32 || Threads_connected | 10 || Threads_created | 50 || Threads_rejected | 0 || Threads_running | 1 |+-------------------+-------+
Threads_connected :这个数值指的是打开的连接数.
Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值.
Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
解决办法:
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'interactive_timeout';
set global wait_timeout=100;
SET GLOBAL interactive_timeout=100;
修改连接的等待时间,超过时间释放连接。
上面是实时修改重启数据库后失效
可在my.cnf中添加
wait_timeout=100
interactive_timeout=100
再次查看可能发现连接任然无法释放。需要重启数据库。
可能Shutdown mysqld失败。一直.............................................................................................
则重启服务器吧。【摊手】
mysql数据库无响应状态了。只能强制重启了
还可以修改最大连接数(不建议):
MySQL服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是:
Max_used_connections / max_connections * 100% ≈ 85%
临时修改
set GLOBAL max_connections=1000;
永久修改:
配置/etc/my.cnf
[mysqld]新添加一行如下参数:
max_connections=1000
show variables like 'max_connections'; 如果不是我们查看的最大1000;
这是由于mariadb有默认打开文件数限制。可以通过配置/usr/lib/systemd/system/mariadb.service来调大打开文件数目。
配置/usr/lib/systemd/system/mariadb.service
[Service]新添加两行如下参数:
LimitNOFILE=10000
LimitNPROC=10000
重新加载系统服务,并重启mariadb服务
systemctl --system daemon-reload
systemctl restart mariadb.service
MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行。Threads_created表示创建过的线程数,通过查看Threads_created就可以查看MySQL服务器的进程状态。
mysql> show global status like 'Thread%';+-------------------------+-------+| Variable_name | Value |+-------------------------+-------+| Threadpool_idle_threads | 0 || Threadpool_threads | 0 || Threads_cached | 29 || Threads_connected | 13 || Threads_created | 50 || Threads_rejected | 0 || Threads_running | 1 |+-------------------------+-------+
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器thread_cache_size的值:
mysql> show variables like 'thread_cache_size';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 100 |
+-------------------+-------+
发现 thread_cache_size 原来设置好小,这个默认值实质上也偏小,建议大的web项目,要调大这个值。
一、多大算合适 :
说实话我也不是很清楚,但是查阅了N多中文,英文资料,大部分:
1. SHOW STATUS LIKE 'threads%';
看以下几个值:
Variable_name Value
Threads_cached 0
Threads_connected 51
Threads_created 655068
Threads_running 48
可以不断刷新,如果 Threads_created 不断增大,那么当前值设置要改大,改到 Threads_connected 值左右,再结合物理内存
1G —> 8;
2G —> 16;
3G —> 32;
>3G —> 64
二个情况综合考虑一下值。
注译:
Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。
Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
Threads_created :代表从最近一次服务启动,已创建线程的数量。
Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。
二、如何修改
vi my.cnf 配置文件,[mysqld] 下 增加
thread_cache_size = 64
别忘了需mysql 重启后才生效!
命令:show processlist;
如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。
show processlist命令只列出前100条,如果想全列出请使用show full processlist;
mysql> show processlist;
命令:show status;
mysql>show status like '%变量名%';
变量名如下:
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多长时间,单位秒。
数据库连接数量过多处理办法相关推荐
- [html] 要减少DOM的数量有什么办法吗?
[html] 要减少DOM的数量有什么办法吗? 类似长列表的话可以只渲染可视区域的DOM元素(比如10个),上面用空的DIV或者padding撑开阴影效果.清除浮动等的使用伪元素操作列表等大量的DOM ...
- Java获取压缩包内文件数_使用java.util.zip.ZipFile,压缩包内文件数量过多则报错问题....
引入的jar包不对,或者你的压缩文件不标准.62616964757a686964616fe78988e69d8331333365646331一般就会报这个错误.关于上面英语的翻译:Key featur ...
- 为什么浏览器会限制ajax并行请求数量,有办法突破限制吗
1.为什么浏览器会限制 ajax 并行请求数量? 答:浏览器发出网络请求需要新开线程,而且可以发出请求的端口数量有限,从开销角度考虑不可能无限发出并发请求:此外如果浏览器不作限制,大量的请求同时发至服 ...
- 卷积层数量过多的缺点,卷积积分的被积函数
将原模型中的卷积层(卷积核为5*5)全部替换成两个3*3级联的卷积层(就像VGG模型)训练误差一直为2.3不变 用局部连接而不是全连接,同时权值共享. 局部连接的概念参考局部感受域,即某个视神经元仅考 ...
- mysql show sleep_mysq解决sleep进程过多的办法
问题分析 sleep进程过多 造成睡眠连接过多的原因? 1. 使用了太多持久连接 2. 程序中,没有及时关闭mysql连接 3. 数据库查询不够优化,过度耗时. 使用如下命令查看mysql所有进程 m ...
- 宝塔面板能打开, 但wordpress 网站不能打开,提示建立数据库连接时出错--解决办法
宝塔面板能打开,但网站不能打开解决办法.ping也能ping得通网址 清理了几个大的log文件(大概5-6G)后,重启发现网站登不了(显示建立数据库连接时出错), ssh能进去,宝塔也能打开.服务器重 ...
- 受限于弹幕池的数量,没有办法可以爬取到B站更多的弹幕呢?
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章源于Python干货铺子 ,作者:不正经的kimol君 刚接触Python的新手.小白,可 ...
- 阿里云的云虚拟主机安装dede提示数据库连接失败的解决办法
问题描述 阿里云的云虚拟主机安装dede提示数据库连接失败 问题分析 连接数据库失败,可能数据库密码不对或数据库服务器出错! 解决方案 1.通过ftp软件查看htdocs/data/common.in ...
- 解决鼠标滚轮每次滑动行数过多的办法
最近鼠标的滚轮貌似除了问题,轻轻滚一下竟然跳过十几行,很是无奈,于是通过下列办法修改完成. 电脑上打开命令行窗口,输入 main.cpl ,会出现下边的界面 然后点击红色框会出现下边的界面,然后修改需 ...
最新文章
- operator-sdk实战开发K8S CRD自定义资源对象
- linux alsa 录音程序,Linux下alsa直接录音代码
- Gradle系列(三):项目实践
- AWS Elasticsearch后模式
- 计算机视觉新范式: Transformer
- Selenium 执行JavaScript语句
- Redis 数据备份与恢复
- ef 连接localdb_如何连接和使用Microsoft SQL Server Express LocalDB
- 清空shell控制台内容_RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台
- CodeForces 173B Chamber of Secrets(最短路)
- 详解ICT及其业务领域范围
- 360壁纸图片API收录
- linux打开txt文件命令_linux系统文件及常用命令
- html颜色(背景,字体等)
- 2021李宏毅老师最新40节机器学习课程!附课件+视频资料
- diy一个android手机版下载,Notch DIY
- 如何用漏斗模型进行数据分析
- 6秒了解给kindle传书
- jquery方法之append()与appendto()
- BAT实现服务器文件同步
热门文章
- C# 发送xml报文到用友U8生成凭证系列二(基础代码)
- JAVA 地图编辑器V0.1
- 【python自动化】01.安装配置库和环境之win32gui安装失败(保姆级图文)
- Xplorer2 Pro(资源管理器) 绿色汉化修正版
- sql索引失效和优化
- tkinter.ttk — Tk themed widgets
- 马云参加阿里首次IPO路演 被指没新内容
- 急躁型人格分析,如何改变急躁性性格?
- 你BOSS还是你BOSS,BOSS直聘的营销玩法你没学会
- n918st能刷Android5吗?,中兴V5S N918ST线刷刷机教程_中兴N918ST线刷包_救砖刷机包