【问题标题】:Rails mysql lost connectionRails mysql失去连接
【发布时间】:2015-07-28 13:13:06
【问题描述】:

我的网站有时会导致 500 错误(任何路径)
但再次刷新后,500错误消失,打开右页。

信息

Rails 4.1.4
MySQL 5.6.25
mysql2 gem 0.3.17
Rails webserver : nginx & unicorn on Ubuntu 12.10
db server : centOS 6.6

500 错误信息

ActiveRecord::StatementInvalid (Mysql2::Error: Lost connection to MySQL server during query: BEGIN)

数据库.yml

production:
  adapter: mysql2
  encoding: utf8
  pool: 20
  username: xxxx
  password: xxxx
  host: xxxx
  database: xxxx
  wait_timeout: 300 
  reconnect: true

centos 6.6 [mysqld] 设置 (/etc/my.cnf)

bind-address=0.0.0.0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET names utf8"
character-set-server = utf8
collation-server = utf8_general_ci
skip-name-resolve
wait_timeout=300
interactive_timeout=300

也许我认为mysqld设置有问题,因为这个错误是在mysql服务器移动后开始出现的。

我之前有mysql账号,不是linux服务器。所以我不需要设置mysql配置。只是使用mysql托管。但是现在我有centOS 6.6 server 使用mysql,所以我安装了mysqld并使用它。

然后上面的错误就出现了。

如何解决这个问题?

添加

  1. 将主机更改为私有 ip 和域没有任何影响。
  2. 在下面添加mysqld设置后

    general_log=ON
    log_warnings=2
    

    日志文件没有关于丢失连接的日志。

【问题讨论】:

  • 你是通过你的内部私网IP还是公网IP连接mysql?尝试使用您的内部私人 IP。
  • @NitinSatishSalunke 我已经尝试过使用域和私有 IP。但是问题还是出现了。

标签: mysql ruby-on-rails


【解决方案1】:

这可能是您的 wait_timeout 设置为 300 吗? 我不确定您的连接在返回数据库之前空闲了多长时间,但是设置为 300,MySQL 将在 5 分钟时终止任何睡眠连接。

如果不是这样,请运行SHOW VARIABLES; 这将有助于查明问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-19
    • 2010-09-16
    • 1970-01-01
    • 2021-02-06
    • 2015-09-22
    • 2015-09-20
    • 2013-05-07
    • 2023-01-23
    相关资源
    最近更新 更多