0

希望这里有人可以给我一些指示。我们有一个 Rails 应用程序,跨 5 个 ruby​​ 实例水平扩展,指向一个 MySQL 数据库。我们对此应用程序发出的 POST 请求通常在 600 毫秒范围内返回。但是,有时这些请求会运行很长时间,例如 50 多秒。ruby 代码中似乎没有发生任何不寻常的事情。这是否意味着我们需要扩展我们的 MySQL 实例?据我所知,我们并没有那么努力,当然不是每秒 20k+ 请求,我认为这是它可以处理的。将不胜感激任何关于从哪里开始寻找的指针。我们也开始使用 NewRelic 分析我们的应用程序。

Started POST "/api/something" for *** at 2012-07-16 19:00:19 +0000
  Processing by SomethingController#create as JSON
  Parameters: {}
Completed 200 OK in 59542ms (Views: 1.8ms | ActiveRecord: 59265.2ms)
4

1 回答 1

0

1.) 查看在params应用程序生成 59 秒数据库查询之前发送的哈希。将其与其他参数进行比较,并寻找可能导致麻烦的差异。

2.) 从记录服务器处理的所有查询mysqld--log=/path/to/log.log选项开始,并查看需要这么长时间的查询。

3.) 检查是否所有外键都有索引。默认情况下,Rails 不会为外键列添加索引。这是一些 Rails 开发人员忽略的普遍问题。当您有一些没有索引的外键时,通过迁移为它们添加索引。

于 2012-07-16T23:20:20.453 回答