暂无图片
因为前后两个链接经过F5负载,无法发到一台MySQL代理,导致SQL没法控制超时。这个问题怎么解决?
我来答
分享
暂无图片 匿名用户
因为前后两个链接经过F5负载,无法发到一台MySQL代理,导致SQL没法控制超时。这个问题怎么解决?

F5对几个MySQL代理负载均衡,当SQL超时的时候,JDBC驱动会创建新链接执行kill query杀死超时SQL。

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
cqiwen

原理:mysql每次建立一个socket连接(connect)时,这个socket都会占用一定内存。即使你关闭(close)连接时,并不是真正的关闭,而是处于睡眠(sleep)状态。当你下次再进行连接时,就可以快速启动当前处于睡眠状态的socket。

但由于使用了负载均衡器,jdbc处理超时,导致重新建立的连接并不一定会继续发往同一个后端mysql服务器。这样就无法自动kill 超时query。

像这种情况,解决方法有两个:一是直接在F5上做设置,当其第一次连接确定后,以后这个IP的连接只转发到第一次连接的后端服务器上(最好的方法,但会影响负载均衡效果);二是在mysql端做处理,比如设置如下参数:

在mysql的配置文件中修改my.cnf

添加如下的设置:

[mysqld]

wait_timeout = 100

interactive_timeout = 100

然后重启mysql服务,更改就会生效。

注:这个参数的含义:

wait_timeout:mysql服务器关闭非交互式连接之前等待活动的秒数

interactive_timeout:mysql服务器关闭交互式连接之前等待活动的秒数


以上参数需要进行实际业务测试,否则可能产生其它新问题。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
MYSQL 如何看出执行计划里面 依赖子查询的执行次数?
回答 1
已采纳
如果是嵌套的话,子查询查出多少就是循环多少次
mysql支持手动checkpoint吗?
回答 2
FLUSHNOWRITETOBINLOGENGINELOGS;上面那个命令有类似的作用
mysql有没有类似ora的dcd功能?
回答 1
MySQL没有类似Oracle的DCD(Dead  Connection  Detection)功能。但是,MySQL有自己的机制来处理死连接。MySQL服务器
如何下载mysql的历史版本?
回答 1
已采纳
https://downloads.mysql.com/archives/community/
mysql中超长行的存储问题(pg toast对应的)
回答 1
mysql中,varchar,blob/text等1页存储不下的时候,行内就存储20字节关键信息,真实数据就放到溢出页(overflowpages).参考:https://www.modb.pro/d
InnoDB显示不能执行操作,是空间不够吗?
回答 1
已采纳
undo表空间的数据文件损坏了。
MySQL 服务器老是无故没有响应 , 但只要重启就好了,如何解决?
回答 2
已采纳
这日志中没看到什么问题。出故障时,查下mysql的连接数、linux的连接数、内存占用和cpu占用情况。
mysql 使用乐观锁更新和悲观锁更新有什么区别呢? update 时不是都会上锁嘛?
回答 1
已采纳
悲观锁是一上来就假设有人在操作,先锁定。乐观锁是一上来不锁,认为没人在操作,只要在提交时候才去检查有没有。
MySQL里change buffer的作用?
回答 5
已采纳
A主键更新的时候也进行也会使用changebuffer提升速度Insert语句B唯一建更新的时候,是通过changebuffer提升效率C如数据变更mysql里都是通过changebuffer进行数据
主从手动切换如何进行?
回答 1
B上resetslaveall清空的是B上的中继日志,这个中继日志是从A同步过来的,一般同步完会自动删掉的在A上changemastertohost'B',然后再开启同步就可以从B上拉取日志了
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~