【问题标题】:MySQL Server has gone away Error constantly appearing with haProxyMySQL 服务器已消失 haProxy 不断出现错误
【发布时间】:2016-10-16 23:32:18
【问题描述】:

我经常收到此消息。 到目前为止,我查看了几个解决方案,但没有找到任何解决此问题的方法。 但首先这是我的设置:

我使用 PHP7 环境,出于可扩展性原因,该环境被分成不同的元素。

1 NGINX 网络服务器
使用 PHP7-FPM 和 haproxy 和 memcache 的 2-n 应用程序服务器
已配置库集群的 2-n 数据库服务器
1 个带有 PHP7-CLI 和 haproxy 的作业服务器
1 用于应用程序分发 (nfs) 和系统维护的登录服务器

登录服务器也是开发者的主要登录方式

我的问题是,我偶尔会收到以下消息:

警告:PDOStatement::execute(): MySQL 服务器已消失

在任一应用服务器上重新启动 haproxy 后,它再次工作 3-10 页面视图。 但之后我再次收到相同的消息。

请帮我找出我的错误。

这是我的 haproxy 配置:

global
    log 127.0.0.1 local0 notice
    user haproxy
    group haproxy

defaults
    log global
    retries 2
    timeout connect 10000
    timeout server 10000
    timeout client 10000


listen mysql-cluster
    log global
    timeout connect 10000
    timeout server 10000
    timeout client 10000
    bind 127.0.0.1:3306
    mode tcp
    option mysql-check user proxy
    balance roundrobin
    server db1  1.1.1.1:3306 check
    server db2  1.1.1.2:3306 check

【问题讨论】:

标签: php symfony gallery haproxy mysql-cluster


【解决方案1】:

经过一段时间的研究和测试,我找到了问题的核心原因。

首先,代理用户的权限没有反映到第二台服务器上。 我在写入功能方面遇到了一些问题。 所以我在端口 3307 上添加了另一个连接,负责写入。 为了保持集群理念,我将主数据库设置在连接一上,如果其他数据库失败,我将其他数据库设置为备份。

我根据文章设置一切

http://severalnines.com/tutorials/mysql-load-balancing-haproxy-tutorial

感谢看到这篇文章时给我打电话的人的帮助:)

【讨论】:

  • 什么?您的意思是根据您共享的链接通过 HAProxy 设置读/写拆分吗?还是……别的什么?
  • 我有一个多主多服务器设置。所以在一台主机上(通过虚拟机)我有一个主机和一个从机运行。主人与其他人同步。为了进行一些负载平衡,我使用了 ha 代理,它知道其他主人和他们的负载。 ha 代理具有开放的端口 3306 和 3307(3306 用于只读从属连接)(3307 用于写操作)。所以 symfony 应用程序本身有两台服务器,它可以看到。端口 3306 和 3307 上的 haproxy。Symfony 不需要做任何负载平衡。一切都是通过haproxy完成的
【解决方案2】:

只需调整您的超时设置

服务器超时 10m 客户端超时 10m

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-28
    • 2011-12-18
    • 2011-10-12
    • 2013-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多