Tomcat記憶體監控 JConsole / JProfiler 監控遠端linux tomcat執行情況的配置
步驟如下:
1.編輯tomcat/bin/catalina.sh
Bash程式碼- vi catalina.sh
在其中“
# ----- Execute The Requested Command -----------------------------------------”
之前插入新的一行(中間沒有換行),內容如下:
Vi catalina.sh程式碼-
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=jdzz10.ucjoy.com -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxrem
- ote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
插入後,應該如圖:
(其中的選中部分為新增內容)
2.編輯jmxremote.access和jmxremote.password
Bash程式碼- cd /usr/java/jdk1.6.0_18/jre/lib/management
- mv jmxremote.password.template jmxremote.password
-
chmod 600 jmxremote.access jmxremote.password
- vi jmxremote.password
jmxremote.access 一般保持原始內容不變即可。
對於jmxremote.password,將 其中的:
# monitorRole mzxwswj
# controlRole mzxwswj
井號註釋取消掉。其中monitorRole為只擁有隻讀許可權的角色,controlRole有更高許可權:讀寫等等。
3.
a.最後將埠加入防火牆信任列表
Bash程式碼- vi /etc/sysconfig/iptables
編輯iptables,加入新一行內容:-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 12345 -j ACCEPT
如圖(選中內容為新增的):
b.啟動tomcat
- /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). 這裡會列出需要在伺服器端做的配置:
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 ,增加
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 ” 此內容由客戶端軟體生成
7.Reboot Linux and startup Tomcat using startup.sh;
The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:
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 instrumentationJProfiler> 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> Listening on port: 8849.
經過我的測試發現了有以上一些問題
1、)並不是將-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 加入到CATALINA_OPTS中而是加入到 JAVA_OPTS中,加入格式如下所示:
其餘步同上
JAVA_OPTS="$JAVA_OPTS "-Xbootclasspath/a:/opt/jprofiler5/bin/agent.jar
下面是我採用過的一個完整的配置
if [ -r "$CATALINA_HOME"/bin/tomcat-juli.jar ]; thenJAVA_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監控linux上tomcat
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 等多種方式從程式執行時獲得實時資料,從而進行動態的效能分析。同時,它能自動選擇更快更輕量級的技術儘量減少效能分析對應用程式
linux下tomcat伺服器記憶體、埠及監控使用者配置
記憶體配置: 我的伺服器的配置: # 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