[英]Fresh install of Tomcat on EC2 Amazon Linux giving 404 errors
[英]Debian linux Tomcat 8 fresh install not responding on port 8080
我最近在Debian 9和Ubuntu 16.04 LTS中兩次遇到此問題。
在僅使用 Tomcat 8和openjdk 8全新安裝操作系統(未更改默認配置)之后,重新啟動幾次后,Tomcat服務器停止在端口8080上響應。
服務器仍在偵聽端口,但即使是簡單的GET /
也會永久掛起:
# netstat -an|grep 8080
tcp6 0 0 :::8080 :::* LISTEN
# wget http://127.0.0.1:8080/
--2017-11-03 13:19:52-- http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... connected.
HTTP request sent, awaiting response...
根據線程轉儲,Tomcat似乎在啟動時掛起了:
"localhost-startStop-1" #14 daemon prio=5 os_prio=0 tid=0x00000000018a1000 nid=0x68d8 runnable [0x00007f2badacd000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:255)
at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:203)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:221)
- locked <0x00000000f99155c0> (a sun.security.provider.SecureRandom)
at java.security.SecureRandom.nextBytes(SecureRandom.java:468)
at java.security.SecureRandom.next(SecureRandom.java:491)
at java.util.Random.nextInt(Random.java:329)
at org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom(SessionIdGeneratorBase.java:237)
at org.apache.catalina.util.SessionIdGeneratorBase.getRandomBytes(SessionIdGeneratorBase.java:174)
at org.apache.catalina.util.StandardSessionIdGenerator.generateSessionId(StandardSessionIdGenerator.java:34)
at org.apache.catalina.util.SessionIdGeneratorBase.generateSessionId(SessionIdGeneratorBase.java:167)
at org.apache.catalina.util.SessionIdGeneratorBase.startInternal(SessionIdGeneratorBase.java:256)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
- locked <0x00000000f9905808> (a org.apache.catalina.util.StandardSessionIdGenerator)
為什么會發生這種情況以及如何解決?
基於Debian的發行版上的OpenJDK 8帶有/dev/random
預配置為熵的來源。
當沒有足夠的熵時, /dev/random
將阻止。
解決方案1 :(首選)
安裝hadged ,它是一個生成附加熵的守護程序。
解決方案2 :(可能不太安全)
將/usr/lib/jvm/default-java/jre/lib/security/java.security
更改為使用/dev/urandom
:
#securerandom.source=file:/dev/random
securerandom.source=file:/dev/./urandom
這將全局適用於所有Java進程。
或者,將-Djava.security.egd=file:/dev/./urandom
到/etc/default/tomcat8
JAVA_OPTS
中(僅適用於Tomcat進程)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.