SpringBoot 应用启动速度往往很快, 但在某些Linux 服务器上可能会很慢, 可能超过1分钟, 有时候甚至启动不起来.

下面过程耗时太长:
IdGeneratorBase: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [140,108] milliseconds.

原因是SpringBoot在生成Session Id时候会使用 SecureRandom 这个jre工具类, 以生成足够安全的随机数. 最终会用到在Linux的 /dev/random 这个阻塞型数字生成器, 它的特点是使用鼠标和键盘以及磁盘信息来产生熵, 但对于Linux 服务器, 鼠标和键盘活动可能会很少, 就有可能阻塞整个SpringBoot启动.

解决办法是, 替换 /dev/random 为 /dev/./urandom. 具体为:

方法一: 适合外置tomcat:
在tomcat 的 catalina.sh 中增加下面的 JAVA_OPTS:
-Djava.security.egd=file:/dev/./urandom

方法二: 适合外置或内置tomcat:
修改 $JAVA_PATH/jre/lib/security/java.security 文件,
将 securerandom.source=file:/dev/random 替换为下面一行:
securerandom.source=file:/dev/./urandom

SpringBoot系列: SpringBoot 启动慢的问题相关推荐

  1. SpringBoot系列-- SpringBoot中使用lombok简化开发

    目录 1. 项目环境 2.添加依赖和安装插件 3. 实体类常用注解总结 3.1 @Setter.@Getter 3.1.1 注解在属性上 3.1.2 注解在类上 3.1.3 注解对静态属性和final ...

  2. mybatis generator生成example_[Springboot系列] SpringBoot与Mybatis结合

    本文作者:cuifuan Mybatis 是一个持久层ORM框架,负责Java与数据库数据交互,也可以简易理解为中介,相对于它,还有个中介是hibernate,不过在mybatis中sql语句的灵活性 ...

  3. SpringBoot 2.0 系列005 --启动实战之SpringApplication应用

    为什么80%的码农都做不了架构师?>>>    SpringBoot 2.0 系列005 --启动实战之SpringApplication应用 2.X 官方示例 注意是只使用了@En ...

  4. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...

  5. 服务 自动启动参数_使用ansible部署springboot系列02服务托管与jvm参数管理

    @[toc] 这是使用ansible部署springboot系列 的第二篇文章. 本系列文章介绍基于springboot的java程序如何自动化部署.该CI/CD方案基于Jenkins+Ansible ...

  6. SpringBoot 雪花算法生成商品订单号【SpringBoot系列13】

    SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见. 程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCl ...

  7. Springboot 系列(十一)使用 Mybatis(结合自动化生成插件) 访问数据库

    1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...

  8. Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件

    前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...

  9. SpringBoot 整合 Spring Security 实现安全认证【SpringBoot系列9】

    SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见. 程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCl ...

最新文章

  1. Linux下部署开源版“禅道”项目管理系统
  2. linux 内核编译错误 error: conflicting types for ‘syscall_trace_enter’
  3. 软件工程:需求分析的20条法则
  4. 飞鸽 bind()错误=10048
  5. 基于用户击键特征的身份鉴别系统
  6. linux系统中存放用户账号信息的文件是,信息安全技术题库:Linux系统中,用户登录密码的hash是存放在()文件中的。...
  7. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解
  8. tomcat使用安全及CVE-2017-12615
  9. 带你了解电机驱动板的四大分类
  10. PHP+MYSQL【学生信息管理系统】(极简版)
  11. NK细胞治疗肿瘤相关进展概述
  12. 树形DP(放置街灯,uva 10859)
  13. 数据库基础知识及概念
  14. Touch ID身份认证
  15. 开发一个标题为Flipflop的游戏应用程序
  16. makefile传字符串给c语言,makefile终极奥义
  17. css中英文自动换行问题
  18. 【硬币识别】形态学硬币计数【含Matlab源码 683期】
  19. 快手去水印解析获取源标题、作者、头像、封面图以及源视频下载地址
  20. 道格拉斯普克(Douglas-Peuker)算法python实现

热门文章

  1. 如何计算MP3总时长的问题(二)
  2. 贝叶斯多元Logistics回归理论基础
  3. UA SIE545 优化理论基础0 优化建模3 线性回归的参数估计问题
  4. VC++ 常用编程技巧总结
  5. dp_c_区间dp_g
  6. python学习日记day2
  7. WIN7无法记住远程登录密码
  8. CentOS6.5菜鸟之旅:安装VirtualBox4.3
  9. 安装32位mysql报错_在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法...
  10. mysql query plan_MySQL Execution Plan--IN查询计划(2)