`

诊断RAC数据库上的“IPC Send timeout”问题(原创)

 
阅读更多

IPC Send timeout故障现象

RAC 数据库上比较常见的一种问题就是“IPC Send timeout”。数据库Alert log中出现了“IPC Send timeout”之后,经常会伴随着ora-29740 或者 "Waiting for clusterware split-brain resolution"等,数据库实例会因此异常终止或者被驱逐出集群

比如:

实例1的ALERT LOG:

Thu Jul 02 05:24:50 2012

IPC Send timeout detected.Sender: ospid 6143755      <==发送者

Receiver: inst 2 binc 1323620776 ospid 49715160        <==接收者

Thu Jul 02 05:24:51 2012

IPC Send timeout to 1.7 inc 120 for msg type 65516 from opid 13

Thu Jul 02 05:24:51 2012

Communications reconfiguration: instance_number 2

Waiting for clusterware split-brain resolution       <==出现脑裂

Thu Jul 02 05:24:51 2012

Trace dumping is performing id=[cdmp_20120702052451]

Thu Jul 02 05:34:51 2012

Evicting instance 2 from cluster   <==过了10分钟,实例2被驱逐出集群实例2的ALERT LOG:

Thu Jul 02 05:24:50 2012

IPC Send timeout detected. Receiver ospid 49715160       <==接收者

Thu Jul 02 05:24:50 2012

Errors in file /u01/oracle/product/admin/sales/bdump/sales2_lms6_49715160.trc:

Thu Jul 02 05:24:51 2012

Waiting for clusterware split-brain resolution

Thu Jul 02 05:24:51 2012

Trace dumping is performing id=[cdmp_20120702052451]

Thu Jul 02 05:35:02 2012

Errors in file /u01/oracle/product/admin/sales/bdump/sales2_lmon_6257780.trc:

ORA-29740: evicted by member 0, group incarnation 122  <==实例2出现ORA- 29740错误,并被驱逐出集群

Thu Jul 02 05:35:02 2012

LMON: terminating instance due to error 29740

Thu Jul 02 05:35:02 2012

Errors in file /u01/oracle/product/admin/sales/bdump/sales2_lms7_49453031.trc:

ORA-29740: evicted by member , group incarnation

在RAC实例间主要的通讯进程有LMON, LMD, LMS等进程。正常来说,当一个消息被发送给其它实例之后,发送者期望接收者会回复一个确认消息,但是如果这个确认消息没有在指定的时间内收到(默认300秒),发送者就会认为消息没有达到接收者,于是会出现“IPC Send timeout”问题。

这种问题通常有以下几种可能性:

1. 网络问题造成丢包或者通讯异常。

2. 由于主机资源(CPU、内存)问题造成这些进程无法被调度或者这些进程无响应。

3. Oracle Bug.

4. AIX平台没有打IZ97457丁包

网络问题造成的“IPC Send timeout”例子

实例1的Alert log中显示接收者是2号机的进程49715160,

Thu Jul 02 05:24:50 2012

IPC Send timeout detected.Sender: ospid 6143755       <==发送者

Receiver: inst 2 binc 1323620776 ospid 49715160       <==接收者

查看当时2号机的OSWatcher的vmstat输出,没有发现CPU和内存紧张的问题,查看OSWatcher的netstat输出,在发生问题前几分钟,私网的网卡上有大量的网络包传输。

Node2:

zzz Thu Jul 02 05:12:38 CDT 2012

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en1   1500  10.182.3    10.182.3.2       4073847798     0 512851119     0     0 <==4073847798 - 4073692530 = 155268 个包/30秒

zzz Thu Jul 02 05:13:08 CDT 2012

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en1   1500  10.182.3    10.182.3.2       4074082951     0 513107924     0     0 <==4074082951 - 4073847798 = 235153 个包/30秒

Node1:

zzz Thu Jul 02 05:12:54 CDT 2012

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en1   1500  10.182.3    10.182.3.1       502159550     0 4079190700     0     0 <==502159550 - 501938658 = 220892 个包/30秒

zzz Thu Jul 02 05:13:25 CDT 2012

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en1   1500  10.182.3    10.182.3.1       502321317     0 4079342048     0     0 <==502321317 - 502159550 = 161767 个包/30秒

查看这个系统正常的时候,大概每30秒传输几千个包:

zzz Thu Jul 02 04:14:09 CDT 2012

Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll

en1   1500  10.182.3    10.182.3.2       4074126796     0 513149195     0     0 <==4074126796 - 4074122374 = 4422个包/30秒

这种突然的大量的网络传输可能会引发网络传输异常,另外网络的UDP或者IP包丢失也会造成该错误。对于这种情况,需要联系网管对网络进行检查。在某些案例中,重启私网交换机或者调换了交换机后问题不再发生。(请注意,网络的正常的传输量会根据硬件和业务的不同而不同。)

CPU负载过高造成的“IPC Send timeout”例子

实例1的Alert log中显示接收者是2号机的进程1596935,

Fri Aug 01 02:04:29 2008 

 IPC Send timeout detected.Sender: ospid 1506825 <==发送者

 Receiver: inst 2 binc -298848812 ospid 1596935  <==接收者

查看当时2号机的OSWatcher的vmstat输出:

 zzz ***Fri Aug 01 02:01:51 CST 2008 

 System Configuration: lcpu=32 mem=128000MB 

 kthr     memory             page              faults        cpu     

 ----- ----------- ------------------------ ------------ ----------- 

  r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa 

 25  1 7532667 19073986   0   0   0   0    5   0 9328 88121 20430 32 10 47 11 

58  0 7541201 19065392   0   0   0   0    0   0 11307 177425 10440 87 13  0  0 <==idle的CPU为0,说明CPU100%被使用

61  1 7552592 19053910   0   0   0   0    0   0 11122 206738 10970 85 15  0  0 

 zzz ***Fri Aug 01 02:03:52 CST 2008 

   System Configuration: lcpu=32 mem=128000MB 

   kthr     memory             page              faults        cpu     

 ----- ----------- ------------------------ ------------ ----------- 

  r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa 

 25  1 7733673 18878037   0   0   0   0    5   0 9328 88123 20429 32 10 47 11 

81  0 7737034 18874601   0   0   0   0    0   0 9081 209529 14509 87 13  0  0 <==CPU的run queue非常高

80  0 7736142 18875418   0   0   0   0    0   0 9765 156708 14997 91  9  0  0 <==idle的CPU为0,说明CPU100%被使用

上面这个例子说明当主机CPU负载非常高的时候,接收进程无法响应发送者,从而引发了“IPC Send timeout”。

引起IPC Send timeout问题的常见bug

10g平台上该问题的常见Bug有Bug 5190596和Bug 6200820。这两个bug多出现在10.2.0.3和10.2.0.4,到了10.2.0.5版本就已经修复了该bug,具体请参见MOS上的文章:

LMON dumps LMS0 too often during DRM leading to IPC send timout [ID 5190596.8]

'IPC Send Timeout Detected' errors between QMON Processes after RAC reconfiguration [ID 458912.1]

11g平台上的常见bug有Bug 6200820和Bug 7653579具体请参见MOS上的文章:

Bug 6200820  AQ node affinity not reconfigured after RAC reconfiguration (QMNC timeouts)

Bug 7653579 - IPC send timeout in RAC after only short period [ID 7653579.8]

AIX平台没有打IZ97457丁包引起的 IPC Send timeout

关于这点MOS上的这篇文章

AIX VIO: Block Lost or IPC Send Timeout Possible Without Fix of APAR IZ97457 [ID 1305174.1]

有如下介绍

Applies to:

Oracle Server - Enterprise Edition - Version 9.2.0.2 and later

IBM AIX on POWER Systems (64-bit)

Symptoms

Environment with IBM AIX VIO experiences one or some or all of the following symptoms:

Packet Loss

Cache Fusion "block lost"

IPC Send timeout

Instance Eviction

SKGXPSEGRCV: MESSAGE TRUNCATED user data nnnn bytes payload nnnn bytes

Cause

AIX issue APAR IZ97457 - A VIOS Server will not forward traffic from its VIO Clients to the external network

Solution

Please engage your OS vendor for fix.

Oracle的建议是打上补丁,IZ97457补丁的介绍如下
Error description
A VIOS Server will not forward traffic from its VIO Clients to the external network.
Packets from the VIO Client travel to the hypervisor(phype) but the packets are dropped by the hypervisor as it attempts to deliver the packet to the VIO Server's trunk adapter.
The hypervisor will have dropped the packets because there are no buffers to place the data in. On the VIOServer,interrupts are not activating the trunk adapter to read and remove data from its buffers. This results in having full buffers at the trunk adapter.
Since the trunk adapter's buffers are full, phype cannot deliver the data and so VIO Clients cannot get packets through the SEA adapter and out to the network.
The problem was discovered on P7 systems where Vlans on the SEA are used.
"Hypervisor Receive" errors on the trunk adapter will increase as this problem occurs and the VIO Clients are not able to reach the outside network.
Problem summary
Unresponsive VIO Clients with traffice not forwarded to external network.
Problem conclusion
Ensure proper locking around receive scheduling operations.
可以看到,IZ97457该补丁是用于处理网络缓冲池用满的情况,建议AIX系统的用户检查下是否打了这个补丁。

 

参考至:https://blogs.oracle.com/Database4CN/entry/%E5%A6%82%E4%BD%95%E8%AF%8A%E6%96%ADrac%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%8A%E7%9A%84_ipc_send_timeout_%E9%97%AE%E9%A2%98
              http://www.killdb.com/2011/11/29/ipc-send-timeout-error-caused-2-nodes-to-reboot-in-rac.html

              http://www.eygle.com/archives/2009/06/ipc_send_timeout_instance_evicted.html

              AIX VIO: Block Lost or IPC Send Timeout Possible Without Fix of APAR IZ97457 [ID 1305174.1]

              LMON dumps LMS0 too often during DRM leading to IPC send timout [ID 5190596.8]

              'IPC Send Timeout Detected' errors between QMON Processes after RAC reconfiguration [ID 458912.1]

              Bug 6200820  AQ node affinity not reconfigured after RAC reconfiguration (QMNC timeouts)

              Bug 7653579 - IPC send timeout in RAC after only short period [ID 7653579.8]

Top 5 issues for Instance Eviction (Doc ID 1374110.1)

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

0
2
分享到:
评论

相关推荐

    Oracle SOA 套件和 RAC 数据库事务一致性配置指南

    本文档主要介绍了在 Oracle RAC 数据库上部署 Oracle SOA 套件时,为确保事务一致性(XA)所必需的要求及配置。文档的具体范围集中在 Oracle SOA 套件与 Oracle 应用服务器之间的交互上,并未涵盖 Oracle SOA 套件...

    RAC数据库性能优化

    - **在RAC中使用自动数据库诊断监视程序(ADDM)**:通过ADDM报告来进一步分析问题并提出改进建议。 ##### 2. CPU时间和等待时间优化范围 - **CPU时间与等待时间的比较**:优化过程中需要关注的是系统花费在实际工作...

    Oracle RAC数据库架构分析与实战攻略

    综上所述,Oracle 的 MAA 架构通过整合 RAC、Dataguard 和其他相关技术,提供了一个全面的解决方案,不仅解决了数据库层面的问题,还考虑到了整个 IT 架构的高可用性需求。通过这种方式,企业可以有效地应对各种故障...

    OracleRAC数据库集群视频教程(10讲)

    教程名称:Oracle RAC数据库集群视频教程(10讲)课程目录:【】1.OracleRAC集群体系结构_drm【】10.测试OracleRAC数据库集群功能【】2.安装OracleRAC数据库(一)【】3.安装OracleRAC数据库(二)_drm【】4.安装...

    【RAC】rac数据库的备份和恢复rac数据库的备份和恢复.pdf

    ### RAC环境下Oracle数据库的备份与恢复 #### 一、引言 在现代企业级应用环境中,Oracle Real Application Clusters (RAC) 提供了一种高效且可靠的解决方案,用于实现高性能、高可用性和可伸缩性的数据库服务。...

    Oracle RAC数据库集群PPT教案.pptx

    Transparent Application Failover 是 RAC 数据库集群技术的一种高可用性机制,可以在节点故障时自动将用户连接到其他可用的节点上,从而实现透明的应用程序故障切换和高可用的数据库服务。 RAC 的实现优势 -------...

    AIX下ORACLE RAC数据库系统日常维护常用命令.doc

    AIX 下 ORACLE RAC 数据库系统日常维护常用命令 本文档旨在介绍 AIX 下 ORACLE RAC 数据库系统日常维护常用命令,旨在帮助用户更好地维护和管理 ORACLE RAC 数据库系统。 一、ORACLE 数据库系统状态查看 在 AIX ...

    Oracle RAC数据库环境安装配置手册 For RHEL

    Oracle RAC环境的安装配置是整个解决方案的关键步骤,本手册将指导用户如何在 RHEL(Red Hat Enterprise Linux)平台上安装和配置 Oracle RAC 数据库环境。 一、存储配置 在安装 Oracle RAC 之前,需要先进行存储...

    Oracle RAC数据库缓存优化方法探讨.pdf

    Oracle RAC数据库缓存优化方法探讨 Oracle RAC(Real Application Clusters)是一种高可用性的关系数据库集群解决方案,能够提供高性能、可靠性和可扩展性的数据存储服务。在现代信息化社会中,数据库系统的可靠性...

    深度挖掘ORACLERAC数据库架构分析与实战攻略.part2

    一共分为3个部分,共9章。第一部分介绍集群的概念与RAC的结构和原理以及存储基本知识。第二部分全面介绍RAC的安装和管理维护以及RAC的备份恢复。第三部分对RAC性能调优的方法和工具进行了分析。

    关于Oracle RAC数据库部署与管理的实践.pdf

    Oracle RAC 数据库可以解决云上数据库的多次部署问题,并提供高可用性、易伸缩性和低成本等特点。 Oracle RAC 数据库部署方式 Oracle RAC 数据库可以通过双机并行、负载均衡和多节点部署等方式实现高可用性和高...

    最牛逼的Oracle11gRAC数据库安装手册

    最牛逼的Oracle11gRAC数据库安装手册

    深信服超融合平台Oracle 11G RAC数据库部署方案-Linux v1.6.pdf

    Oracle 11G RAC 数据库部署方案是深信服超融合平台中一个重要的组件,该方案提供了在 Linux 操作系统上部署 Oracle 11G RAC 数据库的详细指导。本方案适用于 Oracle 11.x、Red Hat 6.x、Red Hat 7.x、CentOS 6.x 和 ...

    Oracle11gRAC数据库巡检手册.doc

    Oracle 11g RAC 数据库巡检手册 一、数据库巡检基础概念 Oracle 11g RAC 数据库巡检手册旨在帮助数据库管理员快速了解 Oracle 11g RAC 数据库的各个组件、进程和参数,以便更好地管理和维护数据库。该手册涵盖了 ...

    ORACLE RAC 数据库负载均衡方案

    - **统一管理**:RAC提供了统一的管理系统,使得数据库管理员只需在一个单一的管理界面上进行安装、配置、备份、升级等操作,这些管理功能会自动分配到合适的节点上。 - **虚拟服务器**:通过这种方式,数据库管理员...

    基于Oracle RAC数据库集群系统研究与实现.pdf

    总之,Oracle RAC数据库集群系统是解决高性能、高可靠性及易扩展问题的有效工具,尤其适用于需要处理大量并发请求和保障数据一致性的大型企业或机构。在实际应用中,结合具体业务场景进行合理配置和优化,可以最大...

    基于Linux平台Oracle RAC集群数据库监控系统的设计与实现.pdf

    本文设计了一种基于Linux平台的Oracle RAC集群数据库监控系统,旨在解决企业信息化日常管理中的数据库系统稳定性问题。该系统使用信息化方法,在Linux系统中设置Job运行shell脚本自动收集需要监控的指标信息,并使用...

    高校数字化校园ORACLERAC数据库集群分析与部署.pdf

    Oracle RAC(Real Application Clusters)数据库集群技术,是解决这一问题的有效方案。 Oracle RAC是一种基于集群技术的数据库解决方案,它允许多台服务器共享同一个物理数据库,提供高可用性和可扩展性。在高校...

    深信服超融合平台Oracle 11G RAC数据库部署方案-Linux v1.6.doc

    Oracle 11G RAC 数据库部署方案 本文档提供了 Oracle 11G RAC 数据库在 Linux 环境下的部署方案,涵盖了环境检查、环境规划、安装环境搭建、数据库安装、集群配置、ASM 磁盘组管理、数据库性能优化等方面的内容。 ...

Global site tag (gtag.js) - Google Analytics