2016-12-17 25 views
0

Я оцениваю кластер Galera, и я не могу объяснить результаты тестирования.Galera в 3 раза медленнее, чем автономный с прочными настройками, высокий CPU idle

При сравнении одноузловыхGalera с standalone MariaDB 10.1.20, я заметил подозрительно большую разницу в производительности с долговечным/недлительным настройки:

  1. Galera является 3x медленнее, чем standalone, как долговечными настройками
  2. Прочный Galera в 3 раза медленнее, чем non-durable Galera

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 

Результаты:

Галера, прочный

read/write requests: 4994.74 per sec. 

Standalone, прочный

read/write requests: 16858.99 per sec. 

Галера, недлительного

read/write requests: 15938.04 per sec. 

Standalone, недлительного

read/write requests: 17055.88 per sec. 

детали сервера:

2 Cores 
8 GB RAM 
CentOS 7 
SSD 

Я повторял тесты несколько раз, даже повторно загружал каталог данных и Galera.

Некоторых наблюдения:

  • CPU idle (да, в режиме ожидания)> 50% с прочной Галерой, < 1% в других испытаниях сценариях
  • iowait> 20% с прочной Галерой, < 1% в других сценариях тестирования
+0

Похоже, я нажимаю предел IOPS. Но даже если это может быть решением, гораздо более высокое использование IOPS не представляется разумным. – amq

+0

Это признано ошибкой: https://jira.mariadb.org/browse/MDEV-11599 – amq

ответ

1

innodb_flush_log_at_trx_commit=1 замедляет InnoDB значительно (YMMV). Это не зависит от Галера. =1 берет дополнительную запись на каждые COMMIT, явный или неявный. Так достигается прочность даже при внезапном сбое питания.

=1 не требуется для Galera - если узел сработает, восстановите его.

Не доверяйте контрольной точке, чтобы судить о том, как приложение будет запущено ваше приложение.

Другие вопросы - У вас есть балансировщик нагрузки, совместно использующий записи между различными узлами? Сколько узлов? RAID? SSD? Задержка между узлами?

И, что еще более важно, вы когда-нибудь приблизитесь к 16K пишет/сек? Если нет, то в тесте не будет практически неизвестно, как работает ваше приложение.

+0

Проблема заключается в том, что 'innodb_flush_log_at_trx_commit = 1' в сочетании с' sync_binlog = 1', кажется, замедляет Galera * много * больше, чем автономный MariaDB. Все тесты выполнялись на одном узле с локального хоста. Хранение - SSD. – amq

+1

sync_binlog - еще одна вещь, которую нужно отключить в Galera. –

+0

Сравнение «valid» - [standalone with = 1 для обеих настроек] против [Galera с = 0 для обоих]. Galera будет выигрывать настойчивость (если узлы не все одновременно опускаются - поэтому не помещайте их в одно и то же место); Я не могу предсказать, на каком из них будет работать лучше (слишком много переменных). –