Pat*_*man 7 firebase firebase-realtime-database
我们如何加载测试Firebase实时数据库监听器性能?
Firebase实时数据库文档说我们每个数据库最多可以有100K并发用户.如果我们有100K并发用户在数据库中监听同一节点,并且该节点更新,那么100K用户会以多快的速度收到该更新的通知?(显然,只有少数用户,用户会在不到一秒的时间内得到通知,但是如果100K用户在同一节点上收听,它将如何执行?)
我们正在尝试模拟在同一路径上侦听的100K并发用户.
我们尝试过什么
尝试#1:我们尝试使用for循环来附加100K侦听器,但这些侦听器在同一个套接字上流水线操作,因此Firebase只能看到一个侦听器.有没有办法可以禁用侦听器的流水线操作?
尝试#2:根据Viget的这篇文章,我们使用节点脚本生成多个子进程,每个子进程都将一个侦听器附加到Firebase.请参阅下面的代码(来自Viget).不幸的是,这不能扩展到100K - 我们只能在每台机器上实际创建一小部分子进程(通常等于机器拥有的CPU数量).有没有办法我们可以为每台机器产生更多的子进程(使用节点或其他东西)?
const spawn = require('child_process').spawn
// How many connections to build with Firebase
const maxChildren = {# of CPUs the machine has}
// How long to keep child processes alive
const timeout = 10 * 60 * 1000 // 10 minutes
for (var i = 0; i < maxChildren; i++) {
    // your-test.js should contain your application-specific test
    var child = spawn('node', ['your-test.js', `--id=${i}`, '-- timeout=${timeout}'])
    child.stdout.on('data', (data) => {
        console.log(`stdout: ${data}`)
    });
    child.stderr.on('data', (data) => {
        console.log(`stderr: ${data}`)
    });
    child.on('close', (code) => {
        if (code !== 0) console.log(`Child ${i} process exited with an error. Code ${code}`)
    })
}
我确信Firebase的工程师必须进行一些负载测试,因为必须有100K并发连接限制的基础.有没有人深入了解他们使用的工具?
| 归档时间: | 
 | 
| 查看次数: | 915 次 | 
| 最近记录: |