java web项目部署在linux系统出现第一次登录高延迟的问题

今天记录一下之前遇到的问题:项目部署在window登录能很快完成,部署到linux后,第一次登录过程变得很慢。
通过查看系统日志,发现时间主要消耗在了创建session,并且定位到是SecureRandom的初始化问题,继续查看,发现session的id创建方式为uuid,到这里,熟悉linux的人就会明白问题在哪了。
Java的UUID依赖于SecureRandom.nextBytes方法,而SecureRandom又依赖于操作系统提供的随机数源。在Linux系统下,它的默认依赖是/dev/random,而这个源是阻塞的。最可怕的是,这个nextBytes方法还是一个synchronized方法,也就是说,如果多线程调用UUID,生成速率不升反降。
到这里,只需要修改java的默认随机生成规则就可以了。修改方法如下:
去到$JAVA_PATH/jre/lib/security/java.security这个文件,找到下面的内容:

securerandom.source=/dev/random

替换成

securerandom.source=/dev/urandom
好了,问题得到了解决!!
其实这也是分布式系统中,不使用uuid作为id的一个重要原因。

原文地址:http://blog.51cto.com/yuqian2203/2139365

时间: 2024-10-29 19:08:50

java web项目部署在linux系统出现第一次登录高延迟的问题的相关文章

Java Web项目部署时 “Exploded Archive”模式部署时无效

在myeclipse中部署项目时,当Deploy type为Exploded Archive(deveplopment mode)时,finish按钮为灰色,无法部署的解决方法: 1.project上右键properties->MyEclipse->web->web context-root为空 输入"/项目名"即可.需要重启MyEclipse. 2.可能需要在.classpath文件中删除项目中不存在的包,也可以在build java path中删除,更方便 Jav

如何将Java Web项目部署到服务器上

项目部署 我们对于 Java Web 项目在本地机器(无论是 Windows 还是 Linux)上的部署已经了然于心了,那么对于在云服务器上部署 Java Web 项目又是如何操作的呢? 其实很简单,还是离不开 Web 项目部署的那三点:① 基础的 JDK 环境② 一个 Web 服务器.如 Tomcat.JBoss③ 一款数据库.如:mysql 对于云服务器上 Java Web 项目的部署,和平时在 Windows.Linux 下部署是一样的.最多也就是只能使用纯命令模式来操作而已,其实过程都一

Java Web项目部署

打包 使用Eclipse打包JAVA Web项目 如下 在项目上单击右键选择Export-选择JavaEE文件夹-选择WAR file(MyEclipse),单击Next>如图所示,选择存放打包程序的地址,单击Finish完成,即实现了打包,在完成之后可以去你打包的地方看一下是否打包成功. 部署 接下了就是将war的包部署到服务器上的TomCat服务器中的webapps目录中即可 然后重启服务器即可 重启后会自动生产一个与war包相同的目录 如下 部署lib 因为服务调用了第三方的lib所以需要

把我的Java项目部署到Linux系统

以前,还未毕业,凭借自己三脚猫的功夫,只会在Windows环境中使用tomcat容器把项目跑起来. 以前的操作是,利用Eclipse把项目导出成War包,放到tomcat的webApp文件夹中,鼠标点点运行tomcat即可.现在想想,简直low到爆. 实习了小半年,自己搞了一个小小的java项目,决定把它部署到新买的Linux服务器上去.顺便提高一下自己的Linux基础. 前期准备 1.一台Linux服务器(centOS7) 2.你的工作台 (mac电脑) 3.项目源码(使用sprintBoot

Java Web项目部署到阿里云服务器(ECS)

本篇随笔只是记录博主第一次将自己的Java项目部署到阿里云服务器的大致过程,具体细节还请参考别的博文. 一.项目介绍 我做的项目是利用maven项目构建工具进行搭建基于SSM框架的代码共享管理系统,主要功能是发布相关博文,对博文进行CRUD操作...所以说也算是个入门的SSM项目. 二.域名以及ECS 由于想要将自己的项目发布到公网上,所以首先想到的是去购买一个域名,于是到了阿里云计算官网上购买了万网的域名,过程比较简单:首先注册阿里云账号并进行相关的实名认证,在控制台中的信息模板进行实名认证,

将node项目部署到linux系统上

1.准备工作,电脑上需要有xshell(远程连接服务器).xftp(上传文件到服务器上).下载node安装包(linux版) 2.使用xshell连接服务器后,进入根目录cd /   创建文件夹名mkdir opt  进入opt目录中 cd /opt 3.ctrl + alt + f 打开xftp ,左侧是Windows目录 右侧界面linux目录把刚才的node安装包拖入到opt项目中,本地应用项目也一起拖放到这个目录中 4.解压缩node安装包 tar -xzvf node-v7.5.0-l

一次记录 java非web项目部署到linux

1.生成可执行jar 运行提示没有主清单属性 一番查找原因:是因为将项目生成jar包的时候,生成的MANIFEST.MF没有MAIN-CLASS,这里加上就可以了,后面的是项目启动类的完整类名 当然还可以在idea生成jar包时设置,File-Project Structure-Artifacts  ,如图所示: 然后按图所示进行操作,这里的第三步将路径改为src目录下,不要在main/java下 最后勾选这个:点击apply,OutPut directory 是生成jar包的路径 在idea主

阿里云服务器部署Java Web项目全过程

最近需要将一个Java Web项目部署到服务器上,方便多人共享访问.这也是我第一次接触服务器之类的东西,也花了一点时间,最终总算部署成功,写下一篇文章记录以便日后回顾. 购买服务器 第一步当然是需要购买一台服务器了,我选择的是阿里云的ECS,对于新用户有一定的优惠活动.服务器徐购好后可以在管理控制台下看到自己服务器的配置情况.我买的是centos7 1核2G的,详情如下: 本地主机连接服务器 购买了服务器之后,下一步当时是要远程操作服务器,所以需要和远程服务器建立连接.这里有两种方式:一种是使用

[经验] Java Web 项目怎么部署到 Linux 系统上

废话少说, 直奔主题 第一步: 将 web 项目打成 war 包 1: 打开项目的 pom.xml 文件 如果是迭代后的项目, 记得修改项目的版本号, 这里我的是第二版所有就把 1 改成了 2 2: 将项目打包   先双击 clean, 完成后再双击 install, 等待打包完成 3: 在工程中找到 项目的 WAR 包    箭头所指的就是了 第二步: 将项目上传到 Linux 系统 将 war 包放到 Tomcat目录下的 webapps 文件夹中(有疑问的先看 https://www.cn