1、tomcat 的重要性
2、學習重點:tomcat 安裝、tomcat 常用配置、日誌配置以及檢視、jvm調優
3、tomcat 和 jvm 關係
j**aee 企業版 做**
j**ase 標準版 做電腦軟體
j**ame 微型版 做手機軟體
jdk j**a開發和執行環境 ?jdk =j**a開發工具 + jre
★如果8005埠不啟動,訪問8080不正常,並且也無法shutdown
解決辦法如下:
編輯$j**a_home/jre/lib/security/j**a.security
將securerandom.source=file:/dev/random,改為
securerandom.source=file:/dev/urandom
1、tomcat ?單機多例項
·安裝 tomcat
·tomcat 目錄建立兩個**目錄
·將 conf、logs、webapp、temp、work 分別拷貝兩個目錄中去
·在兩個目錄中分別配置 server.xml
·配置多例項啟動指令碼,兩個目錄下分別建立 tomcat.sh
·啟動指令碼賦許可權
·分別 cd 到 tomcat.sh 所在目錄下在執行 tmocat.sh
2、tomcat的 jvm 設定和連線數設定
1)、錯誤提示:j**a.lang.outofmemoryerror: j**a heap space
linux 環境下修改「%tomcat_home%\bin\catalina.sh」檔案
在檔案開頭增加如下設定:j**a_opts=』-xms256m -xmx512m』
其中,-xms設定初始化記憶體大小,-xmx設定可以使用的最大記憶體。
2)、錯誤提示:j**a.lang.outofmemoryerror: permgen space
在catalina.sh的第一行增加:
j**a_opts=-xms64m -xmx256m -xx:permsize=128m -xx:maxnewsize=256m -
xx:maxpermsize=256m
3)、jvm設定
堆的尺寸
-xmssize in bytes
設定j**a堆的初始尺寸,預設尺寸是2097152 (2mb)。這個值必須是1024個位元組(1kb)的倍數,且比它大。(-server選項把預設尺寸增加到32m。)
-xmnsize in bytes
為eden物件設定初始j**a堆的大小,預設值為640k。(-server選項把預設尺寸增加到2m。)
-xmxsize in bytes
設定j**a堆的最大尺寸,預設值為64m,
tomcat連線數設定
在tomcat配置檔案server.xml中的配置中,和連線數相關的引數有:
minprocessors:最小空閒連線線程數,用於提高系統處理效能,預設值為10
maxprocessors:最大連線線程數,即:併發處理的最大請求數,預設值為75
acceptcount:允許的最大連線數,應大於等於maxprocessors,預設值為100
enablelookups:是否反查網域名稱,取值為:true或false。為了提高處理能力,應設定為false
connectiontimeout:網路連線超時,單位:毫秒。設定為0表示永不超時,這樣設定有隱患的。通常可設定為30000毫秒。
·其中和最大連線數相關的引數為maxprocessors和acceptcount。如果要加大併發連線數,應同時加大這兩個引數
3、jmx 監控 tomcat
jmx是j**a management extensions的簡寫,翻譯為j**a管理擴充套件。jmx主要用來幫助我們監控jvm(j**a虛擬機器)。
如何tomcat伺服器上開啟jmx?
1)編輯catalina.sh
# vim /usr/local/tomcat/bin/catalina.sh
# 在#!/bin/bash下面增加:
export catalina_opts="$catalina_opts -dcom.sun.management.jmxremote
-dj**a.rmi.server.hostname=192.168.18.101
-dcom.sun.management.jmxremote.port=9999
-dcom.sun.management.jmxremote.ssl=false
-dcom.sun.management.jmxremote.authenticate=false"
2)重啟tomcat
# /usr/local/tomcat/bin/shutdown.sh
# /usr/local/tomcat/bin/startup.sh
3)檢測監聽埠
# netstat -ltnp |grep 9999
windows上安裝乙個jconsole
-- 安裝後,找到jdk安裝路徑,進入bin資料夾,然後找到jconsole.exe檔案雙擊執行起。輸入jmx的ip:port連線
-- 然後點選「不安全的連線」,進入jconsole介面:
-- 這樣可以看到記憶體、執行緒、類等資訊
4、jvm 效能調優監控工具 jps/jstack/jmap/jhat/jstat
現實企業級j**a開發中碰到的問題:
outofmemoryerror,記憶體不足
記憶體洩露
執行緒死鎖
鎖爭用(lock contention)
j**a程序消耗cpu過高
1)jps
jps?[options]?[hostid]
如果不指定hostid就預設為當前主機或伺服器。
-q?不輸出類名、jar名和傳入main方法的引數
-m?輸出傳入main方法的引數
-l?輸出main類或jar的全限名
-v?輸出傳入jvm的引數
2)jstack
jstack主要用來檢視某個j**a程序內的執行緒堆疊資訊。語法格式如下:
jstack?[option]?pid
jstack?[option]?executable?core
jstack?[option]?[server-id@]remote-hostname-or-ip
-l?long?listings,會列印出額外的鎖資訊,在發生死鎖時可以用jstack?-l?pid來觀察鎖持有情況
-m?mixed?mode,不僅會輸出j**a堆疊資訊,還會輸出c/c++堆疊資訊(比如native方法)
3)jmap、jhat
jmap(memory map)和jhat(j**a heap analysis tool)
jmap用來檢視堆記憶體使用狀況,一般結合jhat使用
4)jstat(jvm統計監測工具)
語法格式如下:
jstat [ generaloption | outputoptions vmid [interval[s|ms] [count]] ]
5、**m gc 相關
1.程式執行過程當中,會建立大量物件,大部分是短週期物件,小部分是長週期物件,對於短週期的物件,需要頻繁進行垃圾**以保證無用物件盡早被釋放掉,長週期物件,不需要頻繁垃圾**以確保無謂地垃圾掃瞄檢測。為解決這種矛盾,sun jvm的記憶體管理採用分代的策略。
1)年輕代(young gen)
2)年老代(tenured gen)
3)持久代(perm gen)
2.總結
1)物件優先在eden分配,這裡大部分物件具有朝生夕滅的特徵,minor gc主要清理該處
2)大物件(佔記憶體大)、老物件(使用頻繁)
3)survivor無法容納的物件,將進入老年代,full gc的主要清理該處
tomcat記憶體溢位
uC OSII的任務 學習筆記
uc osii 的任務 從任務儲存結構來看,由三部分構成 任務程式 任務堆疊和任務控制塊。任務控制塊用來儲存任務屬性,任務堆疊用來儲存任務工作環境,任務程式 是任務的執行部分。void main 前乙個任務控制塊的指標 後乙個任務控制塊的指標 指向任務的指標 指向任務堆疊的指標 任務的優先級別 任務...
《管理概論》第一周 課堂筆記與學習心得
課堂筆記 一 管理及其功能 1.管理是實現目標的一種手段,是由計畫 組織 領導 控制等職能組成的過程 2.管理的表現形式 吃飯應酬 公關 開會討論 決策 計畫組織 分配資源 與人談話 做思想工作 審核簽字 監督把關 考核獎懲 激勵 3.管理的工作內容 分析公關 協調組織與組織之間關係 決策 協調目標...
spring任務排程器的學習筆記
一 基本框架 任務排程器是很多應用系統的幕後功臣,spring的任務排程器是基於對著名的quartz的封裝。其基本框架是 img 二 加入支援 主要是quartz jar包,及相關的包 三 編寫第乙個程式 需要特別這此編寫的 並不多,只需要寫工作 job 類,trigger和scheduler都由s...