博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 应用连接oracle 超级慢的解决方法
阅读量:6969 次
发布时间:2019-06-27

本文共 946 字,大约阅读时间需要 3 分钟。

hot3.png

为了将应用迁移到云上,搞了几个星期。

最后测试的时候发现连接oracle非常慢,我们用的是阿里的druid,应用如果 长时间不用,第一次连接时超时,第二次就非常快。开始以为是druid的问题,各种参数修改,都不起作用。

在调度机找到$JAVA_HOME/jre/lib/security/java.security,终于发现

22105431_tlSp.jpg

直接修改 java.security文件

securerandom.source=file:/dev/urandom

修改成

securerandom.source=file:/dev/./urandom

 

修改后再次连接DB,正常了。

 

那究竟是什么原因导致jdk 的这个系统参数会引发问题呢?

  1. Jdk 连接oracle的时,从某个版本开始

The JDBC 11gneeds about 40 bytes of secure random numbers, gathered from /dev/random, toencrypt its connect string.

  1. linux有两种类型随机数发生器,一个是/dev/random,一个是/dev/urandom,urandom=unlocked random,即非阻塞随机。要产生真实的随机,linux是搜集真实的随机事件放到一个熵池里,当随机事件不足是,/dev/random会阻塞等到有随机事件产生才返回,而/dev/urandom则会重复利用以前的随机事件迅速返回。
  2. 那这里默认就是使用的/dev/urandom,为什么还是有问题呢?

因为这个版本的jdk,实际上在jdk代码里当匹配到/dev/urandom时实际上还是指向了/dev/random,于是大家就想到了一个变通办法采用/dev/./urandom,在linux系统中,加个点表示当前路径这个和之前一样,但是jdk代码却不不配,就绕过去了

网上参考文档:

https://www.jb51.net/article/117086.htm

https://blog.csdn.net/leochenx/article/details/72935095

 

转载于:https://my.oschina.net/zhsoft/blog/1833849

你可能感兴趣的文章
http请求方式
查看>>
web版文本编辑器
查看>>
x86基础之数与数据类型
查看>>
spring与spring MVC的区别
查看>>
linux学习----日志
查看>>
活动目录的综合应用(二)
查看>>
Java中的静态绑定和动态绑定
查看>>
Java compiler level does not match the version of
查看>>
企业应用架构模式学习(十七):会话状态模式
查看>>
AD组策略的那点事
查看>>
CentOS 7 编译安装LAMP
查看>>
iptables
查看>>
Linux native AIO与eventfd、epoll的结合使用
查看>>
转:图数据库Neo4J的介绍
查看>>
SpringBoot第1小节:.第一个SpringBoot应用和项目属性配置
查看>>
Scrum团队实践——概念篇
查看>>
我的友情链接
查看>>
获取屏幕宽度、浏览器宽度、网页高度,宽度信息
查看>>
我的友情链接
查看>>
我的家庭私有云计划-12
查看>>