Web服務效能測試:Node完勝Java
簡介
我最近做了一些簡單的關於記憶體的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高效的多造成的吧。
相關文章
- 主流 go-web 服務端框架效能測試GoWeb服務端框架
- .net和java串列埠通訊壓力測試對比, java完勝Java串列埠
- 效能測試-服務端瓶頸分析思路服務端
- web效能測試流程Web
- 服務端 I/O 效能:Node、PHP、Java、Go 的對比服務端PHPJavaGo
- 服務端I/O效能大比拼:Node、PHP、Java、Go服務端PHPJavaGo
- 12個強大的Web服務測試工具Web
- 服務端效能測試你應該知道的服務端
- 【LocustPlus序】漫談服務端效能測試服務端
- 微服務測試之效能測試微服務
- web頁面效能測試Web
- 服務端 I/O 效能大比拼:Node、PHP、Java 和 Go服務端PHPJavaGo
- Python_服務端效能高併發測試Python服務端
- Web效能測試種類與全面測試模型Web模型
- Lua、Luajit、Python、Node.js和Java效能測試對比PythonNode.jsJava
- web伺服器效能測試Web伺服器
- 整車電效能裝置開發及測試服務
- [服務端] 效能測試入門指南 (慎入: 6000 字長文)服務端
- Kubernetes下web服務的效能測試三部曲之一:準備工作Web
- 隨行付微服務測試之效能測試微服務
- 閘道器服務:zuul與nginx的效能測試對比ZuulNginx
- 雲服務測試報告測試報告
- Kubernetes下web服務的效能測試三部曲之三:橫向擴容Web
- Kubernetes下web服務的效能測試三部曲之二:縱向擴容Web
- 如何檢測雲服務的效能?
- 用elinks文字瀏覽器快速測試web服務是否可用瀏覽器Web
- 一場為企業服務開發的效能測試報告測試報告
- 怎麼做好軟體產品效能測試?專業軟體測試服務公司有哪些?
- java 效能測試框架工具-junitperfJava框架
- 三種web效能壓力測試工具Web
- node js,golang,socket服務返回hello world效能對比JSGolang
- YApi 服務端測試新增 globalCookie ,相容自動化觸發服務端測試功能API服務端Cookie
- 從測試資料來看Node.js和Java EE的效能區別Node.jsJava
- ASP.NET Web 服務、企業服務和 .NET Remoting 的效能ASP.NETWebREM
- 移動APP安全測試服務APP
- 服務端測試開發必備技能:Mock測試服務端Mock
- 基於leveldb引擎的高效能Nosql服務ssdb的測試使用SQL
- 服務流程之全面的滲透測試服務介紹