<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Tomcat監控和調優 [TOC] ## 一、命令或函數監控方法 ### 1.tomcat自帶函數檢測 可以使用memtest.war這個文件中的meminfo.jsp進行監控內存,里面已經調用tomcat自帶的命令寫好了一個腳本 ### 2.jps命令[※] JDK包自帶的命令,主要用來輸出jvm中運行的進程狀態信息 1)語法格式: ```sh jps [options] [hostid] ``` 如果不指定hostid就默認為當前主機或服務器。 參數說明: ``` -q 不輸出類名、Jar名和傳入main方法的參數 -m 輸出傳入main方法的參數 -l 輸出main類或Jar的全名 -v 輸出傳入JVM的參數 ``` 2)用法示例 快速獲取Java進程的pid,不用ps和grep ``` [root@xxx ~]# jps -lvm 10779 sun.tools.jps.Jps -lvm -Denv.class.path=..:/application/jdk/lib:/application/jdk/jre/lib:/application/jdk/lib/tools.jar:/application/jdk/lib:/application/jdk/jre/lib:/application/jdk/lib/tools.jar -Dapplication.home=/application/jdk1.8.0_60 -Xms8m ``` ### 3.show-busy-java-threads腳本[※] 此腳本是一個比較著名的腳本,執行后可以排序顯示繁忙的java程序的信息,一般用來排查故障,如下 ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200306/120831865.png) ### 4.jstack監控[※] jstack可以定位到線程堆棧,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多。 上面的腳本知道繁忙的線程后,后jstack命令獲取詳細信息然后發給開發或自己研究 ``` jstack 73855 >/tmp/busy_java.log ``` ### 5.jsconslse和jvisualvm windows下jdk安裝后附帶的圖形監控工具。c:\program files\java\jdk1.8.0_31\bin ![mark](http://noah-pic.oss-cn-chengdu.aliyuncs.com/pic/20200306/120843972.png) ## 二、zabbix監控tomcat ### 1.監控流程 數據獲取流程:java poller《——》javagateway:10052《——》tomcat:12345 1. zabbix_server開啟java poller 2. zabbix_java開啟javagateway,端口為10052 3. tomcat開啟12345端口提供性能數據 ### 2.安裝依賴程序 ``` #yum源-centos6 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm #yum源-centos7 rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm ``` yum安裝的zabbix需要增加安裝以下程序 ``` yum install -y java java-devel zabbix-java-gateway ``` >源碼安裝的時候需要加--enable-java,如果安裝的時候沒有此參數需要重新編譯 ### 3.開啟tomcat遠程監控功能 1)修改tomcat配置 需要tomcat開啟遠程監控功能,開啟方法如下 ``` [root@xxx ~]# vim /application/tomcat/bin/catalina.sh +97 CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.0.0.3" ``` 2)做hosts解析并重啟tomcat hosts解析--略 ``` /app/tomcat/bin/shutdown.sh /app/tomcat/bin/startup.sh ``` ### 4.啟動zabbix(server和javagateway) 1)修改server配置文件 ``` sed -ri 's#\# (JavaGateway=)#\1 127.0.0.1#g' /etc/zabbix/zabbix_server.conf sed -ri 's#\# (StartJavaPollers=)0#\1 5#g' /etc/zabbix/zabbix_server.conf ``` 2)啟動服務 ``` /etc/init.d/zabbix_server restart /etc/init.d/zabbix-java-gateway start ``` ### 5.zabbix圖形界面添加客戶端 在zabbix圖形界面上,添加JMX類型的客戶端,并了解java模板即可,截圖略 ## 三、Tomcat性能優化 ### 1.屏蔽dns查詢 ``` vim /app/tomcat/conf/server.xml +70 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="6000" enableLookups="false" acceptCount="800" redirectPort="8443" /> ``` ### 2.jvm調優 Tomcat最吃內存,只要內存足夠,這只貓就跑的很快。如果系統資源有限,那就需要進行調優,提高資源使用率。 **優化catalina.sh配置文件。** 在catalina.sh配置文件中添加以下代碼: ```sh JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m" ``` **堆棧參數:** ```sh server:一定要作為第一個參數,在多個CPU時性能佳 -Xms:初始堆內存Heap大小,使用的最小內存,cpu性能高時此值應設的大一些 -Xmx:初始堆內存heap最大值,使用的最大內存 上面兩個值是分配JVM的最小和最大內存,取決于硬件物理內存的大小,建議均設為物理內存的一半。 -XX:PermSize:設定內存的永久保存區域 -XX:MaxPermSize:設定最大內存的永久保存區域 -XX:NewSize: 設定堆區域新生代內存的大小 -XX:MaxNewSize: 設定堆區域新生代內存的最大可分配大小 ``` 其他參數 ```sh -Xss 15120 這使得JBoss每增加一個線程(thread)就會立即消耗15M內存,而最佳值應該是128K,默認值好像是512k. +XX:AggressiveHeap 會使得 Xms沒有意義。這個參數讓jvm忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡一個G的swap。 -Xss:每個線程的Stack大小 -verbose:gc 現實垃圾收集信息 -Xloggc:gc.log 指定垃圾收集日志文件 -Xmn:young generation的heap大小,一般設置為Xmx的3、4分之一 -XX:+UseParNewGC :縮短minor收集的時間 -XX:+UseConcMarkSweepGC :縮短major收集的時間 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看