性能优化
这天 程序抛出了一个WARN日志:
createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [43,844] milliseconds.
这意味着SHA1PRNG算法导致项目启动多花费了43秒,这是基于SHA-1算法实现且保密性较强的伪随机数生成器。
解决方案
1.从tomcat层面上解决:
在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom
2.从java层面解决
打开$JAVA_PATH/jre/lib/security/java.security这个文件,将下面的内容:
securerandom.source=file:/dev/urandom
替换成
securerandom.source=file:/dev/./urandom
Error parsing HTTP request header
解决方案
搜索结果:Tomcat缓冲区不够,修改server.xml中的maxHttpHeaderSize="8192"(参考值),或是在项目其他位置调整。
但是,这不是唯一的问题所在,我的项目中,使用了Http协议的80端口请求自动定向为Https协议的443端口,使用SSL后,传输的Header是不相同的,这种不标准的做法引起了警告,但是不影响功能使用。
热加载问题
这种错误是很罕见的,是因为项目采用了热加载,此类A已经非彼类A,日常开发中基本不会有用到动态生成字节码文件的情境,所以这种异常只会极小概率出现在开发环境中,若想深入了解这个问题,我们还应该深入了解jvm与类加载器相关原理。
参考链接:Tomcat 8熵池阻塞变慢详解