如何使用真实数据库对 Rails 应用程序进行性能/基准测试?

发布于 2024-08-28 08:55:22 字数 115 浏览 9 评论 0原文

我想对 Rails 应用程序进行性能测试。

现实世界的数据大小为 100 MB。

但 Rails 总是重建测试数据库,这会覆盖现实世界的数据。

那么如何进行性能测试呢?

I would like to performance testing a Rails app.

The real world data is 100 MB in size.

But Rails always rebuilds the test database, which overwrites the real world data.

So how to the performance testing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兔姬 2024-09-04 08:55:22

我会创建一个称为“性能”的新环境。您需要它来复制应用程序的生产设置(类缓存、模板等),然后加载数据库。过去,我专门创建了一个用于性能测试的数据库,创建了一个 rake 任务来执行必要的迁移/加载,然后调用 Rails 性能脚本。

您还可以在测试中关闭固定装置行为 - 取决于您使用的测试框架。

我还在 Running Rails 上发现了这篇有用的文章对真实数据进行性能测试,其中包含有关此方法的一些详细信息。

I would create a new environment called "performance". You need this to replicate the production settings of your app (class caching, templates etc) and then load the database. In the past I have created a DB specifically for performance testing, created a rake task that executes the necessary migrations/loading and then called the rails performance script.

You can also turn the fixture behaviour off in your tests - depends on which test framework you are using.

I also found this useful post on Running Rails performance tests on real data that has some details on this approach.

甩你一脸翔 2024-09-04 08:55:22

我为 SQLite 用户提供了一个快速修复方法。

在测试用例中

def setup
  `cp db/development.sqlite3 db/test.sqlite3`
end

I have a quick fix for SQLite users.

In TestCase

def setup
  `cp db/development.sqlite3 db/test.sqlite3`
end
拧巴小姐 2024-09-04 08:55:22

我会将应用程序部署到临时服务器(靠近您的生产环境)。并在数据库中生成数据以进行更准确的测试。您可以查看用于生成虚假数据的 ffaker gem。
然后使用第三方工具来访问您的应用程序。因为您在服务器本身上运行的工具也会影响性能。我更喜欢 Jmeter 作为负载测试工具。
您可以创建测试用例。

例如,您想测试您的登录页面。您可以设置登录参数并发布到登录网址。您可以考虑对对数据库进行写操作的页面进行测试。这些可能会成为您应用程序的瓶颈。

JMeter 用户手册

Jmeter 教程

希望这会有所帮助。

I would deploy the app to a staging server (which is close to your production environment). And generate data in your database for more accurate testing. You can take a look at ffaker gem for generating fake data.
Then use a 3rd party tool to hit your application. Cause tools that you run on server itself will affect the performance as well. I prefer Jmeter as load testing tool.
You can create test cases.

For example you want to test your login page. You can set login parameters and post to login url. You would consider doing tests for the pages which have write operations to your database. Those probably will be your app' bottleneck.

JMeter User Manual

Jmeter Tutorial

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文