我正在评估galera群集,我无法解释自己的测试结果。
当比较单节点 Galera
与standalone MariaDB 10.1.20
时,我注意到耐用/不耐用设置可疑的性能差异很大:
-
Galera
的速度比standalone
慢3倍,均具有耐用设置 - 耐用的
Galera
比non-durable Galera
慢3倍
config:
[mysqld]
# durable
sync_binlog=1
innodb_flush_log_at_trx_commit=1
# non-durable
# sync_binlog=0
# innodb_flush_log_at_trx_commit=2
max_connections=2000
query_cache_type=0
query_cache_size=0
log_bin=1
binlog_format=ROW
log_slave_updates=1
innodb_flush_method=O_DIRECT
innodb_buffer_pool_size=4000M
innodb_buffer_pool_instances=4
innodb_log_buffer_size=64M
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
innodb-autoinc-lock-mode=2
wsrep_cluster_name=galera
wsrep_node_address=node1
wsrep_node_name=node1
wsrep_cluster_address=gcomm://
wsrep_sst_method=rsync
wsrep_slave_threads=8
基准:sysbench 0.5
sysbench
--test=/usr/share/doc/sysbench/tests/db/oltp.lua
--mysql-host=localhost
--mysql-user=root
--oltp-table-size=1000000
--num-threads=128
--max-requests=0
--max-time=60 run
结果:
galera,耐用
read/write requests: 4994.74 per sec.
独立,耐用
read/write requests: 16858.99 per sec.
galera,不耐用
read/write requests: 15938.04 per sec.
独立的,不持续的
read/write requests: 17055.88 per sec.
服务器详细信息:
2 Cores
8 GB RAM
CentOS 7
SSD
我已经多次重复测试,甚至重新启动数据目录和galera。
一些观察:
-
CPU idle
(是的,空闲)>耐用的galera,< 1%在其他测试中方案 -
iowait
>耐用的Galera的20%,在其他测试中1%方案
innodb_flush_log_at_trx_commit=1
大大减慢了innodb(ymmv)。这与Galera无关。=1
在每个COMMIT
,明确或隐式上都会产生额外的写入。即使面对突然的电源故障,它也是它达到耐用性的方式。
=1
不是Galera的必要条件 - 如果节点崩溃,请重建。
不要相信您的应用程序如何运行的基准。
其他问题 - 您是否有负载平衡器在各个节点之间共享写作?几个节点?袭击?SSD?节点之间的延迟?
,更重要的是,您是否会接近16K写入/秒?如果不是,那么基准几乎没有任何线索,即您的您的应用程序将运行。