把大象裝進(jìn)冰箱需要幾個(gè)步驟:
- 修改catalina.sh:
jdk7以及jdk7以下:
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path"
jdk8以及jdk8以上
JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path"
說明:
- -server參數(shù):表示以服務(wù)模式啟動,啟動速度會稍微慢一點(diǎn),但性能會高很多。不加這個(gè)參數(shù),默認(rèn)是以客戶端模式啟動。
- java.awt.headless=true參數(shù):與圖形操作有關(guān),適用于linux系統(tǒng)。如生成驗(yàn)證碼,含義是當(dāng)前使用的是沒有安裝圖安裝圖形界面的服務(wù)器,應(yīng)用中如果獲取系統(tǒng)顯示有關(guān)參數(shù)會拋異常。
- -XX:PermSize設(shè)置永久代初始值,默認(rèn)是物理內(nèi)存的1/64。java1.8以后不起作用了,改成了元空間,對應(yīng)參數(shù)-XX:MetaspaceSize
- -XX:MetaspaceSize,初始空間大小,達(dá)到該值就會觸發(fā)垃圾收集進(jìn)行類型卸載,同時(shí)GC會對該值進(jìn)行調(diào)整:如果釋放了大量的空間,就適當(dāng)降低該值;如果釋放了很少的空間,那么在不超過MaxMetaspaceSize時(shí),適當(dāng)提高該值。
- -XX:MaxMetaspaceSize,最大空間,默認(rèn)是沒有限制的。
- XX:MaxPermSize設(shè)置最大非堆內(nèi)存的大小,默認(rèn)是物理內(nèi)存的1/4。java1.8以后不起作用了,改成了元空間,對應(yīng)參數(shù) -XX:MaxMetaspaceSize
- -Xms、-Xmx:JVM內(nèi)存設(shè)置(堆內(nèi)存)。
ps:這兩組最好設(shè)置成一樣的,避免上下文切換消耗資源。JDK8+永久代已經(jīng)換成了元空間,PermSize MaxPermSize這兩個(gè)參數(shù)沒用了。 - -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path oom時(shí)打印dump文件到指定路徑
- 更改server.xml
<Connector
port="8080"
protocol="org.apache.coyote.http11.Http11NioProtocol"
enableLookups="false"
maxThreads="1000"
minSpareThreads="100"
acceptCount="5000"
disableUploadTimeout="true"
connectionTimeout="30000"
URIEncoding="UTF-8"
redirectPort="8443"
compression="on"
compressionMinSize="1024"
useSendfile="false"
noCompressionUserAgents="gozilla, traviata"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript " />
說明:
- org.apache.coyote.http11.Http11NioProtocol:調(diào)整工作模式為Nio
- maxThreads:最大線程數(shù),默認(rèn)150。增大值避免隊(duì)列請求過多,導(dǎo)致響應(yīng)緩慢。
- minSpareThreads:最小空閑線程數(shù)。
- acceptCount:當(dāng)處理請求超過此值時(shí),將后來請求放到隊(duì)列中等待。
- disableUploadTimeout:禁用上傳超時(shí)時(shí)間
- connectionTimeout:連接超時(shí),單位毫秒,0代表不限制
- URIEncoding:URI地址編碼使用UTF-8
- enableLookups:關(guān)閉dns解析,提高響應(yīng)時(shí)間
- compression:啟用壓縮功能
- compressionMinSize:最小壓縮大小,單位Byte
- compressibleMimeType :壓縮的文件類型
- noCompressionUserAgents: 對 gozilla, traviata 這兩個(gè)瀏覽器不啟用壓縮。
- useSendfile:默認(rèn)為true。如果啟用此功能,則發(fā)送會優(yōu)先于壓縮。