У меня есть два сервера 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
Тот факт, что вы подключаетесь один раз для каждого обновления, означает, что каждое подключение имеет небольшие накладные расходы. Такое количество обновлений складывается из большого количества подключений. Если можете, попробуйте выполнить пакетные обновления. Или, поскольку это главный / главный, просто выберите один узел и отправьте туда обновления.