当前瓶颈分析
tps测试目前只有300,从awr报告中可以看到目前的等待事情如下:
分析:
第一个等待事件,logfile的200M太小。
第二个,第三个都是读,需要想办法把数据提前load进内存,减少物理读。
第四个是要提高离散写的性能。
第5个等待事件是因为大量的insert并发,竞争datafile的高水位锁造成的,改成分区表可以解决这个问题,但用户不让,那只能减少把并发数。
优化措施
增加logfile减少log file switch (checkpoint incomplete)
把logfile从200m增加到2g。
在addm中有这样的建议:
Increase the size of the log files to 859 M to hold at least 20 minutes of redo information.
仅此一项将tps测试值从300提高到540。
将热点数据提前load到buffer cache中,减少物理读
多run几次,buffer hit从89%提高到99%,绝大部分读在内存中进行,性能大大提高。
将logbias 属性从throughput改成latency
logbias 属性控制 ZFS 如何处理对特定数据集的同步请求。如果 logbias 设置为 latency,ZFS 将使用池的不同日志设备(如有)低延迟地处理请求。如果 logbias 设置为 throughput,ZFS 将不使用池的不同日志设备。相反,ZFS 将优化同步操作,以提高池的全局吞吐量并有效使用资源。
将logbias 属性从throughput改成latency后性能大约提高20%。
优化结果
采取以上措施优化后tps测试值从300提高到1900。