- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
Nodejs
Node.js 性能测试模拟器
Why?
性能测试时,可能需要一些系统外的被依赖服务的模拟器,常用性能测试工具如JMeter并没有模拟Server端的能力。如果是另外起个Tomcat,写些简单的模拟器——性能与容量是一个问题,因为被测试服务器集群可能有二十台机器,而跑模拟器的机器可能只有一两台。另一个是如果要快速修改输出内容,Tomcat的打包上传部署流程略显麻烦。
所以看上了Node.js。
另一个选择是DreamHead同学拿了Java Duke大奖,登上时代广场大屏幕的Moco,可以用一段JSON控制模拟器的返回。
How?
Node.js的最简单版很吸引人,相信大部分人都是被下面的例子骗上贼船的。
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
用node.js simple.js即可运行这个Web服务器。所以,Node.js 是一个用JavaScript编写业务的服务器。
Then?
上面的例子虽然爽,但真正作为模拟器水就开始深了,springside的support/node.js/static-response.js是返回相同的静止内容的完整示例。
1. 基于Cluster模块使用所有CPU
Node.js默认只起一个进程,使用一个CPU core,这显然浪费了。因此可以Cluster文档的示例代码,改造成按CPU核数量启动Node.js进程,在我的双核超线程的笔记本上就fork出了4条子进程。
2. Counter计算
因为现在多进程了,计算Counter也成了麻烦事情,Cluster文档又给出了示例代码,居然需要进程间通讯......
3. 定时打印Counter
设定定时器还是很简单的,只要调一句setInterval(function, interval)
打印日期时发现,自带函数居然不支持格式化日期,不想引入第三方库就只好写成这样,勉强也能出来 "2013-6-4 12:00:02" 这样的效果。
new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '')
And Then?
然后,还有一堆问题呀,比如要返回动态内容,根据请求的url参数,xml/json内容返回相应xml/json格式结果,要一个模拟器应答多种请求,是不是要把Express拿出来用?
参考资料
joyent上的modules大全 joyent其实是node.js背后的公司,分类列了很多modules,但良莠不齐又没有评分。 [Node.js上的npm registry] (https://npmjs.org/) 有评分但没分类。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论