1. 程式人生 > >Tomcat記憶體監控 JConsole / JProfiler 監控遠端linux tomcat執行情況的配置

Tomcat記憶體監控 JConsole / JProfiler 監控遠端linux tomcat執行情況的配置

步驟如下:

1.編輯tomcat/bin/catalina.sh

Bash程式碼 
  1. vi catalina.sh   

 在其中“

# ----- Execute The Requested Command -----------------------------------------”

之前插入新的一行(中間沒有換行),內容如下:

Vi catalina.sh程式碼 
  1. CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jdzz10.ucjoy.com -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxrem  
  2. ote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"  

 插入後,應該如圖:



 (其中的選中部分為新增內容)

2.編輯jmxremote.access和jmxremote.password

Bash程式碼 
  1. cd /usr/java/jdk1.6.0_18/jre/lib/management  
  2. mv jmxremote.password.template jmxremote.password   
  3. chmod 600 jmxremote.access jmxremote.password  
  4. vi jmxremote.password   

jmxremote.access 一般保持原始內容不變即可。

對於jmxremote.password,將 其中的:

# monitorRole  mzxwswj
# controlRole  mzxwswj

井號註釋取消掉。其中monitorRole為只擁有隻讀許可權的角色,controlRole有更高許可權:讀寫等等。

3.

a.最後將埠加入防火牆信任列表

Bash程式碼 
  1. vi /etc/sysconfig/iptables  

編輯iptables,加入新一行內容:-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 12345 -j ACCEPT

如圖(選中內容為新增的):

 
b.啟動tomcat

Bash程式碼 
  1. /usr/local/tomcat/bin/startup.sh   

而我們在上面配置的jmx代理就會隨tomcat一起啟動。

可以使用netstat -an | grep 12345命令檢視埠是否正常啟動。

至此,伺服器端配置完畢。

4.使用windows客戶機上的jconsole連線伺服器端 進行監控。

開啟C:\Program Files\Java\jdk1.6.0_10\bin\jconsole.exe,輸入伺服器端相關資訊:


點選“連線”,進入監控頁面:



1. 新增tomcat管理員帳戶
新增管理員賬戶tomcat-users.xml
< ?xml version='1.0' encoding='utf-8'?>

2. TOMCAT記憶體
基 本原理:JAVA程式啟動時都會JVM 都會分配一個初始記憶體和最大記憶體給這個應用程式。這個初始記憶體和最大記憶體在一定程度都會影響程式的效能。比如說在應用程式用到最大記憶體的時候,JVM是要 先去做垃圾回收的動作,釋放被佔用的一些記憶體。 所以想調整Tomcat的啟動時初始記憶體和最大記憶體就需要向JVM宣告,一般的JAVA程式在執行都可以通過中-Xms -Xmx來調整應用程式的初始記憶體和最大記憶體: 如:java -Xms64m -Xmx128m application.jar.

方法1:如果是使用的tomcat_home/bin/catalina.sh(linux)或catalina.bat(win)啟動的:
修改相應檔案,加上下面這句:
JAVA_OPTS='$JAVA_OPTS -server -Xmx800m -Xms512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true'--ms是最小記憶體,mx是最大記憶體。這裡設定最小記憶體為512M,最大記憶體為 800M。$JAVA_OPTS是保留先前設定。 CATALINA_OPTS似乎可以與JAVA_OPTS不加區別的使用。[對於catalina.bat則是如此設定: set JAVA_OPTS=-Xms1024m -Xmx1024m]

方法2:如果使用的winnt服務啟動:
在 命令列鍵入regedit,找到 HKEY_LOCAL_MACHINE-->SOFTWARE-->Apache Software Foundation-->Procrun 2.0-->Tomcat5-->Parameters的Java,
修改Options的值,新新增屬性:
-Xms64m
-Xmx128m 或者直接修改JvmMx(最大記憶體)和JvmMs(最小記憶體)。

有人建議Xms和Xmx的值取成一樣比較好,說是可以加快記憶體回收速度。
修改完之後,可以訪問http://127.0.0.1:8080/manager/status檢視記憶體大小。

也可以編寫下面測試tomcat記憶體大小的jsp頁面:
< %
Runtime lRuntime = Runtime.getRuntime();
out.println("*** BEGIN MEMORY STATISTICS ***
");
out.println("Free Memory: "+lRuntime.freeMemory()+"
");
out.println("Max Memory: "+lRuntime.maxMemory()+"
");
out.println("Total Memory: "+lRuntime.totalMemory()+"
");
out.println("Available Processors : "+lRuntime.availableProcessors()+"
");
out.println("*** END MEMORY STATISTICS ***");
%>

3. 增加tomcat連線數
在tomcat配置檔案server.xml中的配置中,和連線數相關的引數有:
minProcessors:最小空閒連線執行緒數,用於提高系統處理效能,預設值為10
maxProcessors:最大連線執行緒數,即:併發處理的最大請求數,預設值為75
acceptCount:允許的最大連線數,應大於等於maxProcessors,預設值為100
enableLookups:是否反查域名,取值為:true或false。為了提高處理能力,應設定為false
connectionTimeout: 網路連線超時,單位:毫秒。設定為0表示永不超時,這樣設定有隱患的。通常可設定為30000毫秒。 其中和最大連線數相關的引數為maxProcessors和acceptCount。如果要加大併發連線數,應同時加大這兩個引數。 web server允許的最大連線數還受制於作業系統的核心引數設定,通常Windows是2000個左右,Linux是1000個左右。
如:

maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"
acceptCount="100"
/>
maxThreads="150" 表示最多同時處理150個連線
minSpareThreads="25" 表示即使沒有人使用也開這麼多空執行緒等待
maxSpareThreads="75" 表示如果最多可以空75個執行緒,例如某時刻有80人訪問,之後沒有人訪問了,則tomcat不會保留80個空執行緒,而是關閉5個空的。

acceptCount="100" 當同時連線的人數達到maxThreads時,還可以接收排隊的連線,超過這個連線的則直接返回拒絕連線。

4.使用Jconsole監控
在需要監控的tomcat_home/bin/catalina.sh(linux)檔案中新增下面語句:JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8089
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
設定一個新的埠號。然後在本機dos下輸入Jconsole命令,彈出“JAVA 監視和管理控制檯”,如果是遠端監視,就輸入:, 這個port就上上面配置的8089,然後再輸入遠端主機的使用者名稱跟口令,就可以監控啦。 傳說這裡面還可以加一句話"-Djava.rmi.server.hostname=192.168.1.80" 沒有試過 ⊙﹏⊙b汗 先拷貝上一句話,留作記憶: 再找找遠端tomcat的jmx配置,多了個引數-Djava.rmi.server.hostname=ip_or_hostname。然後我就加上了 伺服器的IP。然後再連線就可以了。對這樣的情況有點不解,再官方又沒有找任何這個引數的說明。回來後,再試用一下。在虛擬機器的開一個linux,然後配 上jmx引數(沒有java.rmi.server.hostname的)。結果可以連線。... 公司的為什麼不能連線呢?為什麼加了IP就行?懷疑多網絡卡。然後在虛擬機器上再加一個網上,然後啟動 tomcat ,恩,不能連線(沒有server.hostname),然後再加上java.rmi.server.hostname啟動 tomcat ,結果或以連線。原來java.rmi.server.hostname是這個作用。


1.測試環境
服 務器:RedHat Linux 3.4.3-9.EL4(核心版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安裝包:jprofiler_linux_4_3_2.sh) 
客戶端:Windows XP,JProfiler 4.3.2 for windows(安裝包:jprofiler_windows_4_3_2.exe)

3.客戶端 JProfiler 安裝 略

4.伺服器端 JProfiler 安裝: 
把 jprofiler_linux_4.3.2.sh 上傳到到伺服器,假設路徑為 /opt/jprofiler

# cd /opt/jprofiler
# chmod +x *.sh 
# ./jprofiler_linux_4.3.2.sh -c
按照提示來安裝,提示都很簡單,不在多說。安裝路徑選擇 /opt/jprofiler4

注意,這裡的 -c 意思是用字元方式來安裝,如果機器上沒有 X 則加上該引數.

5.客戶端連線配置
1). 執行 JProfiler 。第一次開啟會有嚮導,忽略它。 
2). 選擇 Session->Integration Wizard->New Remote Integratation 
3). 選擇 On a remote computer;Platform of remote computer 選擇 Linux x86/AMD 64;Next 
4). 輸入伺服器 IP ;Next 
5). 輸入伺服器上的 jprofiler 的安裝路徑,如 /opt/jprofiler4 ;next 
6). 選擇伺服器的 JDK 環境,這裡是:Sun,1.5.0,hotspot;next 
7). 輸入埠:這裡是預設值 8849;next 
8). 選擇啟動模式:這裡選第一種 wait for a connection from the jprofiler GUI;next 
9). 這裡會列出需要在伺服器端做的配置:

Integration type: [Generic application]
Selected JVM: Sun 1.5.0 (hotspot)
Startup mode: Wait for JProfiler GUI

(1) Please insert

-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar

into the start command of your remote application right after the java command.

(2) Please add

/opt/jprofiler4/bin/linux-x86

to the environment variable LD_LIBRARY_PATH.

A remote session named Remote application on 192.168.40.15 will be created that connects to a running instance of the remote application that is started with the modified start command.


6.伺服器端的配置
(1)修改系統環境配置檔案 /etc/profile ,增加

JPROFILER_HOME=/opt/jprofiler4/bin/linux-x86
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME


(2)修改TOMCAT啟動檔案catalina.sh,新增-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 內容到CATALINA_OPTS中;
“-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ” 此內容由客戶端軟體生成

CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar"


7.Reboot Linux and startup Tomcat using startup.sh;
   The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler> Protocol version 23
 JProfiler> Using JVMTI
 JProfiler> 32-bit library
 JProfiler> Listening on port: 8849.
 JProfiler> Native library initialized
 JProfiler> Waiting for a connection from the  JProfiler GUI 

8.啟動客戶端軟體
   點選jprofiler選單 session>start center>Open Session
   Available session configurations中列出了剛才配置的連線,選中使用就OK了!!

9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler> Using dynamic instrumentation
 JProfiler> Time measurement: elapsed time
 JProfiler> CPU profiling enabled
 JProfiler> Hotspot compiler enabled
 JProfiler> Starting org/apache/catalina/startup/Bootstrap 

10.當中斷JProfiler連線時
   The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler> Disconnected. Waiting for reconnection.
 JProfiler> Listening on port: 8849.

  經過我的測試發現了有以上一些問題
1、
)並不是將-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 加入到CATALINA_OPTS中而是加入到 JAVA_OPTS中,加入格式如下所示:
其餘步同上

  JAVA_OPTS="$JAVA_OPTS "-agentlib:jprofilerti=port=8849 
  JAVA_OPTS="$JAVA_OPTS "-Xbootclasspath/a:/opt/jprofiler5/bin/agent.jar

下面是我採用過的一個完整的配置

if [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; then
  JAVA_OPTS="$JAVA_OPTS "-Xms128m 
  JAVA_OPTS="$JAVA_OPTS "-Xmx256m
  JAVA_OPTS="$JAVA_OPTS "-XX:PermSize=32m 
  JAVA_OPTS="$JAVA_OPTS "-XX:MaxNewSize=128m 
  JAVA_OPTS="$JAVA_OPTS "-XX:MaxPermSize=64m 
    JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote
  JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote.port=9009
  JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote.authenticate=false
  JAVA_OPTS="$JAVA_OPTS "-Dcom.sun.management.jmxremote.ssl=false
  JAVA_OPTS="$JAVA_OPTS "-agentlib:jprofilerti=port=8849  
  JAVA_OPTS="$JAVA_OPTS "-Xbootclasspath/a:/opt/jprofiler5/bin/agent.jar
  JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties"
fi

Run "hostname -i" command. If it reports 127.0.0.1, JConsole would not be able to connect to the JVM running on that Linux machine. To fix this issue, edit /etc/hosts so that the hostname resolves to the host address.

馬上修改/etc/hosts,連線成功了。對於上面提到“在一個jsp中進行while (true);死迴圈”的測試,一個個執行緒檢視,發現有一個Thread在_jspService方法上始終處於Runnable狀態。看來Programmer還是得用Google 

【Linux檢視tomcat版本】

【Linux檢視tomcat版本】

一、不同的tomcat檢視版本可能不同,例如有的直接執行./version.sh就可以,其他就沒有;一般來說,在tomcat啟動時就會有版本資訊,如:

資訊: Initializing Coyote HTTP/1.1 on http-8023
2009-5-6 16:38:09 org.apache.catalina.startup.Catalina load
資訊: Initialization processed in 1673 ms
2009-5-6 16:38:10 org.apache.catalina.core.StandardService start
資訊: Starting service Catalina
2009-5-6 16:38:10 org.apache.catalina.core.StandardEngine start
資訊: Starting Servlet Engine: Apache Tomcat/6.0.16

另外還可以在以下檔案中找到,但據tomcat版本不一樣,檔案位置稍有差異:

Tomcat5:tomcat_home\server\lib\catalina.jar org\apache\catalina\util\ServerInfo.properties

Tomcat6:tomcat_home \lib\catalina.jar org\apache\catalina\util\ServerInfo.properties (這裡的兩個jar包可以下載下來用rar開啟然後再檢視。)

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

server.info=Apache Tomcat/6.0.16server.number=6.0.16.0
server.built=Jan 28 2008 11:35:29

相關推薦

Tomcat記憶體監控 JConsole / JProfiler 監控遠端linux tomcat執行情況配置

步驟如下: 1.編輯tomcat/bin/catalina.sh Bash程式碼  vi catalina.sh     在其中“ # ----- Execute The Requested Command -----------------------------------------”

windows客戶端jprofiler連線遠端Linux Tomcat出現的破解身份驗證問題

jprofiler監控Tomcat,連線時出現錯誤提示:  The JVM might have terminated unexpectedly.  If the JVM has crashed,please try the following strategies:  *

jconsole監控遠端linux tomcat執行情況配置 (轉)

步驟如下: 1.編輯tomcat/bin/catalina.sh Bash程式碼  vi catalina.sh     在其中“ # ----- Execute The Requested Command ----------------------------------

監控Jprofiler監控tomcat配置方法及報錯解決過程

could CA 監聽端口 arch https img .net http 沒有 準備工作: 1.Jprofiler for Linux安裝包一個(服務端) 2.Jprofiler for windows安裝包一個(客戶端) 3.各自安裝、解壓 Linux:/opt/jp

Java 連線遠端Linux 伺服器執行 shell 指令碼檢視 CPU、記憶體、硬碟資訊

/* * Written by wei.Li and released to the public domain * Welcome to correct discussion as explained at * * ------------------------------------------

Jmeter中使用SSH外掛,連線遠端linux機器執行命令

一、Why   在雲主機測試中,需要使用SSH協議連線雲主機進行相關操作 在python中使用paramiko庫很好實現,在如果要使用jmeter做效能測試時,怎麼做? 二、解決 既然原生jmeter沒有相關的ssh sampler,那就先按思路看看網上有沒有現成的,沒有再自己寫,googl

SSH登陸遠端Linux伺服器執行VisualVM, 進行Java效能分析

SSH登陸遠端Linux伺服器是普遍的方式,下面講述如何使用Putty,Xming工具在Windows機器上SSH登陸到Linux伺服器,並執行VisualVM視覺化介面程式,進行Java效能分析。 Step 1: 配置Linux伺服器上sshd_config檔案, 允許X

jconsole遠端監控Linux tomcat和weblogic

最近對程式進行了優化,準備拿到 Linux的虛擬機器上做一下壓力測試,碰到了一些問題,所以想看看程式的狀況,想到了Jconsole。Linux上不方便看啊,所以只能遠端。以前配置過,但感覺並不是對所有都適用。這裡結合別人的整理一下。 環境:Linux  WebLogic12c 1、修改WLS配置檔案wind

jprofiler監控linuxtomcat

AD 中間 ntp tar.gz agent The mman exec inf 1,首先下載linux和windows 的安裝軟件 https://www.ej-technologies.com/download/jprofiler/files 2,把jprofi

jprofile 監控遠端linux伺服器上tomcat 效能配置

前提條件: 1. 測試環境 伺服器:Linux X64;tomcat 7.0;jdk 1.7;jprofiler_linux_9_2.sh 客戶端:Windows10;jprofiler_windows-x64_9_2.exe 2. JProfiler軟體下載

使用Jconsole監控遠端Linux上的JVM

因為linux不支援圖形介面,因此只能在windows機器上,使用jconsole監控遠端的java程式。具體配置步驟如下:  1,首先配置環境,需要保證 /etc/hosts 檔案中設定了本機IP和域名的對映關係,原因可以檢視這裡:  http://my.oschina.net/chen106106/bl

使用visualvm遠端監控JVM LINUX tomcat伺服器與客戶端配置方法

VisualVM 是一款免費的效能分析工具。它通過 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多種方式從程式執行時獲得實時資料,從而進行動態的效能分析。同時,它能自動選擇更快更輕量級的技術儘量減少效能分析對應用程式

linuxtomcat伺服器記憶體、埠及監控使用者配置

記憶體配置: 我的伺服器的配置:  # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:P

Tomcat開啟遠端監控Jconsole配置

確認是否開啟 首先ps -ef|grep tomcat 檢視一下tomcat程序的資訊,如果出現下面的資訊 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticat

win10下通過jconsole監控遠端centos tomcat執行情況

最近在阿里雲上的執行的BS系統過一段時間就down機。突然想到在pc上經常用到jconsole和jvisualvm監控專案的執行情況。 今天先配置jconsole的遠端監控。 1、伺服器系統centos6.5 64位、jdk1.8.0_65、tomcat-7.0.65。 2

Tomcat效能調優以及遠端管理(Tomcat manager與psi-probe監控

tomcat優化的我用到的幾個點: 1.記憶體優化 2.執行緒優化 docs/config/http.html maxConnections acceptCount(配置的太大是沒有意義的) maxThreads minSpareThreads 最小空閒的工作

Nagios基於NRPE 監控遠端Linux主機

1 安裝環境: 監控段IP: 192.168.4.34 主機名:nagios.com 作業系統:CentOS release 6.8 (Final) 軟體:nagios-4.2.0,nagios-plugins-2.1.2,nrpe-2.15 被監控端IP:192.168.4.111 主機名:client

Jstatd方式遠端監控Linux下 JVM執行情況

 最近一個專案部署在伺服器上執行時出現了問題,經過排查發現是java記憶體溢位的問題,所以為了實時監控伺服器java記憶體的情況,需要遠端檢視伺服器上JVM記憶體的一些情況。另外伺服器系統是CentOS 7 最小安裝,沒有圖形化介面,不能採用vnc遠端。所以只能通過Visua

效能監控tomcat,jvisualvm遠端連線tomcat配置

在tomcat/bin 中編輯catalina.sh 新增入這樣一段程式碼 ,新增的位置在 cygwin=false darwin=false os400=false 上面,在 JAVA_HOME=/

Linux crontab的使用方式,sh指令碼的編寫,sh指令碼自動啟動tomcat伺服器,sh監控系統執行情況

1、如果想使用Linux crontab(類似java quartz),需要先啟動crontab.關於crontab的啟動、關閉、重啟、重新載入配置的方式如下: /sbin/service crond start //啟動服務 /sbin/service crond s