这是一个创建于 2499 天前的主题,其中的信息可能已经有所发展或是发生改变。
一个小网站,用的是 go+boltdb,运行在 256M 的$2.5 vps 上,后台做 profile,经常某些数据库操作会阻塞(正常操作~0.1ms,阻塞等待一般都在 60s 以上),整个系统卡死,进程 disk sleep,cpu 0%,load average 二三十
考虑到内存太小,估计就卡在了 mmap 到磁盘的交换上了,于是换 512M 试了试,情况好很多(~99%的时间流畅),换到了 1G,表现更好(~99.9%),但依然会有 disk sleep,于是咬牙换了 2G。
连续运行十几天一切完美,总体响应时间<1ms,本以为找到了一个软硬件 sweet point,今天又密集地出现了一波 disk sleep,有些请求甚至等待超过 200s。
所以说到底怎么排查 disk sleep 的原因,难道只能向上堆硬件来解决 0.01%的问题吗。。。。