1、问题叙述

使用springboot的若依框架开发web后管,使用systemctl 设置自起web服务,部署到mini centos7的服务器上,出现一个问题,前端登录界面获取验证码迟迟刷新不出来,首先我们起怀疑是linux的redis服务启动缓慢或者出现问题导致的,但是经过排查,排除了redis服务的问题。

紧接着我们把问题点放在了java 后台获取验证码的接口上,经过日志排查,我们发现获取验证码阻塞的位置在获取UUID,经过分析我们将问题锁定在了hutool的获取调用UUID的方法上

 hutool工具在调用randomUUID时候,可传一个boolean参数,该参数的主要含义是是否产生一个安全随机数(secureRandom)还是普通的随机数,在使用安全随机数的时候linux环境下容易产生熵源不足时阻塞问题~(SecureRandom的正确使用 - eaglediao - 博客园),我们可以通过修改如下jre的java.security配置解决掉这个问题,或者我们在调用randomUUID的时候将参数传递成false。但是个人推荐通过修改配置的方式解决。

cd /usr/java/default/jre/lib/security
vi java.security

将 securerandom.source值改为file:/dev/./urandom

Logo

更多推荐