tomcat启动时间过长的问题
阿里云下的服务器安装jdk1.8和tomcat之后出现了一个问题,初次运行tomcat没有问题,可以正常访问tomcat首页,但是关闭之后再重启就发现tomcat首页刷不出来。而且再次关闭之后还报错了。

报错信息上显示Tomcat may not be running,说明tomcat还没有启动,说明之前开启tomcat就出现问题了。
方案一:
官方的文档里有这个问题的解释:修改$JAVA_HOME/jre/lib/security/java.security文件,替换securerandom.source=file:/dev/random为: file:/dev/urandom。对所有使用JVM的应用生效。(实际修改为:securerandom.source=file:/dev/./urandom)。修改之后重启tomcat就很快了。
关于这个random和urandom,这个是linux的提供的随机伪设备,提供永不为空的随机字节数据流,许多加密解密程序需要用到它们提供的随机数。它们的区别在于:random 依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用。这也就是tomcat启动变慢的原因;而urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。
可以通过od转化为16进制后查看生成的随机数据:

但是使用random生成随机数的时候一直刷不出来:

方案二:
random是依赖于系统中断产生的随机数,因此可以使用外部进程产生中断,增加产生随机数的速度,安装rng-tools这个软件可以增加产生随机数的速度。
yum install rng-tools
systemctl start rngd // 开启服务
然后再使用random生成随机数:

这次生成随机数就很快了,安装了rng-tools之后就直接可以使用random生成随机数,而不需要去修改$JAVA_HOME/jre/lib/security/java.security中的生成随机数的方式了。
tomcat启动时间过长的问题的更多相关文章
- SecureRandom生成随机数超慢 导致tomcat启动时间过长的解决办法
用腾讯云的CentOS 7.2 CVM 服务器跑Tomcat时发现,Tomcat启动的特别慢,通过查看日志,发现时间主要花在实例化SecureRandom对象上了. 由该日志可以看出,实例化该对象使用 ...
- Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法
最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...
- tomcat启动时间5分钟左右org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [342,445] milliseconds.
org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance ...
- eclipse中如何设置tomcat启动时间
现象:在eclipse中启动tomcat总是提示“Server Tomcat v5.5 Server @ localhost was unable to start within 45 seconds ...
- tomcat启动时间修改
Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds. If the server requires ...
- Tomcat post参数长处理
如下图所示:增加maxPostSize="-1"属性即可
- 关于Unity启动时间过长(启动黑屏时间长)的问题!!! 牛逼... 思路不错...
http://blog.csdn.net/u012169685/article/details/52068809
- TOMCAT启动到一半停止如何解决
当你的项目过大的时候,往往会导致你的TOMCAT启动时间过长,启动失败,遇到该情况可以试一下下面两招: TOmcat启动到一半的时候停止了,以下原因: 1. tomcat启动时间超过了设置时间: 解 ...
- Nginx与Tomcat、Client之间请求的长连接配置不一致问题解决[转]
http://bert82503.iteye.com/blog/2152613 前些天,线上出现“服务端长连接与客户端短连接引起Nginx的Writing.Active连接数过高问题”,这个是由于“服 ...
随机推荐
- linux内核体系结构
linux内核第一记 1.linux体系结构 从上图可知,Linux分为:用户空间和内核空间.内核空间和用户空间是程序执行的两种不同的状态,通过系统调用和硬件中断能够完成从用户空间到内核空间的 ...
- mysql学习笔记02 CRUD操作
添加数据insert into 表名(字段列表) values(对应字段的列表值) 查询数据 select *from 表名 where 条件select *from 表名 where 1条件 1表示 ...
- mysql学习笔记02 表的操作
创建数据表create table table_name(//定义表的列的结构)创建表 先分析需要保存的实体数据,荣有哪些属性,这些属性应该有哪些属性列的定义 列名 列的数据类型 {} 进行表操作时 ...
- Eviews 8.0&9.0界面新功能介绍
Eviews 8.0&9.0界面新功能介绍 本文其中一些是自己的整理,也有一些是经管之家论坛中一位热心.好学坛友的整理,其中只是简单介绍一下这两个新版本的部分特性,分享出来,有兴趣的看客可以一 ...
- (二十)java小练习二
练习4:定义一个整数数组,编写程序求出一个数组的基数和偶数个数 package demo; /* * 定义一个整数数组,编写程序求出一个数组的基数和偶数个数 */ public class Tes ...
- 使用WebApiClient请求和管理Restful Api
前言 本篇文章的内容是WebApiClient应用说明篇,如果你没有了解过WebApiClient,可以先阅读以下相关文章: WebApi client 的面向切面编程 我来给.Net设计一款Http ...
- json格式数据整理
一,json的两种数据结构 1.1,对象 对象结构以"{"大括号开始,以"}"大括号结束.中间部分由0或多个以","分隔的"key ...
- table问题汇总
平时要使用 table 的次数说多不多,说少不少,但每次使用必定会被几个问题"坑"一下,所以这篇博客用来记录下table那些"小坑".但 table 也会有很多 ...
- Python机器学习介绍(Python Machine Learning 中文版)
Python机器学习 机器学习,如今最令人振奋的计算机领域之一.看看那些大公司,Google.Facebook.Apple.Amazon早已展开了一场关于机器学习的军备竞赛.从手机上的语音助手.垃圾邮 ...
- link-cut-tree 简单介绍
link-cut-tree 简单介绍 前言:这个算法似乎机房全都会,就我不会了TAT...强行搞了很久,勉强照着别人代码抄了一遍qwq 这个本人看论文实在看不懂,太菜了啊!!! 只好直接看如何实现.. ...