之前是用 FsyncService 线程写 redolog 和刷脏页,高并发压测时受 jvm 垃圾收集线程影响,某次测试结果比正常情况慢了几10倍,现在改进了一下设计,当脏页大小超过某个阈值就启动一个新线程去刷脏页,这时高并发压测结果就平稳多了。
@zhh-4096
高并发压测发现,写 redolog 和刷脏页这两件事不能让一个线程去做,即便刷脏页只需要上百毫秒,也可能在这段时间内被高并发的事务积压了海量 redolog,虽然不阻塞读写事务,但是会导致 jvm 垃圾收集线程疯狂干活,挤占 cpu 时间,从而影响执行读写事务的所有线程,最终会拖慢整个数据库。
