近日,维护一个 ror 框架搭建的网站。有时页面访问会出现 internal error(redmine 500)的错误。正常情况,刷新一下,页面就正常了,有时刷新也不行,一直处于加载状态,只能重启 apache。 报错日志显示:连接被重置
(报错报到了 ruby-mysql.gem 里面的 write 函数,显示在 sock.flush 的时候超时)
mysql 数据库不在本地,连接的是远程云数据库
数据库的 wait_timeout 值为 400s,write_timeout 为 60s vendor 文件夹 里面的连接池 size 是 5,连接池的 wait_timeout 是 5s,mysql 数据库驱动安装的是 mysql-2.8.1gem(没有用 mysql2) 造成以上原因是因为 socket 超时断掉了,链接失效,但客户端仍发起请求就报 500 了吗?可以通过修改 socket 连接机制修复吗? 我在代码里看到数据库配置有 reconnet 属性,默认为 false,我在 database.yml 里面配置,设为 true 也不行。vendor 文件夹里面 rails 的东西,ruby-mysql 也不敢改. ruby 版本是 1.8.7 的,rails 是 2.3.5,老网站,版本非常旧。
希望有大神指点迷津= =困扰好久的问题