spin_lock

2021-03-31  本文已影响0人  葛一娜

当性能测试出现下降,使用perf top监控,出现mt_spin_lock_wait超过5%

出现spin_lock的有几种情况。

1、rootdbs大小不合理

在运行过程中使用onstat -d,检查各个空间的使用情况,显示rootdbs剩余空间很少。

修改onconfig文件,rootdbs大小,从3000000修改为30000000。

重新测试,再没出现。

2、锁争抢

如果rootdbs空间还有很多剩余,使用onstat -g ath,如果出现大量的lock wait。

说明锁太少,一个锁占用120字节内存。再内存允许的情况下,加大locks数。

3、索引分片不合理

onstat -g ath

多刷新几次,看到是哪个锁,例如:pt_20004e

将20004e 16进制转换为10进制:2097230

oncheck -pt benchmarksql >a.txt

去a.txt中找2097230对应的索引:138_134

echo "select * from sysindexes"| dbaccess -e

benchmarksql - >b.txt

从b文件中找到 138_134对应的tabid:138

select * from systables where tabid=138;

找到对应的表,然后检查这个表对应的表结果和索引分片是否合理

查看spin_lock哪个占用最多

onstat -g spi|head -n 1000|sort -rnk 1|less

上一篇下一篇

猜你喜欢

热点阅读