0

我在本地和 DotCloud 上设置了 Rails 3.2.12 应用程序。我看到 Dotcloud 上的 ActiveRecord (postgres) 性能非常缓慢,无法弄清楚原因:

页面加载 Macbook Air(开发模式下的 Rails 应用):

Completed 200 OK in 617ms (Views: 361.3ms | ActiveRecord: 39.1ms)

页面加载DotCloud(生产模式下的rails应用程序,相同的数据库和页面):

Completed 200 OK in 796ms (Views: 315.3ms | ActiveRecord: 329.4ms)

这不是一个不稳定的时间,而是所有页面加载的标准性能增量。我的数据库只有 16MB,所以不大。postgres 服务上的内存分配是足够的(128MB),只使用了 30MB。我检查了我的本地 postgres.conf 设置是默认的,未调整的 postgresql.app 设置。

这种糟糕的性能只是云中的预期吗?是网络服务器和数据库服务器之间的网络延迟吗?

非常感谢有关如何调试和修复此问题的想法!

4

1 回答 1

1

作为一名dotCloud员工,我必须告诉您,如果您想彻底查看您的应用程序以了解它为什么没有达到您的预期,您必须提交支持票。我还应该告诉您,如果您处于沙盒模式,与处于其中一个付费层(例如 Live 或 Enterprise)相比,您可能会期望性能较低。

然而,作为一名开发人员,我可以快速指出本地开发环境和dotCloud环境之间的两个主要区别。

  1. 您的开发环境在同一主机上运行您的 DBMS (PostgreSQL) 和 Rails 应用程序,从而消除了由往返数据库引起的任何明显延迟。使用 dotCloud,它们可能位于不同的主机上,甚至可能位于不同的数据中心中。

  2. 您的开发环境可能使用固态驱动器 (SSD)(取决于您的 MacBook Air 的使用年限),而您刚刚迁移到 EBS(Amazon Elastic Block Store),这是一种网络附加存储(在硬盘驱动器上)。

在这两个变化之间,我对响应时间的增加并不完全感到震惊,但我的好奇心被你的 ActiveRecord 时间增加了 290 毫秒而你的整体响应时间只增加了 180 毫秒所激起。

我不想推测您的响应时间在哪里消耗,所以我再次建议您尽快在 support.dotcloud.com 提交支持票,以便我们仔细查看。如果你这样做了,请提及我的名字或这个 StackOverflow 线程,并包含你的应用程序的 URL。

于 2013-03-07T04:59:46.250 回答