我使用我创建的galera设置获得了令人无法接受的低性能。在我的设置中,有2个节点处于主动 - 主动状态,我正在使用HA代理负载平衡器以循环方式在两个节点上进行读/写。
使用以下配置的单个mariadb服务器,我很容易在我的应用程序上获得超过10000 TPS: 36个vpcu,60 GB RAM,SSD,10Gig专用管道
使用galera我很难得到3500 TPS,虽然我使用ha-proxy平衡的数据库负载的2个节点(36vcpu,60 GB RAM)。有关信息,ha-proxy作为独立节点托管在不同的服务器上。我已经删除了ha-proxy,但是性能没有任何改善。
有人可以在my.cnf中建议一些调整参数我应该考虑调整这个严重不佳的设置。
我正在使用下面的my.cnf文件:
答案 0 :(得分:2)
我很容易在我的应用程序上获得超过10000 TPS 具有以下配置的单mariadb服务器:36 vpcu,60 GB RAM,SSD,10Gig专用管道
使用galera我很难获得3500 TPS,尽管我使用的是2 数据库负载的节点(36vcpu,60 GB RAM)由ha-proxy平衡。
基于Galera的集群不是为了扩展写入而设计的,因为我认为你打算这样做;事实上,正如Rick所提到的:为同一个表发送写入多个节点的最终会导致认证冲突,这些冲突将反映为应用程序的死锁,从而增加了巨大的开销。
我使用galera设置获得了令人无法接受的低性能i 创建。在我的设置中,有2个节点处于主动 - 主动,我正在做 使用HA代理以循环方式在两个节点上进行读/写 负载均衡器。
请将所有写入发送到单个节点,看看是否提高了性能;由于Galera使用的虚拟同步复制的性质,总会有一些开销,这实际上为您执行的每次写入增加了网络开销(虽然真正的基于时钟的并行复制将抵消这种影响相当多,但您仍然必然会看到吞吐量略低一些。)
当你完成一个原子工作单元时,也要确保你的事务保持简短和COMMIT,因为复制认证过程是单线程的,并且会在其他节点上停止写入(如果你看到你的编写器) node显示事务wsrep pre-commit阶段,这意味着其他节点正在为大型事务进行认证,或者该节点遇到某些类型的性能问题 - 磁盘,全磁盘,滥用大量读取等。
希望有所帮助,并告诉我们当你转移到单个节点时它会如何发展。
答案 1 :(得分:0)
关闭质量控制:
query_cache_size = 0 -- not 22 bytes
query_cache_type = OFF -- QC is incompatible with Galera
增加innodb_io_capacity
两个节点相隔多远(ping时间)?
建议你假装它是Master-Slave。也就是说,让HAProxy将所有流量发送到一个节点,而将另一个流量作为热备份。在这种模式下,某些东西可以跑得更快;我不知道你的应用程序。