最近遇到ZooKeeper讀寫性能抖動比較厲害。從ZooKeeper的日志中分析,有大量報“fsync-ing the write ahead log in XXX took xx ms which will adversely effect operation latency.”。也就是說,寫硬盤的速度太慢了。由于ZooKeeper默認(rèn)情況是需要確保數(shù)據(jù)下盤的,所以相當(dāng)于調(diào)用了sync,猜測這是一個比較費時的操作。如果ZooKeeper的數(shù)據(jù)目錄所在的硬盤和其它服務(wù)共用的話,可能會互相干擾。
那么ZooKeeper的寫性能會影響讀嗎?很遺憾,會的。當(dāng)ZooKeeper遇到寫操作時,會將后續(xù)的操作都掛起,等到該寫操作完成后,才會繼續(xù)執(zhí)行后面的任意操作。
所以說,盡量把ZooKeeper所使用的硬盤和其它的服務(wù)分開。