最近用 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 个连接
netstat -nat | grep 8080 | wc -l
#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 的负载,对于现在的应用规模,应该没问题了。