面向chatgpt运维:解决centos环境下tomcat重启很慢的问题
You
怎么解决:30-Mar-2023 09:35:53.881 WARNING [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [106,003] milliseconds.
Genie
这个警告表示在为会话ID生成凭证时,创建安全随机实例所需的时间太长了。 SHA1PRNG是一个加密的伪随机数生成器算法,初始化需要大量时间。以下是解决此问题的步骤:
- 打开 Tomcat 安装目录下的
conf/logging.properties
文件。 - 将以下行添加到此文件的末尾:
org.apache.catalina.session.ManagerBase.level = WARNING
- 保存并关闭文件。
- 重新启动 Tomcat。
这将使 Tomcat 在控制台上记录其他日志级别的信息,但会禁用会话 ID 生成器的调试输出。
You
有其他方法吗?
Genie
除了在日志级别上进行更改之外,还可以尝试以下操作:
- 将 Tomcat 默认的随机数生成算法更改为
NativePRNG
。可以通过编辑${java.home}/jre/lib/security/java.security
文件来完成此操作,在该文件中搜索securerandom.source
并将其设置为securerandom.source=file:/dev/urandom
。 - 可以尝试使用其他生成器算法注册一个新的安全随机数生成器实例,并将其用于会话 ID 生成器。例如,您可以在
conf/context.xml
或web.xml
文件中将以下内容添加到<Context>
标记下(如果使用Tomcat 7或更高版本,则应在web.xml
中使用此配置):
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" directoryName="/path/to/store"/>
<SecureRandomClassName>java.security.SecureRandom</SecureRandomClassName>
<SecureRandomAlgorithm>NativePRNG</SecureRandomAlgorithm>
</Manager>
这将在您选择的位置存储会话信息并将使用新的安全随机数生成器。请注意,这些更改可能会影响应用程序的整体性能和安全性,因此应仔细评估风险并备份所有数据。