文章目录

  • 说明
  • 解决方案
  • 总结

说明

  • 前置条件:我们云上有一批同网段虚拟机,其中一台是数据库服务器,剩下的是客户端,需要去连接这个数据库服务器。

  • 本地安装了一个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连接数据库很慢【能连上,但很慢】、同理,任何应用连接慢也可以尝试用该方法相关推荐

  1. 记录一个使用imgkit库转图片在windows上可能会出现的问题 iis OSError: [WinError 6] 句柄无效

    最近项目有需求需要将富文本输入框的内容转成图片给app显示, 从前端拿到了html格式str,网上找到了imgkit这个库,真心十分强大,作者也很好(华裔/国人), 支持将html文件 str 和ur ...

  2. Java七步创建以JDBC连接数据库的程序

    JDBC连接数据库 ◆ 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java. ...

  3. JDBC连接数据库总结

    JDBC连接数据库 一下以mysql 数据库连接来说明 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(J ...

  4. 完整java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  5. Java开发中JDBC连接数据库代码和步骤

    JDBC连接数据库:创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lan ...

  6. JDBC连接数据库(一)

    原文地址http://www.cnblogs.com/hongten/archive/2011/03/29/1998311.html JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步 ...

  7. JDBC连接数据库6个步骤

    JDBC连接数据库,创建一个以JDBC连接数据库的程序,包含7个步骤: 首先准备JDBC所需的四个参数(user,password,url,driverClass) (1)user用户名 (2)pas ...

  8. java jdbc连接 代码块_java 中JDBC连接数据库代码和步骤详解及实例代码

    •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的 ...

  9. 七步 JDBC连接数据库

    JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.la ...

最新文章

  1. ThinkPHP实现定时执行任务的两种方法 - 博客频道 - CSDN.NET
  2. [安全攻防进阶篇] 七.恶意样本检测之编写代码自动提取IAT表、字符串及时间戳溯源
  3. JQuery中serialize()、serializeArray()和param()的使用方法
  4. ros构建机器人运动学模型_ROS入门学习之八机器人综合应用
  5. php做页面编辑器,最牛在线编辑器ueditor在thinkphp框架中的使用方法
  6. web开发必备的几个软件
  7. 百度网盘无需开会员也能享受高速下载通道
  8. 花了3个月,濒临崩溃的K8S集群有救了……
  9. Vue最全知识点集合
  10. 路由在电话网和计算机网中的区别,计算机猫和路由器之间有什么区别
  11. 计算机视觉书籍资源推荐_Computer Vision Principles, Algorithms, Applications, Learning
  12. ios动态效果实现翻页_iOS实现翻页效果动画
  13. 阿里云国际站如何注册?
  14. Unity3D--加载界面、开始界面
  15. iOS 显示SVG文件的方法
  16. 从http协议看百度360大战
  17. Python_pymysql
  18. 在学RTX之前的操作系统知识
  19. hadoop block split 区别
  20. 数据绑定控件收藏 DropDownList ListBox GridView DataList Repeater FormView DetailsView

热门文章

  1. 高数_第6章无穷级数
  2. Spring Boot 结合 FreeMarker导出word文件
  3. PyCharm中的问题记录:failed to sync ide settings. click to sync
  4. 2022阿里云国际注册教程-不用绑定paypal注册-Unirech阿里云代充
  5. 科普:指纹识别的工作原理
  6. 改良的用于情感分类的餐馆评论数据集
  7. android动画送礼物,Android开发仿映客送礼物效果
  8. C# 使用Salt+Hash来为密码加密
  9. 用户注册+登录(下)
  10. 自定義 ForkJoinPool 線程池,并消除classLoader加载失败的问题