记录一个问题:jdbc连接数据库很慢【能连上,但很慢】、同理,任何应用连接慢也可以尝试用该方法
文章目录
- 说明
- 解决方案
- 总结
说明
前置条件:我们云上有一批同网段虚拟机,其中一台是数据库服务器,剩下的是客户端,需要去连接这个数据库服务器。
本地安装了一个centos7.6的测试系统,连接数据库一切正常,且很快。
下面为云上的centos虚拟机客户端连接数据库的问题:
- 1、最小化安装的系统,selinux没关之前直接无法连接上数据库,关了selinux可以连上,很慢;
- 2、最小化安装后,安装桌面基础包并进入桌面,selinux关了能连上数据库,很慢。
- 3、更换了其他版本的centos系统,一样能连接,很慢。
根据上面情况,猜想可能的问题有
- 1、云上qcow2镜像问题
- 2、网络问题【但同网段,理论上不存在网络延迟,而且网页这些啥啥啥都很快,不可能就数据库的端口有延迟】
- 3、客户端的问题【但是同样的包,在测试机上连就很快,在云上就不行,好像也不能怀疑客户端】
- 4、有啥验证在等待,时间一到就跳过了【因为每次都是180S左右就连上了】,但是我不知道是啥再等待,但我知道肯定是有啥在等待的,找到这个问题就好了。。。。
下面为定制系统
用本地安装的测试系统centos7.6镜像,打包成qcow2镜像,然后放到云上再试。- 1、装好系统以后的qcow2镜像,没有做过任何操作,能连数据库,很慢。
- 2、装好系统以后并做修改,然后删除关键信息以后再打包为qcow2,能连接数据库,很慢。
到此,又得出结论,和镜像没关系,因为定制的这个镜像iso和本地的测试系统是同一个,而且安装方式都一样。
那么好像只剩下 是网络的问题了,但同网段不存在网络延迟之类的说法,到这好像到死胡同了,那么就在云上创建一个windows系统,在windows上装客户端,再链接数据库,如果连接数据库正常,那么就和网络没关系。创建windows虚拟机
连接很快,那么排除网络延迟的问题了,还是得重客户端上找问题。。。。。 至此又陷入死胡同了。。。
解决方案
/etc/resolv.conf
配置文件中自动生成同网段的几个dns地址了,把这几个地址注释掉就好了
因为这是内网环境,不需要出外网,所以我们也不可能主动去检查这个配置文件。
而且我们是不会配置这个文件的,是因为在云上的原因,自动生成下面几个地址了,下面几个地址是假的地址,实际并不存在,所以也ping不同。。。。坑爹啊。
总结
云上的主机因为在resolv.conf文件中自动生成了几个不存在的地址,所以jdbc连接数据库的时候,服务端在验证这几个地址,不通就存在等待嘛,3分钟就跳过这个验证,所以就连接上了。。。。 所以最开始我的猜想是正确的,这种情况肯定是有啥在等待,因为数据库服务端和客户端都不是我弄的,具体要验证些啥我也不知道。。。
而本地测试机,我有外网的,下面配置文件中也有dns,但配置的是真实存在的dns地址,所以能通,jdbc连接呢就不会有问题。
这个问题陆陆续续搞了1个多月,真的能想到的都试了,没想到最终是因为dns地址的问题。。。
没办法,内网环境,让我排查,我肯定不会去想dns地址这个问题的,因为没有外网,这个地址存在与否不影响系统使用的最后还是应用方找了大佬查日至,看到dns一直在验证等待,才去看的这个配置文件,问题才解决的。
【其实应用方最开始有让研发的人看的,但研发的人看日志没看出问题。。。】反正不管咋样,最终问题解决了,就是好事。
后面客户端连接中出现连接很慢的话呢,也可以检查一下该配置文件的。
记录一个问题:jdbc连接数据库很慢【能连上,但很慢】、同理,任何应用连接慢也可以尝试用该方法相关推荐
- 记录一个使用imgkit库转图片在windows上可能会出现的问题 iis OSError: [WinError 6] 句柄无效
最近项目有需求需要将富文本输入框的内容转成图片给app显示, 从前端拿到了html格式str,网上找到了imgkit这个库,真心十分强大,作者也很好(华裔/国人), 支持将html文件 str 和ur ...
- Java七步创建以JDBC连接数据库的程序
JDBC连接数据库 ◆ 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java. ...
- JDBC连接数据库总结
JDBC连接数据库 一下以mysql 数据库连接来说明 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(J ...
- 完整java开发中JDBC连接数据库代码和步骤
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- Java开发中JDBC连接数据库代码和步骤
JDBC连接数据库:创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lan ...
- JDBC连接数据库(一)
原文地址http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步 ...
- JDBC连接数据库6个步骤
JDBC连接数据库,创建一个以JDBC连接数据库的程序,包含7个步骤: 首先准备JDBC所需的四个参数(user,password,url,driverClass) (1)user用户名 (2)pas ...
- java jdbc连接 代码块_java 中JDBC连接数据库代码和步骤详解及实例代码
•创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的 ...
- 七步 JDBC连接数据库
JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.la ...
最新文章
- ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET
- [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源
- JQuery中serialize()、serializeArray()和param()的使用方法
- ros构建机器人运动学模型_ROS入门学习之八机器人综合应用
- php做页面编辑器,最牛在线编辑器ueditor在thinkphp框架中的使用方法
- web开发必备的几个软件
- 百度网盘无需开会员也能享受高速下载通道
- 花了3个月,濒临崩溃的K8S集群有救了……
- Vue最全知识点集合
- 路由在电话网和计算机网中的区别,计算机猫和路由器之间有什么区别
- 计算机视觉书籍资源推荐_Computer Vision Principles, Algorithms, Applications, Learning
- ios动态效果实现翻页_iOS实现翻页效果动画
- 阿里云国际站如何注册?
- Unity3D--加载界面、开始界面
- iOS 显示SVG文件的方法
- 从http协议看百度360大战
- Python_pymysql
- 在学RTX之前的操作系统知识
- hadoop block split 区别
- 数据绑定控件收藏 DropDownList ListBox GridView DataList Repeater FormView DetailsView
热门文章
- 高数_第6章无穷级数
- Spring Boot 结合 FreeMarker导出word文件
- PyCharm中的问题记录:failed to sync ide settings. click to sync
- 2022阿里云国际注册教程-不用绑定paypal注册-Unirech阿里云代充
- 科普:指纹识别的工作原理
- 改良的用于情感分类的餐馆评论数据集
- android动画送礼物,Android开发仿映客送礼物效果
- C# 使用Salt+Hash来为密码加密
- 用户注册+登录(下)
- 自定義 ForkJoinPool 線程池,并消除classLoader加载失败的问题