MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          最近Web服務訪問量過大,由于服務器配置比較差,數量也較少,導致服務響應過慢。為了優化服務和提高響應,下面總結出幾條查詢Resin問題的方法。

          1、查看服務器網絡狀態TIME_WAIT的數量。

          #netstat -antp|grep -i time_wait|wc -l查看TIME_WAIT數量,如果數量過多,并且Resin前端還有Nginx或者Apache,那么請把socket-timeout、keepalive-max和把keepalive-timeout調小

          ????? <socket-timeout>30s</socket-timeout>
          ????? <keepalive-max>512</keepalive-max>
          ????? <keepalive-timeout>60s</keepalive-timeout>

          2、查看JVM中對象占用內存情況

          jmap 能查看jvm內存中,對象占用內存的情況,還提供非常方便的命令將jvm的內存信息導出的文件。

          #jmap -dump:format=b,file=heap.bin <pid>?

          命令jhat 能夠解析 java內存堆的文件,生成相關信息,并啟動webServer提供查詢。 也就說,我們可以通過瀏覽器來看這些內存信息。jhat還提供了一個類sql的查詢語言---OQL來給我們使用。

          #jhat -J-Xmx512m heap.bin????

          就可以將我們剛剛使用jmap導出的內存信息交給jhat解析了。默認的情況下,它會監聽7000端口。我在本機的地址就是,http://localhost:7000/。
          訪問http://localhost:7000/histo/,大致可以看到一下的畫面,這里列出對象,對象實例數量、總占用內存大小。點擊進去之后可以看到“誰引用了這個對象,這個對象又引用了哪個”這些信息。不過因為展示的信息非常多,并沒有想象中那樣清晰可見。

          3、dump獲取java stack和native stack信息

          消息隊列會突然堵塞,查看消費者日志,發現處理延時明顯延長,而此時網絡無丟包。最后多方排查,是java消費者運行出現死鎖。
          這種問題可以通過jstack來dump獲取java stack和native stack信息查明問題。

          #jstatck <pid>


          主站蜘蛛池模板: 舟曲县| 维西| 昌图县| 巴青县| 扎兰屯市| 三亚市| 岱山县| 沾益县| 孝昌县| 威远县| 大兴区| 长白| 颍上县| 双牌县| 营口市| 临邑县| 兴仁县| 屏东县| 康乐县| 比如县| 松潘县| 南川市| 保靖县| 磴口县| 乐至县| 扎鲁特旗| 壤塘县| 岢岚县| 安陆市| 临沧市| 和平区| 南阳市| 鲁甸县| 桃园县| 上饶县| 武汉市| 德江县| 靖州| 澜沧| 洪洞县| 望都县|