解决腾讯云服务器启动tomcat巨慢导致浏览器无法加载的方案

【系统环境】

  • 使用腾讯云服务器
  • CentOS 7.2
  • JDK 1.7
  • Tomcat 7.0
  • 其他部署网站的必备环境一切正常

【问题描述】

        通过URL(比如http://123.45.6.78/web)访问网站迟迟加载不出来,一直处于等待响应状态,通过命令查看tomcat的启动日志发现tomcat启动时间很长

【问题分析】

        通过仔细观察日志,tomcat启动主要是卡在了初始化 Session步骤。通过搜索和分析,Tomcat 的 SessionID 是通过 SHA1PRNG 算法计算得到的,SHA1 算法需要一个密钥,这个密钥在 Tomcat 启动的时候随机生成一个,生成是使用了 Linux 随机函数生成器/dev/random。读取它相当于生成随机数字。搜索/dev/random,大概知道是什么鬼了:/dev/random会根据 噪音 产生随机数,如果噪音不够它就会阻塞。Linux 是通过 I/O,键盘终端、内存使用量、CPU 利用率等方式来收集噪音的,如果噪音不够生成随机数的时候就会被阻塞,所以tomcat启动巨慢无比。

【解决方案】

方案一:使用伪随机函数生成器

        使用伪随机函数生成器/dev/unrandom,/dev/urandom并不是真正的随机行为(其实一般不容易重复),主要有两个地方可以修改。
  • 通过修改 Tomcat 启动文件 -Djava.security.egd=file:/dev/urandom
  • 通过修改 JRE 中的 java.security 文件 securerandom.source=file:/dev/urandom

方案二:加大/dev/random的熵池(推荐)

        问题的原因是由于熵池不够大,所以增大它是最彻底的方法。我们可以通过软件的方法实现,下面是软件的安装和配置流程。

1.安装熵服务

yum install rng-tools


2.启动熵服务

systemctl start rngd


3.如果你的 CPU 不支持 DRNG 特性或者像我一样使用虚拟机,可以使用/dev/unrandom来模拟。

cp /usr/lib/systemd/system/rngd.service /etc/systemd/system   

vim /etc/systemd/system/rngd.service  

#以下是编辑内容

ExecStart=/sbin/rngd -f -r /dev/urandom


4.重新载入服务

systemctl daemon-reload

systemctl restart rngd



        经过上面的修改,我们再观察 /proc/sys/kernel/random/entropy_avail 基本上在 3000 左右。这个时候重新启动 Tomcat,发现启动时间正常。


转自原文:原文

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
腾讯云服务器是一种基于云计算技术的虚拟服务器,可以提供计算、存储、网络等基础服务。在使用腾讯云服务器进行应用开发过程中,通常会使用到Tomcat作为应用服务器,用来运行Java Web应用程序。 Tomcat是一个开源的Web服务器和Servlet容器,能够处理HTTP请求并提供Java Servlet和JavaServer Pages(JSP)等技术支持。在腾讯云服务器上配置和使用Tomcat,可以将开发的Java Web应用程序部署到云服务器上并通过互联网访问。 后端接口定义是指开发者定义的用于访问后端服务的接口,通常使用HTTP协议进行通信。后端服务可以是数据库、其他Web服务、第三方API等,通过后端接口,前端应用可以与后端服务进行数据交互和业务逻辑处理。 腾讯云服务器上的Tomcat可以通过配置和部署后端接口定义,实现前后端的数据交互和通信。开发者可以将后端接口定义部署在Tomcat的运行环境中,然后通过前端应用进行访问。前端应用可以使用HTTP请求方式调用后端接口,传递参数并获取相应的响应结果,实现前后端数据的传输和处理。 通过腾讯云服务器上的Tomcat和后端接口定义,开发者可以搭建一个完整的云端应用系统。前端应用可以通过互联网访问Tomcat,然后通过后端接口访问后端服务,实现数据的获取、处理和展示。这样的架构可以使应用具备可扩展性、高可用性和安全性,提供良好的用户体验和服务质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值