如何对 PouchDB 进行压力测试
How to stress test PouchDB
我们正在考虑使用CouchDB和PouchDB堆栈,我们希望对CouchDB进行压力测试,因为我们的一个用例可以同时复制多达70-80个用户。
我们设法对CouchDB进行了压力测试,并对结果感到满意,但我们想从PouchDB进行一些端到端的压力测试。
我尝试了几件事:
1) 使用 PhantomJS 脚本在 for 循环中启动许多页面2)使用PhantomJS脚本,该脚本具有Github上的某种并行函数3)使用bash脚本和&启动多个phantomJS。4)使用bash脚本和GNU Parallel启动PhantomJS的多个实例* 上面的所有测试都使用 waitFor 函数,仅在全局变量设置为 true 时才完成(我能想到的唯一方法是等待页面中的所有 JS 执行)
虽然一个 phantomJS 执行大约需要 200-300 毫秒,但当运行多个时,它们似乎以某种方式排队,并且我们得到 ~30 次执行中最后一次从 200 毫秒到 30,000 毫秒的数字。
看起来 PhantomJS 以某种方式排队。正如我所看到的每个后续请求的 n*200ms 的稳定进展。
我可能会在 2-3 台设备上构建一个演示应用程序并循环 PUT 和 Replica,但我想尝试以类似于 Siege 可以对具有多个资产的页面进行压力测试的方式编写脚本。只是,我希望它"等待",直到页面真正完成并且所有 JS 都已完成运行。
知道我该怎么做吗?
听起来您正在尝试通过模拟您希望从用户那里收到的负载来对整个系统进行压力测试,即您没有尝试测试浏览器性能本身。(如果不是这种情况,并且您正在尝试在浏览器中进行测试,那么我们已经在 PouchDB 中进行了一些浏览器性能测试,尽管您会从 PhantomJS 获得错误的数字,因为它是一个旧浏览器。
由于 PouchDB 是同构的,我建议避免使用 PhantomJS,而只是在 LevelDB 上运行一些 Node.js 进程来模拟您的用户。PhantomJS可能确实存在一些排队问题,因为底层数据存储是WebSQL,它具有全局写锁定。但是,使用 Node,您可以拥有单独的进程,每个进程代表一个线程;你只需要确保每个都有一个单独的LevelDB,因为LevelDB不是线程安全的(例如 new PouchDB('/tmp/some/random/directory')
)。
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 测试数组中每个项的内容
- 测试Angular Service解决错误回调中的promise
- 使用Jest测试React Native应用程序
- 为函数代码编写测试
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用JS/nightwatchjs并行运行多个测试
- 使用量角器的当前url单元测试的getTitle
- 茉莉花宝石-耙茉莉花:ci dons't运行测试
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- AngularJS指令单元测试中未定义的函数
- 如何对 PouchDB 进行压力测试
- 需要一些专注于ReactJS压力测试的例子
- 负载/压力测试
- 如何测试需要服务器的javascript(PouchDB)
- NodeJs 压力测试工具/方法
- Node.js服务器压力测试