qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          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高效的多造成的吧。

          posted on 2014-03-31 11:07 順其自然EVO 閱讀(366) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄web 前端性能測試

          <2014年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 历史| 东源县| 樟树市| 延吉市| 蚌埠市| 油尖旺区| 彰武县| 荣昌县| 石楼县| 上思县| 攀枝花市| 嫩江县| 德保县| 阜城县| 开江县| 精河县| 历史| 红安县| 扶绥县| 贵港市| 英山县| 朔州市| 宜兰县| 张掖市| 益阳市| 克山县| 太原市| 连州市| 宝坻区| 通城县| 峨眉山市| 黑河市| 永丰县| 靖边县| 黑龙江省| 镇江市| 东阿县| 祁连县| 赞皇县| 象山县| 青浦区|