Etcd对磁盘写入延迟非常敏感,因此对于负载较重的集群,etcd一定要使用local SSD或者高性能云盘。可以使用fio测量磁盘实际顺序 IOPS
fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file
fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file
由于etcd必须将数据持久保存到磁盘日志文件中,因此来自其他进程的磁盘活动可能会导致增加写入时间,结果导致etcd请求超时和临时leader丢失。因此可以给etcd进程更高的磁盘优先级,使etcd服务可以稳定地与这些进程一起运行
ionice -c2 -n0 -p $(pgrep etcd)
ionice -c2 -n0 -p $(pgrep etcd)