node.js调研与服务性能测试

这几天对nodejs进行了一下简单的调研 主要关注这几个方面 socket服务性能, socket客户端性能 http服务性能. 服务的稳定性与资源占用 开发成本 考虑到今后的应用场景, 实现了一个简单的memcache代理服务. 内部维护了一个50连接的简单连接池, 通过长连接与memcache服务器相连. 同时对外提供socket代理服务与http restful服务 测试环境 测试使用编译安装的node.js v0.3.1,未使用任何第三方modules 代理服务与memcache部署在不同的服务器中. 系统均为rhel 5.2, cpu: AMD Opteron 2200, mem: 4g 测试用例 通过此代理程序, 分别使用memcached协议与http协议从memcache服务中取出一个长度为100bytes的值, 并检查最终输出是否正确 压力工具 socket: 由于没有找到合适的socket压力工具.用node.js实现了一个简单的socket压力工具 http: siege 2.70 测试结论 服务启动与空载资源占用 程序启动20秒后,系统资源占用达到稳定状态, 内存消耗13m, 堆尺寸8m 由堆使用变化可知v8每隔7~8秒会进行一次gc操作 100并发100秒socket长连接压力 压力启动后内存占用迅速提高至30m, v8堆也基本维持在22m的水平, 使用率在20%到50%之间波动 此时v8的gc操作频率降低到约20秒一次. qps曲线比较平稳,在16700左右波动,幅度在400左右,v8的gc操作对性能没有明显影响 压力过程中cpu占用基本维持在95%左右,处于满载状态. 另, 测试结束后20秒左右, 所占用资源被释放,内存与v8堆均回复至空载水平. 250并发100秒http长连接压力 与socket相比, http消耗的系统资源约多出30%,且8v的gc操作也要更频繁 qps值为4392, […]