增加对 mysql 的同时请求数量会导致 rails 网站性能下降

增加对 mysql 的同时请求数量会导致 rails 网站性能下降

最近,我们将 Rails 网站的应用服务器从 mongrel 更改为 Passenger [使用 REE 和 Rails 2.3.8]。生产设置有 6 台机器指向单个 mysql 服务器和 memcache 服务器。之前每台机器有 5 个 mongrel 实例。现在我们有 45 个 Passenger 实例,因为每台机器的 RAM 为 16GB,配有 2、4 核 CPU。一旦我们在生产中部署此 Passenger 设置,网站就会变得非常慢。所有请求都开始排队。最终我们不得不回滚。

现在我们怀疑原因应该是 Mysql 服务器的负载增加。之前只有 30 个 mysql 连接,现在有 275 个连接。mysql 服务器的设置与我们的网站机器类似。但所有配置都保留为默认限制。buffer_pool_size 只有 8 mb,尽管我们有 16GB 内存。并发线程数为 8。

与只有 30 个连接时相比,增加与 mysql 的同时连接是否会导致 mysql 响应速度变慢?如果是这样,我们如何才能在 275 个同时连接的情况下使 mysql 性能更好。

非常感谢您的任何建议。

更新:

有关mysql服务器的更多信息:

RAM:16GB CPU:两个处理器,每个处理器有 4 个核心

表是具有默认配置的 innoDB。

谢谢

答案1

我需要以下信息。

  1. myISAM 还是 InnoDB?(my.cnf 暗示 myisam,请确认)

您可能需要考虑的工具:

创新顶峰(http://code.google.com/p/innotop/)myisam_defrag(https://github.com/Oneiroi/myisam_defrag)mysqltuner(http://mysqltuner.pl/mysqltuner.pl

有些发送数据的时间超过 700 秒,您能对此进行解释吗?

EXPLAIN SELECT `reviews`.* FROM `reviews` WHERE (`reviews`.user_id IN (78707,123639,30671,31638)) AND (reviews.deleted_at IS NULL OR reviews.deleted_at > '2011-03-25 06:00:07')

临时表 == 不好!请对以下内容进行解释。

  State: Copying to tmp table
  Info: SELECT `reviews`.* FROM `reviews`  inner join users on users.id = reviews.user_id WHERE (reviews.user_id is not null and reviews.karma>0 and datediff(curdate(),reviews.created_at)<=30) AND (reviews.deleted_at IS NULL OR reviews.deleted_at > '2011-03-25 06:12:11')  ORDER BY reviews.karma desc, reviews.unhelpful_count asc, users.reviews_count desc,reviews.created_at desc LIMIT 3

相关内容