Tomcat遇到的一些問題和解決方法:java
1. Tomcat慢啓動問題
描述:
Tomcat啓動有時耗時十幾秒甚至達到一分多鐘。緣由是Tomcat的
org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom類產生安全隨機類SecureRandom的實例做爲會話ID,隨機數產生器會收集來自設備驅動器和其它源的環境噪聲數據,並放入熵池中。產生器會評估熵池中的噪聲數據的數量。當熵池爲空時,這個噪聲數據的收集是比較花時間的。這就意味着,Tomcat在生產環境中使用熵池時,會被阻塞較長的時間。
解決方法:
1)在Tomcat環境中解決。能夠經過配置JRE使用非阻塞的Entropy Source。在catalina.sh中加入這麼一行:-Djava.security.egd=file:/dev/./urandom 便可。
2)在JVM環境中解決。打開$JAVA_PATH/jre/lib/security/java.security這個文件,找到下面的內容:
securerandom.source=file:/dev/urandom 替換成 securerandom.source=file:/dev/./urandom
2. NullPointerException和400錯誤
描述:
Tomcat運行一段時間後,會出現org.apache.coyote.http11.Http11Processor.service Error processing request java.lang.NullPointerException錯誤,localhost_access log中會出現400報錯。緣由有待研究。
解決方法:
這個問題Tomcat官方說8.0已經修復了,可是我更新到8.5偶爾還會出現,8.0以前的作法是在server.xml中的Connector上添加useSendfile="false"便可,一樣的作法也解決了我這個問題。apache