Назад | Перейти на главную страницу

HAproxy с MySQL Master-Master Replication невероятно медленный

У меня есть два сервера MySQL в режиме с несколькими мастерами с машиной HAproxy для простой балансировки нагрузки / избыточности. Когда я подключаюсь к одному из серверов напрямую и пытаюсь обновить около 100 000 записей, процесс завершается, включая репликацию, примерно за полминуты. При подключении через прокси это обычно занимает более трех минут. Такая задержка - это нормально? Что-то не так с моей конфигурацией прокси (см. Ниже)? Это действительно расстраивает, поскольку я предполагал, что прокси будет выполнять какую-то балансировку нагрузки или, по крайней мере, иметь небольшие накладные расходы или вообще не иметь их.

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events.  This is done
#    by adding the '-r' option to the SYSLOGD_OPTIONS in
#    /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
#   file. A line like the following can be added to
#   /etc/sysconfig/syslog
#
#    local2.*                       /var/log/haproxy.log
#
log         127.0.0.1 local2

#    chroot      /var/lib/haproxy
#    pidfile     /var/run/haproxy.pid
maxconn     4096
user        haproxy
group       haproxy
daemon
#debug
#quiet


# turn on stats unix socket
stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode                    tcp
log                     global
#option                  tcplog
option                  dontlognull
option                  tcp-smart-accept
option                  tcp-smart-connect
#option http-server-close
#option forwardfor       except 127.0.0.0/8
#option                  redispatch
retries                 3
#timeout http-request    10s
#timeout queue           1m
timeout connect         400
timeout client          500
timeout server          300
#timeout http-keep-alive 10s
#timeout check           10s
maxconn                 2000

listen mysql-cluster 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option tcpka
    option httpchk

server db01 192.168.15.118:3306 weight 1 inter 1s rise 1 fall 1
server db02 192.168.15.119:3306 weight 1 inter 1s rise 1 fall 1

Тот факт, что вы подключаетесь один раз для каждого обновления, означает, что каждое подключение имеет небольшие накладные расходы. Такое количество обновлений складывается из большого количества подключений. Если можете, попробуйте выполнить пакетные обновления. Или, поскольку это главный / главный, просто выберите один узел и отправьте туда обновления.