• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Tomcat 7下使用異步Servlet實踐

      2015-06-29 09:21:50李春玲
      卷宗 2015年6期
      關鍵詞:線程邏輯解決方案

      李春玲

      摘 要:在Servlet 3.0標準新增的諸多特性中,異步處理支持是最為關注的一個特性,本文將詳細對比傳統(tǒng)的Servlet與異步Servlet的差別,通過實踐分析異步Servlet在何種場景下會提升Java Web應用的性能。

      關鍵詞:ervlet 3.0;異步

      1 引言

      Servlet3.0是Tomcat7出現(xiàn)的新特性,而異步處理是servlet 3.0的最重要的特征。

      在Servlet 3.0之前,通過Servlet執(zhí)行比較耗時的任務時,Servlet線程會被阻塞,直到所有的處理完成后才能得到響應。如果服務器的請求鏈接很多,它將達到最大Servlet線程限制,后續(xù)的請求被拒絕出現(xiàn)連接錯誤。雖然這種同步問題可以用特定的方案解決,比如Tomcat 的 Comet、WebLogic 的FutureResponseServlet 和 WebSphere的Asynchronous Request Dispatcher。這種特定容器的解決方案的問題在于,在不改變應用程序代碼時不能移動到其他Servlet容器。

      而Servlet3.0提供標準的方式異步處理Servlet的同時增加異步Servlet支持。這樣在Servlet API 3.0實現(xiàn)成為主流后,解決方案就變得更加簡單、標準化且優(yōu)雅。

      2 異步Servlet實踐

      2.1 異步Servlet實現(xiàn)

      本實踐在Tomcat 7.0,JDK1.7環(huán)境下,基于eclipse 3.7集成開發(fā)環(huán)境下來搭建實踐工程。

      (1)配置

      配置Tomcat采用Servlet3.0,有兩種配置方式:一種是注解式,一種是修改web.xml配置,我們采用了注解式。

      (2)異步Servlet實現(xiàn)流程

      啟動一個異步的Servlet處理過程,映射為異步上下文對象;

      對這個上下文對象加入一個監(jiān)聽;

      設置一個超時時間,終止異步過程;

      創(chuàng)建執(zhí)行業(yè)務邏輯的工作線程池;

      將異步上下文放入線程池執(zhí)行業(yè)務邏輯。

      2.2 異步Servlet測試

      實踐采用Apache的JMeter測試工具,對項目中使用異步Servlet方式的的并發(fā)請求處理能力進行測試,同時與原有Servlet方式進行對比分析。

      在相同測試服務和模型情況下,兩種方式測試的統(tǒng)計結果如下:

      原Servlet:

      異步Servlet:

      從以上結果可以看出,異步Servlet平均性能有一點提升,但提升不大,即整體性能受限于請求/響應的完整處理時間,跟是否采用異步方式無關。但偏離數(shù)據(jù)大幅度縮小,表明采用異步Servlet后,服務器的線程調度能力得到很大改善,響應處理能力加強。

      3 測試結果分析

      (1)經過對比分析,可以確認Tomcat對于Servlet當前請求的處理,不論是否采用Servlet3.0寫法,都是一個請求對應一個響應,標準的協(xié)議處理模式。

      (2)從并發(fā)的角度看,Servlet3.0的異步處理能力,不是針對同一個用戶提交的請求,而是針對大量用戶請求提交到服務端后的處理效果。其核心就是Servlet對象能夠快速返回,接收其他用戶連接上的請求,從而減少Servlet對象的創(chuàng)建/銷毀在性能上的開銷,避免因對象過多造成達到Servlet最大線程限制而可能的拒絕服務。在同樣大數(shù)量并發(fā)請求場景下,異步Servlet對服務器穩(wěn)定以及處理性能提升很有幫助。

      (3)當業(yè)務邏輯處理的返回值跟本次請求所需要的返回值不相關,即可以立即返回響應而不需等待業(yè)務邏輯處理結果時,用Servlet3.0則將對整個處理性能有一個質的飛躍。

      4 實踐總結

      通過實踐分析,對于Servlet3.0的使用,需要根據(jù)具體的場景和服務器能力設計來權衡使用。該解決方案非常適合于某些應用場景,比如說通知類、日志類服務等,他們的執(zhí)行與請求/響應是解耦的。而對于需要等待數(shù)據(jù)庫查詢完成,或者需要明確獲得本次處理結果,才能返回響應處理場景來說,這種方式就沒有什么必須性了。

      猜你喜歡
      線程邏輯解決方案
      刑事印證證明準確達成的邏輯反思
      法律方法(2022年2期)2022-10-20 06:44:24
      邏輯
      解決方案和折中方案
      創(chuàng)新的邏輯
      簡潔又輕松的Soundbar環(huán)繞聲解決方案
      女人買買買的神邏輯
      37°女人(2017年11期)2017-11-14 20:27:40
      淺談linux多線程協(xié)作
      4G LTE室內覆蓋解決方案探討
      Moxa 802.11n WLAN解決方案AWK-1131A系列
      Linux線程實現(xiàn)技術研究
      石楼县| 西昌市| 衡水市| 泸州市| 滦平县| 英吉沙县| 崇信县| 红安县| 杭锦旗| 胶南市| 蓝田县| 千阳县| 尖扎县| 红原县| 嘉义市| 综艺| 常德市| 无棣县| 比如县| 玉树县| 延安市| 宜章县| 五华县| 和林格尔县| 济南市| 增城市| 翁源县| 青州市| 东宁县| 新民市| 和田县| 瑞昌市| 宁晋县| 都昌县| 宜兴市| 万盛区| 绥棱县| 百色市| 铅山县| 曲靖市| 尚志市|