久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Tomcat占用CPU過高解決方法

      問題描述

      在工作中經(jīng)常遇到Tomcat占用CPU居高不下,top顯示結(jié)果超過200%,請求無法響應(yīng),針對這種情況有以下處理辦法進行排查。請求無法響應(yīng)。

      問題排查

      1、獲取進程信息

      通過jdk提供的jps命令可以快速查出jvm進程

      jps pid

      2、查看jstack信息

      jstack pid

      3、將十進制pid轉(zhuǎn)換為16進制

      將十進制轉(zhuǎn)換成16進制
      # printf “%xn” 19713–>將第2步查到占用較高CPU的線程號轉(zhuǎn)換為16進制,以便于jstack查看
      4d01

      #jstack pid | grep 0x4d01–> 0x4d01為第3步19713轉(zhuǎn)換為16進制后的數(shù)字,因為jstack顯示的線程號是以16進制表示的!

      將16進制轉(zhuǎn)換成十進制
      # printf “%dn” 0x4d19

      jstack的作用是顯示正在運行的所有Java線程情況,jstack pid | grep 0x4d01的意思只顯示某個java線程的運行信息。通過這種方法,可以將此線程正在運行的方法顯示出來,將此方法交給開發(fā)即可。(也可能jstack pid | grep 0x4d01什么都沒有出來的)

      4、打印線程的堆棧信息

      jstack pid | grep tid -A 30

      此處不一一列表各tid的堆棧信息了,在其中一個的tid堆棧信息中找到了問題的原因

      5、進一步排查,分析每個線程的cpu占用量

      簡單點兒的方法則是,查出進程id后,通過如下命令查看該進程中每個線程的資源使用情況

      top -H -p pid  -H用于顯示某個進程的所有線程

      從這里獲取pid(線程id),轉(zhuǎn)換為16進制,然后去stack信息中查找對象的線程信息。

      通過上述方法,查出tomcat進程對應(yīng)的線程cpu占用率累積之和約80%,遠小于top給出的200%+

      說明并不存在長期占用cpu的線程,應(yīng)該是屬于有許多短暫性的cpu密集計算。進而懷疑是不是jvm內(nèi)存不足,頻繁gc導(dǎo)致。

      jstat -gc pid

      發(fā)現(xiàn)jvm內(nèi)存使用并未出現(xiàn)異常,gc次數(shù)明顯暴漲

      查完內(nèi)存,由于本身是一個網(wǎng)絡(luò)程序,進一步排查網(wǎng)絡(luò)連接。

      6、問題定位

      查詢tomcat對應(yīng)端口的tcp鏈接,查看是否存在大量EASTABLISH的鏈接,或還有部分其它狀態(tài)的連接。

      netstat -anlp | grep port

      netstat狀態(tài)說明:

      LISTEN:偵聽來自遠方的TCP端口的連接請求
      SYN-SENT:再發(fā)送連接請求后等待匹配的連接請求(如果有大量這樣的狀態(tài)包,檢查是否中招了)
      SYN-RECEIVED:再收到和發(fā)送一個連接請求后等待對方對連接請求的確認(如有大量此狀態(tài),估計被flood***了)
      ESTABLISHED:代表一個打開的連接
      FIN-WAIT-1:等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認
      FIN-WAIT-2:從遠程TCP等待連接中斷請求
      CLOSE-WAIT:等待從本地用戶發(fā)來的連接中斷請求
      CLOSING:等待遠程TCP對連接中斷的確認
      LAST-ACK:等待原來的發(fā)向遠程TCP的連接中斷請求的確認(不是什么好東西,此項出現(xiàn),檢查是否被***)
      TIME-WAIT:等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認
      CLOSED:沒有任何連接狀態(tài)

      解除Tomcat中POST方式上傳文件的大小限制

      當服務(wù)器是Tomcat時,通過POST上傳的文件大小的最大值為2M(2097152)。

      如果想修改該限制,修改方法如下:

      tomcat目錄下的conf文件夾下,server.xml 文件中以下的位置中添加maxPostSize參數(shù)

      <Connector port=”8081″ 
                    maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″ 
                    enableLookups=”false” redirectPort=”8443″ acceptCount=”100″ 
                    debug=”0″ connectionTimeout=”20000″ 
                    disableUploadTimeout=”true” URIEncoding=”GBK” 
                    maxPostSize=”-1″/>

      注意:maxPostSize參數(shù)只有當request的Content-Type為“application/x-www-form-urlencoded”時起作用。

      從 apache-tomcat-7.0.63 開始,參數(shù) maxPostSize 的含義就變了: 如果將值設(shè)置為 0,表示 POST 最大值為 0,不限制 POST 大小需要將值設(shè)置為 -1。,在此版本之前設(shè)置為 0 表示不限制 POST 大小。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號