本文作者Marc Fasel是一名高级顾问、架构师、软件开发者。他有着18年的构建大规模、高性能企业App的经验。在这篇文章里,他通过做测试的方式(在Node.js App上和Java伺服器App上分别进行性能测试),一步步将测试过程、结果、结论写出来,分析两者的性能区别。(以下是编译内容)
  本文是通过从CouchDB上读取JSON数据来比较Node.js和Java EE之间的性能的。究竟谁的性能更好些?为了回答这一问题,只有在一系列的性能测试下运行Node.js App和Java EE App,才能得出终结果来。
  准备阶段
  首先是在Node.js App上和Java伺服器App上分别进行了性能测试。每个App上都是用了相同的后端作为初始Node.js App:CouchDB。除此还使用了CouchBase Single Server版本1.1.3。创造出一万份大小4KB的随机文本样本文件。测试机器是配备2.4 GHZ、Intel Core 2 Duo、4 GB RAM和Mac OS X的iMac。另外,在一个独立的机器上使用Apache JMeter作为测试驱动器。
  Java EE
  Java伺服器是运行在一个版本为7.0.21的Apache Tomcat上的,默认配置运行在Java 1.6上。数据库驱动程序是版本0.30的CouchDB4J,驱动程序没有缓存选项,所以,没有完成任何配置。
  接下来的这个Java代码是一个伺服器的代码,可以通过CouchDB获取文档,将数据作为一个JSON对象来处理。

  通过使用JMeter测试驱动器来测试伺服器在不同的并发性基础之上,下面的表格数字展现出不同的并发需求——平均的响应时间,和每秒相应的所对应的回复。

  从表格里可以看出,当并行需求在增加的时候,响应时间会有所变化。每10个并行需求的响应时间平均起来是23毫秒,100个并行需求的响应时间平均起来是243毫秒。
  比较有趣的部分是,响应时间的平均数和并行需求的数量有着线性相关关系,所以,并行需求增长十倍会导致每个需求的响应时间增长十倍。这使得在每秒钟处理需求数量是相当恒定的,不管有10个并发请求或150个并发请求,都无所谓。在所有观察到的并发服务请求数量大约为每秒420。