博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
因域名解析导致数据库连接延迟分析
阅读量:7003 次
发布时间:2019-06-27

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

一、现状记录

[oracle@node1 ~]$
/sbin/ifconfig
eth1      Link encap:Ethernet  HWaddr 00:25:90:04:AB:6B 
          
inet addr:192.168.9.140  Bcast:192.168.15.255  Mask:255.255.248.0
          
inet6 addr: fe80::225:90ff:fe04:ab6b
/64 
Scope:Link
          
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          
RX packets:23530402 errors:0 dropped:0 overruns:0 frame:0
          
TX packets:10959123 errors:0 dropped:0 overruns:0 carrier:0
          
collisions:0 txqueuelen:0
          
RX bytes:15308483748 (14.2 GiB)  TX bytes:10087987532 (9.3 GiB)
--IP地址为192.168.9.140
 
[oracle@node1 ~]$
more 
/etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               ecp-db localhost.localdomain localhost
192.168.9.140   node1.srtcloud.com
--域名node1.srtcloud.com对应ip192.168.9.140
 
[oracle@node1 ~]$ lsnrctl status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1.srtcloud.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR
for 
Linux: Version 10.2.0.5.0 - Production
Start Date                04-NOV-2011 09:08:51
Uptime                    21 days 4 hr. 58 min. 45 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File  
/opt/oracle/product/10
.2.0
/db_1/network/admin/listener
.ora
Listener Log File        
/opt/oracle/product/10
.2.0
/db_1/network/log/listener
.log
Listening Endpoints Summary...
  
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node1.srtcloud.com)(PORT=1521)))
Services Summary...
Service
"ecp" 
has 2 instance(s).
  
Instance
"ecp"
, status UNKNOWN, has 1 handler(s)
for 
this service...
  
Instance
"ecp"
, status READY, has 1 handler(s)
for 
this service...
Service
"ecpXDB" 
has 1 instance(s).
  
Instance
"ecp"
, status READY, has 1 handler(s)
for 
this service...
Service
"ecp_XPT" 
has 1 instance(s).
  
Instance
"ecp"
, status READY, has 1 handler(s)
for 
this service...
Service
"ora11g" 
has 2 instance(s).
  
Instance
"ora11g"
, status UNKNOWN, has 1 handler(s)
for 
this service...
  
Instance
"ora11g"
, status READY, has 1 handler(s)
for 
this service...
Service
"ora11gXDB" 
has 1 instance(s).
  
Instance
"ora11g"
, status READY, has 1 handler(s)
for 
this service...
The
command 
completed successfully
--说明:ora11g是oracle 11g,ecp是oracle 10g
--当前使用域名node1.srtcloud.com监听
 
[oracle@node1 ~]$
more 
/opt/oracle/product/10
.2.0
/db_1/network/admin/tnsnames
.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
 
ECP =
  
(DESCRIPTION =
    
(ADDRESS = (PROTOCOL = TCP)(HOST = node1.srtcloud.com)(PORT = 1521))
    
(CONNECT_DATA =
      
(SERVER = DEDICATED)
      
(SERVICE_NAME = ecp)
    
)
  
)
 
ORA11G =
  
(DESCRIPTION =
    
(ADDRESS = (PROTOCOL = TCP)(HOST = node1.srtcloud.com)(PORT = 1521))
    
(CONNECT_DATA =
      
(SERVER = DEDICATED)
      
(SERVICE_NAME = ora11g)
    
)
  
)
--tns也通过域名访问
 
[oracle@node1 ~]$
more 
/etc/resolv
.conf
nameserver 211.155.235.201
nameserver 211.155.235.188
--当前有效的dns服务器
 
[oracle@node1 ~]$
more 
/etc/nsswitch
.conf |
grep 
hosts:
hosts:     files dns
--域名解析顺序

二、数据库正常工作分析

1、tns工作:客户端通过tns访问数据库,tns配置的是域名访问,所以需要解析,因为此刻解析的顺序是先利用/etc/hosts解析,所以读取hosts文件,获取到ip,然后访问对应数据库,和监听接触。
2、监听工作:监听的是域名,其实也是通过hosts解析成ip的
3、这里能够正常的工作,是因为hosts文件解析了域名
三、模拟数据库访问延迟

[oracle@node1 ~]$
more 
/etc/nsswitch
.conf |
grep 
hosts:
hosts:     dns files
--先使用dns服务器解析,再使用hosts文件
 
[oracle@node1 ~]$
more 
/etc/resolv
.conf
nameserver 11.1.1.1
--无效的dns服务器
 
[oracle@node1 ~]$ sqlplus chf
/xifenfei
@ora11g
 
SQL*Plus: Release 10.2.0.5.0 - Production on Fri Nov 25 14:44:55 2011
 
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
--会在这里一个很长的时间等待
 
[oracle@node1 ~]$ lsnrctl status
 
LSNRCTL
for 
Linux: Version 10.2.0.5.0 - Production on 25-NOV-2011 14:48:26
 
Copyright (c) 1991, 2010, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node1.srtcloud.com)(PORT=1521)))
--也会一个长时间的等待
 
--问题原因:就是因为解析域名的时候,先去访问dns服务器,因为该ip非dns服务器ip,所以会一直等待该ip超时,
--然后访问hosts文件获取ip地址(这个就是为什么我们登录或者查看监听状态的时候,会出现如此长的时间的等待)

其实因为dns延迟的现象有很多种,我这里只是举了一个最简单,比较常见的例子,在处理因dns解析的监听延迟的问题上,可以参考下面几点:

1、如果非特殊情况,尽可能使用ip地址在监听和tns中
2、如果是使用域名,请尽可能使用hosts解析,解析顺序配置为files优先(因为dns服务器有很多不确定,不可控因素)
3、如果一定要使用dns服务器解析,请把稳定的dns服务器配置在第一项,尽可能避免出现dns服务器不可达或者不存在该域名的现象

转:http://www.xifenfei.com/2011/11/%e5%9b%a0%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90%e5%af%bc%e8%87%b4%e6%95%b0%e6%8d%ae%e5%ba%93%e8%bf%9e%e6%8e%a5%e5%bb%b6%e8%bf%9f%e5%88%86%e6%9e%90.html

文章可以转载,必须以链接形式标明出处。
本文转自 张冲andy 博客园博客,原文链接: http://www.cnblogs.com/andy6/p/5759257.html
  ,如需转载请自行联系原作者
你可能感兴趣的文章
springboot的日志框架slf4j (使用logback输出日志以及使用)
查看>>
vim显示行号、语法高亮、自动缩进、添加下划线的设置
查看>>
iis7下站点日志默认位置
查看>>
canvas 画线
查看>>
gif软件(ShareX)
查看>>
一张图看懂AI、机器学习和深度学习的区别
查看>>
java 去掉html标签
查看>>
java利用反射将pojo转为json对象
查看>>
docker 删除无用的镜像文件的命令小计
查看>>
svn 冲突解决办法(黄色感叹号)
查看>>
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
查看>>
js学习(三)-使用大括号({ })语法创建无类型对象
查看>>
Java图片缩略图裁剪水印缩放旋转压缩转格式-Thumbnailator图像处理
查看>>
基于 HTML5 OpenLayers3 实现 GIS 电信资源管理系统
查看>>
notepad++自动对齐使用空格代替Tab并将空格显示为小点
查看>>
开源APM系统skywalking介绍与使用
查看>>
rabbitmqctl 报错
查看>>
elasticsearch 安装ik中文分词
查看>>
解决OS睡眠功能中,移动鼠标就会唤醒
查看>>
深入理解VMware虚拟机网络通信原理
查看>>