我在生产中遇到了一个特殊的一致性问题。我正在运行rails3 + nginx,使用最新的datamapper和ruby-enterprise
每次部署一个新版本(触摸重启.txt),我得到一堆错误(发生在不同的请求),就在部署发生后。错误并不总是相同的:
-
DataObjects::SQLError: Lost connection to MySQL server during query
-
ArgumentError: Field-count mismatch。期望有1个字段,但是查询产生了10个
-
ArgumentError: Field-count mismatch。预期有10个字段,但查询结果为1
-
DataObjects::SQLError: Lost connection to MySQL server during query
我正在运行另一个rails应用程序(2.3+apache+ruby-ent)与活动记录,我从来没有在重启时出现任何问题
有没有人对为什么会发生这种情况以及如何摆脱它有一些建议?
谢谢安德斯
当你执行sudo kill -HUP nginx_pid时,你会得到相同的错误吗?(执行sudo ps aux|grep nginx命令获取pid)
你得到的确实是一组非常奇怪的错误。当您重新启动时,可能仍然有一个会话打开到您的数据库,从而导致数据库池出现问题?Rails数据库访问通常是间歇性的,但我可以想象,如果您有一个长时间运行的数据库查询,并试图重新启动Rails,会发生问题。
错误不断变化的事实使我相信错误与资源访问有关,而不是您的配置问题。