版本:V5.4
现象:执行一条SQL语句时,服务器内存耗光
服务配置中限制了内存的,单条SQL30G,总共50G,但是没起作用
如何才能限制住?防止一条不恰当的大SQL把服务器打爆?
另外,这条SQL出问题之后,使用如下语句找到会话杀掉了:
show processlist
kill tidb xx
但是服务器内存好像很缓慢的才能释放出来,好像是还有片段在运行:
有什么办法能够干净的终止这个查询并且立刻释放内存?
只能立即中止查询, 内存要等到 GC 之后才会释放…
好吧,谢谢
有专家能给指导下内存控制的问题吗?
我期望最起码能做到控制tidb进程的总内存,不要把服务器内存吃光
现在控不住,服务器经常挂掉
试试resouce_control参数控制内存
非常感谢指点,这样确实可以控制住总内存了。碰到大查询,tidb服务触线崩掉,没有把服务器搞死,这样tidb本身能很快重启起来:
能不能再指点一下,怎么才能控住单条query的内存呢?
我按照文档设了单条query的内存上限是30G,没起作用,这条sql用了50G内存把tidb打死了:
学习了 !!
目前单条SQL只有这个一个参数,tidb确实存在这问题,也不太清楚具体memory计算的是那部分,我曾经有SQL有text字段导致200多G内存被吃光后才oom
防止一条不恰当的大SQL把服务器打爆? 别的不好说,这个就是要做上线前的SQL审核。这个不仅仅针对tidb,是个数据库都要做这个工作。
还是可以检查下配置