【发布时间】:2011-07-16 02:46:42
【问题描述】:
最近,我开始在高流量时收到 mySQL“连接过多”错误。我的 rails 应用程序在一个共享主机上有 2 个实例的 mongrel 集群上运行。最近的一些变化可能会推动它:
- 我网站的流量增加了。一世 我现在平均大约 4K 页 天。
- 数据库大小已增加。我最大的表有 ~ 100K 行。 一些协会可能会返回 数百个实例 最坏的情况,尽管大多数情况要少得多。
- 我添加了一些功能 增加了数量和规模 在某些操作中调用数据库。
我进行了代码审查,以减少数据库调用、优化 SQL 查询、添加缺失的索引以及使用 :include 进行预加载。但是,我的许多方法仍然会进行 5-10 次单独的 SQL 调用。我的大多数动作的响应时间约为 100 毫秒,但我最常见的动作之一平均为 300-400 毫秒,有些动作随机峰值超过 1000 毫秒。
日志没有什么帮助,因为错误似乎是随机发生的,或者至少该模式似乎与调用的操作或访问的数据无关。
我可以通过添加额外的 mongrel 实例来缓解错误吗?还是 mySQL 连接受服务器限制,因此与我划分流量的进程数无关?
这很可能是我的编码问题,还是我应该向主机施压以增加共享服务器的容量/减少负载?
【问题讨论】:
标签: mysql ruby-on-rails mongrel-cluster