環境:tomcat7,jdk1.7,springmvc4.0,mybatis
背景:一個網關專案,主服務一臺服務器,探針二十多臺服務器,探針給主服務發送http的告警和狀態資料,每臺探針每10秒發送一次資料(用的是scheduleWithFixedDelay,不會產生積壓)
問題:主服務剛開始運行時,介面耗時在十幾毫秒,運行幾天后,達到二三十秒,經排查,耗時主要發生在HandlerInterceptor.preHandle介面return true之后,到controller回應,Service業務耗時未增加。哪位大神能給指條明路,往哪個方向排查?
tomcat配置:
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxConnection="400"
maxThreads="200"
accepCount="30"
minSpareThreads="40"
connectionTimeout="30000"
acceptorThreadCount="2"
enableLookups="false"
redirectPort="8443"
/>
tomcatManager顯示的介面耗時:

tomcat服務行程顯示的執行緒數,幾天未有大幅波動

服務列印的日志,業務耗時一直比較穩定,100ms以內,其他介面耗時很短(幾毫秒)

介面耗時計算方式:HandlerInterceptor.preHandle介面return true之前,到postHandle
業務耗時計算方式:在controller的方法中,方法內第一行到return前
uj5u.com熱心網友回復:
問題解決了,controller中,將@RequestBody JSONArray改成@RequestBody String后,問題得到極大緩解
原因猜測,未看原始碼:
未進入controller是單例且是同步的,決議JSONArray造成的堵塞,我這里JSONArray,時不時會有幾十k或者上百k的JSONArray需要決議
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90390.html
標籤:Java EE
上一篇:exe檔案加密,加殼,授權的問題
下一篇:使用LinkedList容器類,實作由字串"aaaaabbbbcccddeabcdef"生成字符及個數的線性表,如以上子串生成的LinkedList線性表各結
