美文网首页
Web服务性能测试:Node完胜Java

Web服务性能测试:Node完胜Java

作者: James黄杰 | 来源:发表于2017-02-27 11:42 被阅读122次

简介
  我最近做了一些简单的关于内存的Web Service性能测试。我使用Java(REST + SOAP)和Node.js(REST)将一些接口功能缓存起来。跟期望的一样,Node应用的性能远远超出Java。(响应时间至少快1倍以上)。
  译者注* NodeJS跟许多其他单线程语言一样,对内存并不贪婪,因为没有关于线程的内存开销,内存占用不会随着连接数的增长而增长,尤其在剔除掉读写文件/数 据库等异步操作后,完全基于内存的NodeJS将有更显著的性能提升,从某种意义上来说基于内存的nodejs服务所能支持的最大并发数将仅受限于带宽和 CPU的处理能力。
  可参见: 性能测评:Ngix_Lua, Node.JS Python三者性能相当,均比php快近一倍, PayPal为什么从Java迁移到Node.js
  缓存应用
  图1:关于缓存应用的原理图。缓存支持插入,获取,删除键/值对


  图2:关于应用更详细的物理图

  这里使用了另外一种形式的REST,cache操作通过HTTP verbs来完成(Insert = PUT, Fetch = GET, Remove = DELETE)。数据刷新通过使用timeouts(Node)和scheduled threads(Java)来完成。缓存冗余是通过服务器间的REST调用来实现。(通过PUT/DELETE)
 对于Java SOAP的扩展,cache操作通过经典的HTTP POST SOAP包来实现。
  应用层结构
  图3:基于Cache的Java REST组织结构图。Apache Tomcat + Jersey (servlet)在这一层。

  图4:基于Cache的Java SOAP组织结构图。Apache Tomcat + Axis2 (servlet)在这一层。

  图5:为Node应用。仅初始化了一个worker。

  测试
  图6: 为我测试时使用的环境

 Java + Node REST 缓存插入测试
ab -A username:password -u restput.txt -n 1000 -c 1 https://server/ctispan/rest/key/111 > results.txt
restput.txt
value=test111

Java SOAP 缓存获取测试
ab -A client:password -T "application/soap+xml; charset=UTF-8" -p soapget.xml -n 1000 -c 1 https://server/ctispan/services/CacheProxyWS.CacheProxyWSHttpSoap11Endpoint/ > results.txt
soapget.xml
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ns1:getValue xmlns:ns1="http://server.ctispan.jwisoft.com"><ns1:key>111</ns1:key></ns1:getValue></soapenv:Body></soapenv:Envelope>

 Java SOAP 缓存插入测试
ab -A client:password -T "application/soap+xml; charset=UTF-8" -p soapput.xml -n 1000 -c 1 https://server/ctispan/services/CacheProxyWS.CacheProxyWSHttpSoap11Endpoint/ > results.txt
soapput.xml
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ns1:putValue xmlns:ns1="http://server.ctispan.jwisoft.com"><ns1:key>111</ns1:key><ns1:value>text111</ns1:value></ns1:putValue></soapenv:Body></soapenv:Envelope>

 结论
  下面A/B测试生成的一些数据。对于Node对比Java的结果,我并不吃惊。不过对于Java REST和SOAP的对比让我稍微有些吃惊。我原本以为因为SOAP的复杂性,REST的性能应该比SOAP好很多才对。这也许是因为Apache Axis2 API要比Jersey API高效的多造成的吧。


相关文章

  • Web服务性能测试:Node完胜Java

    简介我最近做了一些简单的关于内存的Web Service性能测试。我使用Java(REST + SOAP)和Nod...

  • 开源性能压测工具 locust

    本文主要针对服务端,web系统的性能测试。 性能测试 根据不同的测试目的,性能测试具体细分为多种类型 基准测试 :...

  • Node.js 性能调优

    服务性能测试 调试 Node 性能首先得找到性能瓶颈所在,包括两个方面: top, 测试 CPU 和内存 iost...

  • 2018-04-04

    对于web页面的性能测试分为:前端、后端的测试 首先,我们来明确下你的性能测试目的,你的目的是服务端的性能还是前端...

  • 性能测试-Web

    关键词:web应用服务器 数据库服务器 性能测试

  • grafana中服务器指标解释

    性能测试中,使用node_exporter+permetheus+grafana监控服务器信息后,在grafana...

  • 网站监控—http_load

    1.什么是http_loadhttp_load是一款基于Linux平台的web服务器性能测试工具,用于测试web服...

  • Python Web服务器并发性能测试

    Python Web服务器并发性能测试 测试条件 测试机器:四核,4GB内存 系统环境:Ubuntu 14.04 ...

  • 一个基于Node.js的本地快速测试服务器

    local-web-test 一个本地的基于node.js的测试服务器 支持快速的启动web容器服务 支持快速的发...

  • NodeJs基础学习--http模块(5)

    概述 开发node的初衷,就是开发一个非阻塞IO功能、高性能web服务器,所以node的HTTP模块是核心中核心。...

网友评论

      本文标题:Web服务性能测试:Node完胜Java

      本文链接:https://www.haomeiwen.com/subject/lslzwttx.html