其他 Ruby China 有没有监控 Faye 并发连接数?

daqing · 2012年09月11日 · 最后由 daqing 回复于 2012年09月12日 · 4639 次阅读

最近用 Faye 做了一个实时刷新的应用,不太清楚 Faye 最大能支持的并发数是多少。

在本地做测试的时候,并发数达到~1200 时,Faye Server 就无法接受新连接了。

我用的是 Node.js 版本:

node: v0.8.6
faye: 0.8.3

不知道 Ruby China 这边,相关的数字是多少,能否做个参考?

还没有,你是怎么看的?我现在只是用一个 Thin 进程来跑的,等换成 Haproxy 就能一下看到数量了

#1 楼 @huacnlee 我是用 Faye 监控 API 自己写的:http://faye.jcoglan.com/node/monitoring.html



var faye = require('faye');

process.on('uncaughtException', function(err) {
    console.log(err);
});

function log(data) {
  console.log(data);
}

var bayeux = new faye.NodeAdapter({mount: '/faye', timeout: 25});

var count = 0;
bayeux.bind('subscribe', function() {
    count += 1;
    log("total clients: " + count);
});

bayeux.bind('unsubscribe', function() {
    count -= 1;
    log("total clients: " + count);
});

bayeux.listen(9000);

@daqing 我用 netstat -nat | grep 8080 | wc -l 统计出 576 个连接

#3 楼 @huacnlee 那看来还没有达到我的测试极限。

这里有人报了一个 bug: Faye hangs and doesn't accept new connections with ~1000 clients.

这类应用要追求并发量的话,最好别用 node.js 来做。当然如果你是处理并发以及 V8 的高手,就当我没说。

#5 楼 @bhuztez 那你有没有更好的方案推荐?

#6 楼 @daqing 你确定你 ulimit 调了?node.js 保持 1k 连接应该还是没啥问题的吧。

$ ulimit -n
1024

#7 楼 @bhuztez 哦原来之前对 ulimit 的理解是错的,现在调整了一下:

$ ulimit -n
4096

但是测试的时候,还是一样的问题。不过我现在觉得,之前的测试用例,不能反应浏览器的真实场景。

现在我把方案改了一下,启动多个 Faye Server,让客户端随机选择,这样可以减轻单个 server 的负载,对于现在的应用规模,应该没问题了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号