1. 程式人生 > >Linux下Tomcat開啟檢視GC日誌

Linux下Tomcat開啟檢視GC日誌

一、開啟GC日誌

1、在Tomcat 的安裝路徑下,找到bin/catalina.sh 加上下面的配置,具體引數,自己配置:

[[email protected] tomcat]# vim bin/catalina.sh

JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=64M -XX:MaxNewSize=128m -XX:MaxPermSize=64m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -Xloggc:/usr/local/tomcat/logs/tomcat_gc.log'

2、重啟tomcat

[
[email protected]
~]# systemctl restart tomcat

3、檢視GC日誌

[[email protected] ~]# cat /usr/local/tomcat/logs/tomcat_gc.log

在這裡插入圖片描述

二、GC日誌分析

1、windows 安裝java 環境
(1) 官網下載JDK
官網地址
在這裡插入圖片描述

下載,必須點選同意協議

(2)安裝JDK1.8版本
設定自己的安裝路徑,取消公共JRE
在這裡插入圖片描述

(3)設定3個環境變數
① 找到自己安裝jdk的bin路徑,我的安裝路徑是 C:\Program Files (x86)\Java\jdk1.8.0_181

② 在高階系統設定—>環境變數—>新建

新建2個環境變數JAVA_HOME、CLASSPATH:
JAVA_HOME

CLASSPATH

修改一個變數:Path
Path

(4)安裝完畢,測試
在cmd中輸入 java、javac、java -version 三個命令會有不同的效果

2、執行gchisto,分析gc日誌
(1)執行gchisto
解包後,開啟cmd命令列,執行下邊的命令,注意:自己解包後gchisto的路徑

java -jar D:\gchisto-master\release\GCHisto-java8.jar

(2)開啟後效果
在這裡插入圖片描述
(3)分析Tomcat 的gc 日誌
將linux 下的tomcat 日誌 匯入到windows 上的gchisto中,檢視效果
在這裡插入圖片描述

三、選項引數詳解

1、堆大小設定
① -Xmx3550m -Xms3550m -Xmn2g -Xss128k
  -Xmx3550m:設定JVM最大可用記憶體為3550M。
  -Xms3550m:設定JVM初始記憶體為3550m。此值可以設定與-Xmx相同,以避免每次垃圾回收完成後JVM重新分配記憶體。
  -Xmn2g:設定年輕代大小為2G。整個堆大小=年輕代大小 + 年老代大小 + 持久代大小。持久代一般固定大小為64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大,Sun官方推薦配置為整個堆的3/8。
  -Xss128k: 設定每個執行緒的堆疊大小。JDK5.0以後每個執行緒堆疊大小為1M,以前每個執行緒堆疊大小為256K。更具應用的執行緒所需記憶體大小進行調整。在相同實體記憶體下,減小這個值能生成更多的執行緒。但是作業系統對一個程序內的執行緒數還是有限制的,不能無限生成,經驗值在3000~5000左右。
  
② -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0

-XX:NewRatio=4:設定年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代)。設定為4,則年輕代與年老代所佔比值為1:4,年輕代佔整個堆疊的1/5
  -XX:SurvivorRatio=4:設定年輕代中Eden區與Survivor區的大小比值。設定為4,則兩個Survivor區與一個Eden區的比值為2:4,一個Survivor區佔整個年輕代的1/6
  -XX:PermSize:設定永久代(perm gen)初始值。預設值為實體記憶體的1/64。
  -XX:MaxPermSize:設定持久代最大值。實體記憶體的1/4。
  -XX:MaxTenuringThreshold=0:設定垃圾最大年齡。如果設定為0的話,則年輕代物件不經過Survivor區,直接進入年老代。對於年老代比較多的應用,可以提高效率。如果將此值設定為一個較大值,則年輕代物件會在Survivor區進行多次複製,這樣可以增加物件再年輕代的存活時間,增加在年輕代即被回收的概論。
  
2、回收器選擇
(1)吞吐量優先的並行收集器
① -XX:+UseParallelGC -XX:ParallelGCThreads=20
  -XX:+UseParallelGC:選擇垃圾收集器為並行收集器。此配置僅對年輕代有效。即上述配置下,年輕代使用併發收集,而年老代仍舊使用序列收集。
  -XX:ParallelGCThreads=20:配置並行收集器的執行緒數,即:同時多少個執行緒一起進行垃圾回收。此值最好配置與處理器數目相等。
  
② -XX:+UseParallelOldGC
  -XX:+UseParallelOldGC:配置年老代垃圾收集方式為並行收集。JDK6.0支援對年老代並行收集。
  
③ -XX:MaxGCPauseMillis=100
  -XX:MaxGCPauseMillis=100:設定每次年輕代垃圾回收的最長時間,如果無法滿足此時間,JVM會自動調整年輕代大小,以滿足此值。
  
④ -XX:+UseAdaptiveSizePolicy
  -XX:+UseAdaptiveSizePolicy:設定此選項後,並行收集器會自動選擇年輕代區大小和相應的Survivor區比例,以達到目標系統規定的最低相應時間或者收集頻率等,此值建議使用並行收集器時,一直開啟。
  
(2)響應時間優先的併發收集器
① -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
  -XX:+UseConcMarkSweepGC:設定年老代為併發收集。測試中配置這個以後,-XX:NewRatio=4的配置失效了,原因不明。所以,此時年輕代大小最好用-Xmn設定。
  -XX:+UseParNewGC:設定年輕代為並行收集。可與CMS收集同時使用。JDK5.0以上,JVM會根據系統配置自行設定,所以無需再設定此值。
  
② -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection
  -XX:CMSFullGCsBeforeCompaction:由於併發收集器不對記憶體空間進行壓縮、整理,所以執行一段時間以後會產生"碎片",使得執行效率降低。此值設定執行多少次GC以後對記憶體空間進行壓縮、整理
  -XX:+UseCMSCompactAtFullCollection:開啟對年老代的壓縮。可能會影響效能,但是可以消除碎片
  
3、輔助資訊
JVM提供了大量命令列引數,列印資訊,供除錯使用。主要有以下一些:
① -XX:+PrintGC
  輸出形式:
  [GC 118250K->113543K(130112K), 0.0094143 secs]
  [Full GC 121376K->10414K(130112K), 0.0650971 secs]
  
② -XX:+PrintGCDetails
  輸出形式:
  [GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
  [GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
  
③ -XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可與上面兩個混合使用
  輸出形式:
  11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
  
④ -XX:+PrintGCApplicationConcurrentTime:列印每次垃圾回收前,程式未中斷的執行時間。可與上面混合使用
  輸出形式:
  Application time: 0.5291524 seconds
  
⑤ -XX:+PrintGCApplicationStoppedTime:列印垃圾回收期間程式暫停的時間。可與上面混合使用
  輸出形式:
  Total time for which application threads were stopped: 0.0468229 seconds
  
⑥ -XX:PrintHeapAtGC:列印GC前後的詳細堆疊資訊
  輸出形式:
  34.702: [GC {Heap before gc invocations=7:
  def new generation total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)
  eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)
  from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)
  to space 6144K, 0% used [0x21bd0000, 0x21bd0000, 0x221d0000)
  tenured generation total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)
  the space 69632K, 3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)
  compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
  the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
  ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
  rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
  34.735: [DefNew: 52568K->3433K(55296K), 0.0072126 secs] 55264K->6615K(124928K)Heap after gc invocations=8:
  def new generation total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)
  eden space 49152K, 0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)
  from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)
  to space 6144K, 0% used [0x221d0000, 0x221d0000, 0x227d0000)
  tenured generation total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)
  the space 69632K, 4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)
  compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)
  the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)
  ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)
  rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)
  }
  , 0.0757599 secs]
  
⑦ -Xloggc:filename:與上面幾個配合使用,把相關日誌資訊記錄到檔案以便分析。

四、常見配置彙總

1、堆設定
① -Xms:初始堆大小
② -Xmx:最大堆大小
③ -XX:NewSize=n:設定年輕代大小
④ -XX:NewRatio=n:設定年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代佔整個年輕代年老代和的1/4
⑤ -XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區佔整個年輕代的1/5
⑥ -XX:MaxPermSize=n:設定持久代大小

2、收集器設定
① -XX:+UseSerialGC:設定序列收集器
② -XX:+UseParallelGC:設定並行收集器
③ -XX:+UseParalledlOldGC:設定並行年老代收集器
④ -XX:+UseConcMarkSweepGC:設定併發收集器

3、垃圾回收統計資訊
① -XX:+PrintGC
② -XX:+PrintGCDetails
③ -XX:+PrintGCTimeStamps
④ -Xloggc:filename

4、並行收集器設定
① -XX:ParallelGCThreads=n:設定並行收集器收集時使用的CPU數。並行收集執行緒數。
② -XX:MaxGCPauseMillis=n:設定並行收集最大暫停時間
③ -XX:GCTimeRatio=n:設定垃圾回收時間佔程式執行時間的百分比。公式為1/(1+n)

5、併發收集器設定
① -XX:+CMSIncrementalMode:設定為增量模式。適用於單CPU情況。
② -XX:ParallelGCThreads=n:設定併發收集器年輕代收集方式為並行收集時,使用的CPU數。並行收集執行緒數。

五、調優總結

1、年輕代大小選擇
響應時間優先的應用:儘可能設大,直到接近系統的最低響應時間限制(根據實際情況選擇)。在此種情況下,年輕代收集發生的頻率也是最小的。同時,減少到達年老代的物件。

吞吐量優先的應用:儘可能的設定大,可能到達Gbit的程度。因為對響應時間沒有要求,垃圾收集可以並行進行,一般適合8CPU以上的應用。

2、年老代大小選擇
響應時間優先的應用:年老代使用併發收集器,所以其大小需要小心設定,一般要考慮併發會話率和會話持續時間等一些引數。如果堆設定小了,可以會造成記憶體碎片、高回收頻率以及應用暫停而使用傳統的標記清除方式;如果堆大了,則需要較長的收集時間。最優化的方案,一般需要參考以下資料獲得:

  • 併發垃圾收集資訊
  • 持久代併發收集次數
  • 傳統GC資訊
  • 花在年輕代和年老代回收上的時間比例
  • 減少年輕代和年老代花費的時間,一般會提高應用的效率

吞吐量優先的應用:一般吞吐量優先的應用都有一個很大的年輕代和一個較小的年老代。原因是,這樣可以儘可能回收掉大部分短期物件,減少中期的物件,而年老代盡存放長期存活物件。

3、較小堆引起的碎片問題
  因為年老代的併發收集器使用標記、清除演算法,所以不會對堆進行壓縮。當收集器回收時,他會把相鄰的空間進行合併,這樣可以分配給較大的物件。但是,當堆空間 較小時,執行一段時間以後,就會出現"碎片",如果併發收集器找不到足夠的空間,那麼併發收集器將會停止,然後使用傳統的標記、清除方式進行回收。如果出 現"碎片",可能需要進行如下配置:
-XX:+UseCMSCompactAtFullCollection:使用併發收集器時,開啟對年老代的壓縮。
-XX:CMSFullGCsBeforeCompaction=0:上面配置開啟的情況下,這裡設定多少次Full GC後,對年老代進行壓縮

六、相關概念

1、分代垃圾回收詳述
(1)Young(年輕代)
  年輕代分三個區。**一個Eden區,兩個Survivor區。**大部分物件在Eden區中生成。當Eden區滿時,還存活的物件將被複制到Survivor區 (兩個中的一個),當這個Survivor區滿時,此區的存活物件將被複制到另外一個Survivor區,當這個Survivor去也滿了的時候,從第一 個Survivor區複製過來的並且此時還存活的物件,將被複制"年老區(Tenured)"。需要注意,Survivor的兩個區是對稱的,沒先後關係,所以同一個區中可能同時存在從Eden複製過來 物件,和從前一個Survivor複製過來的物件,而複製到年老區的只有從第一個Survivor去過來的物件。而且,Survivor區總有一個是空 的。
  
(2)Tenured(年老代)
  年老代存放從年輕代存活的物件。一般來說年老代存放的都是生命期較長的物件。
  
(3)Perm(持久代)
  用於
存放靜態檔案
,如今Java類、方法等。持久代對垃圾回收沒有顯著影響,但是有些應用可能動態生成或者呼叫一些class,例如Hibernate等, 在這種時候需要設定一個比較大的持久代空間來存放這些執行過程中新增的類。持久代大小通過-XX:MaxPermSize=進行設定。
  
2、GC型別
GC有兩種型別:Scavenge GC和Full GC。
(1)Scavenge GC
  一般情況下,當新物件生成,並且在Eden申請空間失敗時,就好觸發Scavenge GC,堆Eden區域進行GC,清除非存活物件,並且把尚且存活的物件移動到Survivor區。然後整理Survivor的兩個區。
  
(2)Full GC
  對整個堆進行整理,包括Young、Tenured和Perm。Full GC比Scavenge GC要慢,因此應該儘可能減少Full GC。有如下原因可能導致Full GC:

  • Tenured被寫滿
  • Perm域被寫滿
  • System.gc()被顯示呼叫
  • 上一次GC之後Heap的各域分配策略動態變化

3、垃圾回收器
目前的收集器主要有三種:序列收集器、並行收集器、併發收集器
(1)序列收集器
  使用單執行緒處理所有垃圾回收工作,因為無需多執行緒互動,所以效率比較高。但是,也無法使用多處理器的優勢,所以此收集器適合單處理器機器。當然,此收集器也可以用在小資料量(100M左右)情況下的多處理器機器上。可以使用-XX:+UseSerialGC開啟。
  
(2)並行收集器
① 對年輕代進行並行垃圾回收,因此可以減少垃圾回收時間。一般在多執行緒多處理器機器上使用。使用-XX:+UseParallelGC開啟。並行收集器在J2SE5.0第六6更新上引入,在Java SE6.0中進行了增強–可以堆年老代進行並行收集。如果年老代不使用併發收集的話,是使用單執行緒進行垃圾回收,因此會制約擴充套件能力。使用-XX:+UseParallelOldGC開啟。

② 使用-XX:ParallelGCThreads=設定並行垃圾回收的執行緒數。此值可以設定與機器處理器數量相等。

③ 此收集器可以進行如下配置:

  • 最大垃圾回收暫停:指定垃圾回收時的最長暫停時間,通過-XX:MaxGCPauseMillis=指定。為毫秒.如果指定了此值的話,堆大小和垃圾回收相關引數會進行調整以達到指定值。設定此值可能會減少應用的吞吐量。
  • 吞吐量:吞吐量為垃圾回收時間與非垃圾回收時間的比值,通過-XX:GCTimeRatio=來設定,公式為1/(1+N)。例如,-XX:GCTimeRatio=19時,表示5%的時間用於垃圾回收。預設情況為99,即1%的時間用於垃圾回收。

(3)併發收集器
可以保證大部分工作都併發進行(應用不停止),垃圾回收只暫停很少的時間,此收集器適合對響應時間要求比較高的中、大規模應用。使用-XX:+UseConcMarkSweepGC開啟。

① 併發收集器主要減少年老代的暫停時間,他在應用不停止的情況下使用獨立的垃圾回收執行緒,跟蹤可達物件。在每個年老代垃圾回收週期中,在收集初期併發收集器會 對整個應用進行簡短的暫停,在收集中還會再暫停一次。第二次暫停會比第一次稍長,在此過程中多個執行緒同時進行垃圾回收工作。

② 併發收集器使用處理器換來短暫的停頓時間。在一個N個處理器的系統上,併發收集部分使用K/N個可用處理器進行回收,一般情況下1<=K<=N/4

③ 在只有一個處理器的主機上使用併發收集器,設定為incremental mode模式也可獲得較短的停頓時間。

④ 浮動垃圾:由於在應用執行的同時進行垃圾回收,所以有些垃圾可能在垃圾回收進行完成時產生,這樣就造成了"Floating Garbage",這些垃圾需要在下次垃圾回收週期時才能回收掉。所以,併發收集器一般需要20%的預留空間用於這些浮動垃圾

⑤ Concurrent Mode Failure:併發收集器在應用執行時進行收集,所以需要保證堆在垃圾回收的這段時間有足夠的空間供程式使用,否則,垃圾回收還未完成,堆空間先滿了。這種情況下將會發生"併發模式失敗",此時整個應用將會暫停,進行垃圾回收。

⑥ 啟動併發收集器:因為併發收集在應用執行時進行收集,所以必須保證收集完成之前有足夠的記憶體空間供程式使用,否則會出現"Concurrent Mode Failure"。通過設定-XX:CMSInitiatingOccupancyFraction=指定還有多少剩餘堆時開始執行併發收集

(4)小結
① 序列處理器:
–適用情況:資料量比較小(100M左右);單處理器下並且對響應時間無要求的應用。
–缺點:只能用於小型應用

② 並行處理器:
–適用情況:“對吞吐量有高要求”,多CPU、對應用響應時間無要求的中、大型應用。舉例:後臺處理、科學計算。
–缺點:應用響應時間可能較長

③ 併發處理器:
–適用情況:“對響應時間有高要求”,多CPU、對應用響應時間有較高要求的中、大型應用。舉例:Web伺服器/應用伺服器、電信交換、整合開發環境。

4、基本回收演算法
(1)引用計數(Reference Counting)

比較古老的回收演算法。原理是此物件有一個引用,即增加一個計數,刪除一個引用則減少一個計數。垃圾回收時,只用收集計數為0的物件。此演算法最致命的是無法處理迴圈引用的問題。

(2)標記-清除(Mark-Sweep)

此演算法執行分兩階段。第一階段從引用根節點開始標記所有被引用的物件,第二階段遍歷整個堆,把未標記的物件清除。此演算法需要暫停整個應用,同時,會產生記憶體碎片。

(3)複製(Copying)

此演算法把記憶體空間劃為兩個相等的區域,每次只使用其中一個區域。垃圾回收時,遍歷當前使用區域,把正在使用中的物件複製到另外一個區域中。次演算法每次只處理 正在使用中的物件,因此複製成本比較小,同時複製過去以後還能進行相應的記憶體整理,不過出現"碎片"問題。當然,此演算法的缺點也是很明顯的,就是需要兩倍 記憶體空間。

(4)標記-整理(Mark-Compact)

此演算法結合了"標記-清除"和"復 制"兩個演算法的優點。也是分兩階段,第一階段從根節點開始標記所有被引用物件,第二階段遍歷整個堆,把清除未標記物件並且把存活物件"壓縮"到堆的其中一 塊,按順序排放。此演算法避免了"標記-清除"的碎片問題,同時也避免了"複製"演算法的空間問題。

(5)增量收集(Incremental Collecting)

實施垃圾回收演算法,即:在應用進行的同時進行垃圾回收。不知道什麼原因JDK5.0中的收集器沒有使用這種演算法的。

(6)分代(Generational Collecting)

基於對物件生命週期分析後得出的垃圾回收演算法。把物件分為年青代、年老代、持久代,對不同生命週期的物件使用不同的演算法(上述方式中的一個)進行回收。現在的垃圾回收器(從J2SE1.2開始)都是使用此演算法的。

相關推薦

LinuxTomcat開啟檢視GC日誌

一、開啟GC日誌 1、在Tomcat 的安裝路徑下,找到bin/catalina.sh 加上下面的配置,具體引數,自己配置: [[email protected] tomcat]# vim bin/catalina.sh JAVA_OPTS='-Xms

LinuxTomcat 在控制檯輸出日誌資訊

在linux下啟動tomcat用bin目錄下的命令#catalina.sh run這樣在文字模式下可以直接看到程式執行時後臺的控制檯輸出資訊,不必每次都要很麻煩的開啟catalina.out日誌檔案進行檢視。

LinuxTomcat控制檯輸出及日誌中文亂碼問題的解決

 剛寫了個定時器,呼叫網上流傳的飛信API,實現每天每週的固定時間給特定的手機號上發簡訊提醒的功能。按照網上資料,使用的Servlet監聽器+Timer類。       剛開始完全照搬人家的例子,倒也正常。後來查API時看到到Timer有個方法: "void sche

linux各種方法檢視tomcat日誌以及檢視檔案內容指令

寬巨集大量,是惟一能夠照亮偉大靈魂的光芒。——《巴黎聖母院》 1、引言 本週在Linux部署springboot專案的時候,採用自動化部署,一直以來都採用jar包的部署方式,本次採用war包的方式部署到tomcat容器。雖然我在專案中配置了Log

實時檢視linuxtomcat執行日誌

在linux上部署專案時,啟動tomcat,經常只能看到如下的顯示: 如果專案出了什麼bug或者報了什麼異常,我們很難看到出錯的提示資訊,怎麼樣才能看到類似windows上的tomcat或者eclipse上執行時那樣實時看到出錯提示呢? 方法如下: 進入你tom

LinuxTomcat重新啟動 和檢視日誌

Linux下Tomcat重新啟動 在Linux系統下,重啟Tomcat使用命令操作的! 首先,進入Tomcat下的bin目錄 cd /usr/local/tomcat/bin 使用Tomcat關閉命令 ./shutdown.sh 檢視Tomcat是否以

LinuxTomcat檢視執行日誌並設定開機自啟

開啟tomcat cd /usr/system/apache-tomcat-7.0.62 /usr/system/apache-tomcat-7.0.62/bin/startup.sh 關閉tomcat /usr/system/apache-tomcat-7.0.62/b

linux tomcat 日誌亂碼/中文鏈接404

sysconf pts body linu bsp uri 引用 設置 red 1 日誌亂碼: JDK引用的設置 Java引用參數添加”-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8” 將上面參數添加到Catalina.sh中J

LinuxTomcat重新啟動 和查看日誌

home sta oca tps 關閉 異常 後繼 trap grep 轉載:https://blog.csdn.net/wangchaoyong5566/article/details/52817617?utm_source=blogkpcl6 Linux下Tomcat重

linuxtomcat日誌切割

       在Linux系統下,tomcat日誌預設輸出到catalina.out,隨著時間的推移,catalina.out會持續增大,不方便管理和查詢。本文將介紹如何用 cronolog工具進行日誌按日期分割。 一、安裝cronolog

Linuxtomcat日誌列印和傳參亂碼問題

             當前環境: Linux核心:Ubuntu(烏班圖) SSH連線工具:SecureCRT   1、首先確認Linux系統編碼: Linux命令:locale 若查詢結果不是zh_CN.UTF-8,則修改

Linux啟動停止檢視殺死Tomcat程序

啟動 一般是執行tomcat/bin/startup.sh,sh tomcat/bin/startup.sh 停止 一般是執行 sh tomcat/bin/shutdown.sh指令碼命令 檢視 執行ps -ef |grep tomcat 輸出如下 sun 5144

LinuxTomcat日誌自動定時打包完美實現

一、場景 1、環境 CentOS 7.0,Tomcat 8.0.33 ,(jdk-1.8.0_171) 2、目的 隨著時間推移,tomcat下的日誌檔案catalina.out越來越大,當檢視日誌時效率低下。所以,為了方便日誌的查閱,將catalina.out

LinuxTomcat日誌啟動命令

在Linux環境下,啟動Tomcat時我們需要在啟動過程中看到日誌資訊。可以通過下面命令啟動Tocmat。 ./startup.sh; tailf ../logs/catalina.out 或者 ./startup.sh && tail

LinuxTomcat日誌定期清理 及 logrotate 配置

伺服器上的tomcat的catalina.out檔案越來越大,檢視起來很不方便,以前每次都是想起來的時候手工清理一下(cat /dev/null > catalina.out),後來發現了logratate這個工具,Ubuntu下的mysql,nginx好像也是用的這個工具還定期整理log的。配置檔案為

LinuxTomcat設置內存解決內存溢出

logs server nco gen exec space 設置 xms mem 最近使用tomcat做服務器,項目中有個導入excel,數據大約2萬左右。在本地eclipse調試導入沒問題。 但是部署到linxu後就報 "http-bio-8080-exec-4" j

linux tomcat的安裝

無法訪問 用戶 variable 瀏覽器中 sys exp 開始 col gin 寫在前面: 由於項目使用jdk1.6開發,所以對應服務器應安裝jdk1.6和tomcat6 1、環境變量的配置: 打開/etc/bashrc配置環境變量 JAVA_HOME=/us

Linuxtomcat無法啟動/啟動後無法用過127.0.0.1:8080訪問解決方案

clas java require com 自己的 bug jpda force comm 啟動tomcat情況如下: [email protected]:/usr/local/tomcat/apache-tomcat-8.5.20/bin# ./catalina

Linux tomcat基於nginx做負載均衡

tomcat 負載 測試目的:在一臺裝有nginx服務器上訪問nginx這臺的ip地址,刷新一次就會顯示後端三臺不同的tomcat服務器的測試頁。測試環境:三臺centos 6.8 一臺 centos 7.3軟件版本: nginx 1.12.1

LinuxTomcat開機自動啟動

權限 esc ref 進程 chkconfig lin 自啟動腳本 lock cas linux下tomcat開機自動啟動有兩種方法,一種是簡單,一種是復雜而又專業的,使用shell腳本要實現,我們一般推薦shell腳本啟動方式。下面我們分別介紹這兩種方法。 1.shel