1.启动非常慢,并且没有错误日志。调试了很久,都是500错误。遂放弃,再次执行./bin/catalina.sh run
出去洗了下车厘子(水果),发现居然好了。控制台出现如下日志信息:
INFO [localhost-startStop-1]
org.apache.catalina.util.SessionIdGeneratorBase.
createSecureRandom Creation of SecureRandom instance for
session ID generation using [SHA1PRNG] took [342,445] milliseconds.
这东西动辄就要花几分钟。所以调试的时候当然一时出不来结果。至于觉得方案嘛,我觉得有点理论了。参见Tomcat 8熵池阻塞变慢详解,作者详细的解释了一下原因,也提供了解决方案。
总结:take it easy!实在不行放一放吧,或许时间会帮你发现bug。也感谢给我车厘子的师姐,不然估计现在还没找到原因。
2. java内存调整
因为自带的内存设置有点小,最大堆区容量只有512m,而我在自己机器上运行的时候,基本上都会上1G,所以打算把初始内存调到1G,最大内存1.5G左右(毕竟最大内存也就只有2G),改就在catalina.sh里面改。主要是添加如下这句话:
JAVA_OPTS="-server -Xms1024m -Xmx1600m"
可是问题来了,这句话放哪里呢?网上有人建议说,放在如下代码的 cygwin=false
前面就好。
# OS specific support. $var _must_ be set to either true or false.
cygwin=false
darwin=false
os400=false
hpux=false
case "`uname`" in
CYGWIN*) cygwin=true;;
运行的时候也没问题。
但是,当运行catalina.sh stop
就报oom了。为啥呢?因为这样设置相当于是全局的,每一个命令都会使用如上参数,就会导致运行一个stop命令也会申请1G初始内存,一共才2G,自然oom,所以更好的是按需分配,故在实际部署中,我是在这里配置的
elif [ "$1" = "start" ] ; then
# insert here
JAVA_OPTS="-server -Xms1024m -Xmx1600m"
if [ ! -z "$CATALINA_PID" ]; then
if [ -f "$CATALINA_PID" ]; then
if [ -s "$CATALINA_PID" ]; then
echo "Existing PID file found during start."
if [ -r "$CATALINA_PID" ]; then
PID=`cat "$CATALINA_PID"`
ps -p $PID >/dev/null 2>&1
if [ $? -eq 0 ] ; then
echo "Tomcat appears to still be running with PID $PID. Start aborted."
echo "If the following process is not a Tomcat process, remove the PID file and try again:"
ps -f -p $PID
exit 1
恩,暂时完美。