2011-10-07 136 views
2

我的Rails应用程序总是达到我的VPS在Linode设置的磁盘I/O速率的阈值。它设置为3000(我从2000年起),每隔大约一小时我会收到一个通知,它达到4000-5000 +。高磁盘IO速率

我可以使用哪些方法来最小化磁盘IO速率?我主要使用狮身人面像(思维狮身人面像插件)和纬度和经度距离搜索。

有什么方法可以避免?

我正在使用Rails 2.3.11和MySQL。

谢谢。

回答

3

因为你的问题不明确,简明地回答,这是一般的几件事情之一的标志:

  • 你的数据集是因为你可以修剪历史数据的太大。删除不再相关的内容。
  • 您的表格没有正确编制索引,您正在进行大量表格扫描。请在每个慢速查询中与EXAMINE进行核对。
  • 您的数据结构没有针对您使用它的方式进行优化,而且您正在进行太多连接。一些战术去规范化将在这里帮助。确保你所有的JOIN查询是绝对必要的。
  • 您正在检索的数据超出了服务该请求所需的数据量。令人遗憾的是,在显示用户名称列表时,人们从用户表中加载巨大的TEXT或BLOB列太常见了。只加载你需要的东西。
  • 你正在被某种自动化的刮板机或蜘蛛机器人击中,它一页接一页地系统地下载整个网站。如果这是一个问题,您可能需要更改您的robots.txt,或者开始阻止麻烦的IP。
0

它是高位高位持续很长一段时间,还是只是暂时尖峰?

有没有特定的方法可以避免(除非写入磁盘)。

您可以尝试在生产中使用类似NewRelic的分析器,以更深入地了解您的表现。分析器将突出显示需要很长时间的操作,然而,当您检查您在该操作中使用的特定算法时,您可能会发现该特定操作的低效率。

5

你是否检查你的服务器是否交换了自己的死亡? “顶”是什么意思?

你的Linode可能只有有限的RAM,这可能是非常有可能,它是交换像疯了似的让一切运行..

如果在IO图中看到,那就是交换活动!您需要将您的Linode升级到更多RAM, 或限制正在运行的进程的数量/大小。你还应该添加大约2倍的RAM大小作为交换空间(交换分区)。

http://tinypic.com/view.php?pic=2s0b8t2&s=7