我的rails应用程序总是达到我在Linode的VPS设置的磁盘I / O速率的阈值。它设置为3000(我从2000年开始),每隔一小时左右,我会收到一个通知,它达到4000-5000 +。
我可以使用哪些方法来最小化磁盘IO速率?我主要使用Sphinx(Thinking Sphinx插件)和纬度和经度距离搜索。
有哪些方法可以避免?
我正在使用Rails 2.3.11和MySQL。
感谢。
答案 0 :(得分:5)
你检查过你的服务器是否正在自行处死? “顶级”说什么?
你的Linode可能只有有限的内存,很可能它会像疯了一样交换以保持运行...
如果您在IO图中看到红色,那就是交换活动!您需要将Linode升级到更多内存, 或限制正在运行的进程的数量/大小。您还应将RAM大小的大约2倍添加为交换空间(交换分区)。
答案 1 :(得分:3)
由于您的问题过于模糊而无法简洁地回答,这通常是以下几种情况之一的标志:
EXAMINE
。JOIN
查询都是必需的。robots.txt
,或者开始阻止麻烦的IP。答案 2 :(得分:0)
它是否会持续很长时间并保持高位,或者只是暂时飙升?
没有特定的方法可以避免(除了不写入磁盘)。
您可以尝试在NewRelic等制作中使用分析器,以更深入地了解您的效果。然而,探查器将突出显示需要很长时间的操作,当您检查在该操作中使用的特定算法时,您可能会发现该特定操作的效率低下。