0530課的學習任務 + 課堂筆記

1、tomcat 的重要性

2、學習重點:tomcat 安裝、tomcat 常用配置、日誌配置以及查看、JVM調優

3、tomcat 和 JVM 關係

https://github.com/aminglinux/tomcat

JAVAEE 企業版 做網站

JAVASE 標準版 做電腦軟件

JAVAME 微型版 做手機軟件

JDK java開發和運行環境  JDK =java開發工具 + JRE


★如果8005端口不啓動,訪問8080不正常,並且也無法shutdown

解決辦法如下:

編輯$JAVA_HOME/jre/lib/security/Java.security

將securerandom.source=file:/dev/random,改爲

securerandom.source=file:/dev/urandom


1、tomcat  單機多實例

http://www.ttlsa.com/tomcat/config-multi-tomcat-instance/

·安裝 tomcat

·tomcat 目錄創建兩個網站目錄

·將 conf、logs、webapp、temp、work 分別拷貝兩個目錄中去

·在兩個目錄中分別配置 server.xml

·配置多實例啓動腳本,兩個目錄下分別創建 tomcat.sh

·啓動腳本賦權限

·分別 cd 到 tomcat.sh 所在目錄下在執行 tmocat.sh


2、tomcat的 jvm 設置和連接數設置

http://www.cnblogs.com/bluestorm/archive/2013/04/23/3037392.html

1)、錯誤提示:java.lang.OutOfMemoryError: Java heap space

Linux 環境下修改“%TOMCAT_HOME%\bin\catalina.sh”文件

在文件開頭增加如下設置:JAVA_OPTS=’-Xms256m -Xmx512m’

其中,-Xms設置初始化內存大小,-Xmx設置可以使用的最大內存。

2)、錯誤提示:java.lang.OutOfMemoryError: PermGen space

在catalina.sh的第一行增加:

JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -

XX:MaxPermSize=256m

3)、JVM設置

堆的尺寸

-Xmssize in bytes

設定Java堆的初始尺寸,缺省尺寸是2097152 (2MB)。這個值必須是1024個字節(1KB)的倍數,且比它大。(-server選項把缺省尺寸增加到32M。)

-Xmnsize in bytes

爲Eden對象設定初始Java堆的大小,缺省值爲640K。(-server選項把缺省尺寸增加到2M。)

-Xmxsize in bytes

設定Java堆的最大尺寸,缺省值爲64M,

Tomcat連接數設置

在tomcat配置文件server.xml中的<Connector ... />配置中,和連接數相關的參數有:

minProcessors:最小空閒連接線程數,用於提高系統處理性能,默認值爲10

maxProcessors:最大連接線程數,即:併發處理的最大請求數,默認值爲75

acceptCount:允許的最大連接數,應大於等於maxProcessors,默認值爲100

enableLookups:是否反查域名,取值爲:true或false。爲了提高處理能力,應設置爲false

connectionTimeout:網絡連接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。通常可設置爲30000毫秒

·其中和最大連接數相關的參數爲maxProcessors和acceptCount。如果要加大併發連接數,應同時加大這兩個參數


3、jmx 監控 tomcat

http://ask.apelearn.com/question/23469

JMX是Java Management Extensions的簡寫,翻譯爲Java管理擴展。JMX主要用來幫助我們監控JVM(java虛擬機)。

如何Tomcat服務器上開啓JMX?

1)編輯catalina.sh

# vim /usr/local/tomcat/bin/catalina.sh

# 在#!/bin/bash下面增加:

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote

-Djava.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

http://blog.csdn.net/wisgood/article/details/25343845

http://guafei.iteye.com/blog/1815222

現實企業級Java開發中碰到的問題:

OutOfMemoryError,內存不足

內存泄露

線程死鎖

鎖爭用(Lock Contention)

Java進程消耗CPU過高

1)jps

jps [options] [hostid]

如果不指定hostid就默認爲當前主機或服務器。

-q 不輸出類名、Jar名和傳入main方法的參數

-m 輸出傳入main方法的參數

-l 輸出main類或Jar的全限名

-v 輸出傳入JVM的參數

2)jstack

jstack主要用來查看某個Java進程內的線程堆棧信息。語法格式如下:

jstack [option] pid

jstack [option] executable core

jstack [option] [server-id@]remote-hostname-or-ip

-l long listings,會打印出額外的鎖信息,在發生死鎖時可以用jstack -l pid來觀察鎖持有情況

-m mixed mode,不僅會輸出Java堆棧信息,還會輸出C/C++堆棧信息(比如Native方法)

3)jmap、jhat

jmap(Memory Map)和jhat(Java Heap Analysis Tool)

jmap用來查看堆內存使用狀況,一般結合jhat使用

4)jstat(JVM統計監測工具)

語法格式如下:

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]


5、gvm gc 相關

http://www.cnblogs.com/Mandylover/p/5208055.html

http://blog.csdn.net/yohoph/article/details/42041729

1.程序運行過程當中,會創建大量對象,大部分是短週期對象,小部分是長週期對象,對於短週期的對象,需要頻繁進行垃圾回收以保證無用對象儘早被釋放掉,長週期對象,不需要頻繁垃圾回收以確保無謂地垃圾掃描檢測。爲解決這種矛盾,Sun JVM的內存管理採用分代的策略。

1)年輕代(Young Gen)

2)年老代(Tenured Gen)

3)持久代(Perm Gen)

2.總結

1)對象優先在Eden分配,這裏大部分對象具有朝生夕滅的特徵,Minor GC主要清理該處

2)大對象(佔內存大)、老對象(使用頻繁)

3)Survivor無法容納的對象,將進入老年代,Full GC的主要清理該處

tomcat內存溢出

https://blog.csdn.net/ye1992/article/details/9344807



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章