Neo
老东家的技术大佬,必须强烈支持👍👍👍
作者回复:感谢支持🤝🤝
2024-08-22
1
Geek_0126
思考题这种报错确实经常遇到,开发说是数据库问题,DBA说是程序配置问题,一般都是建议排查程序连接池及重启应用,期待老师的回答。
作者回复:1. 首先确认连接的空闲超时时间,8.0可以这么查:select * from performance_schema.variables_by_thread where variable_name = 'wait_timeout'。老一点的版本可以通过应用程序执行show variables where variable_name in ('wait_timeout')来确认。
2. 确认报错时,离这个连接中的上一个请求过了多少时间。jdbc报错信息中就提供了这个时间。有时程序刚启动没多久就报连接断开,那么要查看数据库或者应用到数据库之间的网络链路有没有异常。
3. 通过show processlist观察command为Sleep的连接,时间是多少。
4. 还可以执行一些耗时比较长的SQL,看看是否能正常执行。比如select sleep(901); 有一个案例中,应用通过代理访问数据库,代理的超时时间是900秒,因此 select sleep(901)无法执行完成。
5. 如果使用了连接池,要确认连接池的一些参数是否生效。比如配置了Keepalive,那么要看看是不是在设置的间隔时间里确实发送了keepalive的SQL。
2024-08-23
3
kalid
受用,催更😄
作者回复:课程持续更新中:)
2024-08-23
vivitele
老师,OS的一些配置会影响到 MySQL 的性能和稳定性,但官方文档上好像没有关于这方面的详细说明。关于OS的设置,老师有什么建议吗?
作者回复:OS的参数设置是一个比较复杂的话题。简单来说,有几点:
1、选择新一点的内核版本。新的版本理论上会有更好的默认设置,更适合新的硬件架构。
2、内核参数方面,一般要注意网络协议栈、VM系统、文件系统、IO系统等几个模块的参数。
下面这些参数只是一个大致的建议。需要理解这些参数的作用,并根据情况来调整。
vm.min_free_kbytes 物理内存的5%
vm.swappiness 0
net.core.rmem_default 256K
net.core.rmem_max 4M
net.core.wmem_default 256K
net.core.wmem_max 4M
net.ipv4.tcp_rmem = 4k(min) 256K(default) 4M(max)
net.ipv4.tcp_wmem = 4k(min) 256K(default) 4M(max)
net.ipv4.tcp_tw_reuse 0
net.ipv4.tcp_tw_recycle(如有) 0
fs.aio-max-nr 100万
fs.file-max 100万
3、文件系统,用得比较多的文件系统包括ext4, xfs。
mount参数可以考虑设置 noatime,nodiratime,no-barriar
4、IO调度器,一般建议设置为deadline,SSD也可以考虑用noop
5、资源限制,
max open files 100万
max user processes 不限制
2024-09-02
1
cheriston
老师的干货多多,多多学习
作者回复:感谢支持。后续的内容更精彩:)
2024-08-19
看过的人还看了











