Web服務性能測試:Node完勝Java
發表于:2015-04-08來源:uml.org.cn作者:不詳點擊數:
標簽:
我最近做了一些簡單的關于內存的Web Service性能測試。我使用Java(REST + SOAP)和Node.js(REST)將一些接口功能緩存起來。跟期望的一樣,Node應用的性能遠遠超出Java。(響應時間至少快1倍以上)
簡介
我最近做了一些簡單的關于內存的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>
|


|
原文轉自:http://www.uml.org.cn/Test/201404102.asp