【问题标题】:Why Spring Boot embedded tomcat can't start on Google Compute Engine?为什么 Spring Boot 嵌入式 tomcat 无法在 Google Compute Engine 上启动?
【发布时间】:2016-03-19 02:31:16
【问题描述】:

我尝试在运行 CentOS 7 的 GCE 实例上启动 Spring Boot 应用程序,但它似乎在完成 Web 应用程序初始化后但在显示最终“服务器启动成功消息”之前挂起。记录到控制台的最后一条消息是:

2016-03-18 07:34:04.802  INFO 1175 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet : 'dispatcherServlet' to [/]

我怀疑这与 GCE 问题跟踪器上报告的 this issue 有关。

相同的应用程序在运行 Amazon AMI 的 Amazon EC2 实例上启动,没有任何问题。

【问题讨论】:

    标签: tomcat spring-boot google-compute-engine centos7


    【解决方案1】:

    原来tomcat卡在SecureRandom实例的创建上

     [ost-startStop-1] o.a.c.util.SessionIdGeneratorBase        : Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [568,680] milliseconds.                                     
    

    Entropy Source 上的 tomcat 文档中讨论了该问题

    在启动 Spring Boot 应用程序时将 -Djava.security.egd=file:/dev/./urandom 添加到 jvm 参数修复了该问题。

    为什么这发生在 CentOS 而不是 amazon linux? 引用BEA Logic SIP Server documentation

    Sun 的 JVM 中用于随机数生成的库默认依赖于 UNIX 平台的 /dev/random。

    .. 在某些操作系统上,/dev/random 会等待主机上产生一定量的“噪音”,然后再返回结果。

    【讨论】:

    • -Djava.security.egd=file:/dev/./urandom 我应该在哪里添加此代码?是否进入 Application.Properties?
    • @forguta 从命令行调用java时可以提供此参数,例如:java -Djava.security.egd=file:/dev/./urandom -jar my-springboot-app.jar
    猜你喜欢
    • 2016-08-19
    • 1970-01-01
    • 2020-07-24
    • 2023-03-26
    • 2017-09-20
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多