一、有時候tomcat虛擬主機在在自建目錄文件docBase裏,重啓沒法啓動的:php
註釋:Tomcat自己不能直接在計算機上運行,須要依賴於硬件基礎之上的操做系統和一個Java虛擬機。Tomcat的內存溢出本質就是JVM內存溢出,html
當應用程序須要的內存超出堆的最大值時JVM就會提示內存溢出,而且致使應用服務崩潰。因此,若是Xms超過了Xmx值,或者堆最大值和非堆最大值的總和超過了物理內存或者操做系統的最大限制都會引發服務器啓動不起來。java
[root@localhost_02 conf]# ../bin/shutdown.sh ^[[AUsing CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/jdk1.8 Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar ^[[B九月 01, 2018 10:03:56 下午 org.apache.catalina.startup.Catalina stopServer 嚴重: Could not contact [localhost:[8005]]. Tomcat may not be running. 九月 01, 2018 10:03:56 下午 org.apache.catalina.startup.Catalina stopServer 嚴重: Catalina.stop: java.net.ConnectException: 拒絕鏈接 (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at java.net.Socket.connect(Socket.java:538) at java.net.Socket.<init>(Socket.java:434) at java.net.Socket.<init>(Socket.java:211) at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:497) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:498)
註釋:並且8080端口開了,8009d端口過會會自動關閉,8005端口一直起不來:apache
查看後發現內存變小了:bootstrap
[root@localhost_02 bin]# free -m total used free shared buff/cache available Mem: 976 404 76 6 494 398 Swap: 2047 0 2047
須要增長內存或者修改內存大小:tomcat
1、Tomcat的JVM提示內存溢出bash
查看%TOMCAT_HOME%\logs文件夾下,日誌文件是否有內存溢出錯誤服務器
2、修改Tomcat的JVM網絡
一、錯誤提示:java.lang.OutOfMemoryError: Java heap space併發
Tomcat默承認以使用的內存爲128MB,在較大型的應用項目中,這點內存是不夠的,有可能致使系統沒法運行。常見的問題是報Tomcat內存溢出錯誤,Out of Memory(系統內存不足)的異常,從而致使客戶端顯示500錯誤,通常調整Tomcat的使用內存便可解決此問題。
Windows環境下修改「%TOMCAT_HOME%\bin\catalina.bat」文件,在文件開頭增長以下設置:
set JAVA_OPTS=-Xms256m -Xmx512m
Linux環境下修改「%TOMCAT_HOME%\bin\catalina.sh」文件,在文件開頭增長以下設置:
JAVA_OPTS=’-Xms256m -Xmx512m’
其中,-Xms設置初始化內存大小,-Xmx設置可使用的最大內存。
查看Tomcat的JVM內存
1. Tomcat6中沒有設置任何默認用戶,於是須要手動往Tomcat6的conf文件夾下的tomcat-users.xml文件中添加用戶。
如:<role rolename="manager"/>
<user username="tomcat" password="tomcat" roles="manager"/>
注:添加完須要重啓Tomcat6。
2. 訪問http://localhost:8080/manager/status,輸入上面添加的用戶名和密碼。
3. 而後在以下面的JVM下能夠看到內存的使用狀況。
JVM
Free memory: 2.50 MB Total memory: 15.53 MB Max memory: 63.56 MB
Tomcat鏈接數設置
在tomcat配置文件server.xml中的<Connector ... />配置中,和鏈接數相關的參數有:
minProcessors:最小空閒鏈接線程數,用於提升系統處理性能,默認值爲10
maxProcessors:最大鏈接線程數,即:併發處理的最大請求數,默認值爲75
acceptCount:容許的最大鏈接數,應大於等於maxProcessors,默認值爲100
enableLookups:是否反查域名,取值爲:true或false。爲了提升處理能力,應設置爲false
connectionTimeout:網絡鏈接超時,單位:毫秒。設置爲0表示永不超時,這樣設置有隱患的。一般可設置爲30000毫秒。
其中和最大鏈接數相關的參數爲maxProcessors和acceptCount。若是要加大併發鏈接數,應同時加大這兩個參數。
擴展:
Tomcat經常使用功能介紹:http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html
tomcat常見配置彙總
http://blog.sina.com.cn/s/blog_4ab26bdd0100gwpk.html
邱李的tomcat文檔
https://www.linuser.com/forum.php?mod=forumdisplay&fid=37
jvm性能調優監控工具jps/jstack/jmap/jhat/jstat
http://blog.csdn.net/wisgood/article/details/25343845
http://guafei.iteye.com/blog/1815222
jmx監控tomcat
http://blog.csdn.net/l1028386804/article/details/51547408
tomcat內存溢出
https://blog.csdn.net/ye1992/article/details/9344807
5 gvm gc 相關 http://www.cnblogs.com/Mandylover/p/5208055.html http://blog.csdn.net/yohoph/article/details/42041729