站長資訊網
        最全最豐富的資訊網站

        Tomcat占用CPU過高解決方法

        問題描述

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

        問題排查

        1、獲取進程信息

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

        jps pid

        2、查看jstack信息

        jstack pid

        3、將十進制pid轉換為16進制

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

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

        將16進制轉換成十進制
        # printf “%dn” 0x4d19

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

        4、打印線程的堆棧信息

        jstack pid | grep tid -A 30

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

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

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

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

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

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

        說明并不存在長期占用cpu的線程,應該是屬于有許多短暫性的cpu密集計算。進而懷疑是不是jvm內存不足,頻繁gc導致。

        jstat -gc pid

        發現jvm內存使用并未出現異常,gc次數明顯暴漲

        查完內存,由于本身是一個網絡程序,進一步排查網絡連接。

        6、問題定位

        查詢tomcat對應端口的tcp鏈接,查看是否存在大量EASTABLISH的鏈接,或還有部分其它狀態的連接。

        netstat -anlp | grep port

        netstat狀態說明:

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

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

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

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

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

        <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參數只有當request的Content-Type為“application/x-www-form-urlencoded”時起作用。

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

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产99精品久久| 国产精品日日摸夜夜添夜夜添1国产精品va欧美精| 国产欧美日韩精品a在线观看 | 亚洲国产精品嫩草影院| 少妇人妻精品一区二区三区| 精品久久久久久无码中文字幕| 精品国产麻豆免费人成网站| 久久亚洲精品成人av无码网站| 网友偷拍日韩精品| 国产手机在线精品| 先锋影音国产精品| 91国内外精品自在线播放| 综合国产精品第一页| 欧美精品www| 国产在线精品一区免费香蕉| 99精品国产一区二区| 久久精品国产99国产电影网 | 福利姬在线精品观看| 人妻AV一区二区三区精品| 一本之道av不卡精品| 亚州日韩精品专区久久久| 久久精品无码一区二区三区免费| 999久久久免费国产精品播放| 久久se精品一区精品二区| 99久久成人国产精品免费| 国产精品香港三级国产AV| 色偷偷88888欧美精品久久久| 永久免费精品影视网站| 久久青青草原精品国产不卡| 国产精品无码素人福利| 337P亚洲精品色噜噜| 青草青草久热精品视频在线网站| 国产精品福利一区二区久久| 国产成人精品日本亚洲网址| 99久久国产综合精品麻豆| 国产欧美久久久精品| 热久久国产精品| 国产精品被窝福利一区| 国产精品永久免费视频| 久久精品无码一区二区三区日韩 | 91精品久久久久久无码|