Chinaunix首页 | 论坛 | 博客
  • 博客访问: 62820
  • 博文数量: 37
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 430
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-26 01:42
文章分类

全部博文(37)

文章存档

2011年(2)

2010年(20)

2009年(15)

我的朋友

分类:

2010-02-10 16:00:28

#errpt

9D30B78E   0202213210 T S tty0           输入有接收器溢出

这篇文档将要详细解释一下产生TTY_OVERRUN错误的原因并提供一些纠正此种错误的方法。
[
说明]
      
进入一个串口的数据被设备驱动程序带进并存储到内核的一个缓冲器里,在一个用户程序来读取这些数据之前数据一直保存在缓冲器里。TTY_OVERRUN错误不是tty的联接有问题,而是进程发送和接受数据的结果,tty只不过是建立了两个进程之间通讯的联接。当一个进程发送数据太快而另一个进程读取的太慢,错误就会发生,在这种情况下,接受端数据堆积并且溢出缓冲器,在缓冲器里老数据被推出新数据代替进入,错误就被记录到错误日志里。
[
原因]                                                  
     
数据(噪音,真实的数据等)进入串口,但是没有用户进程来读取它,因此溢出缓冲器;如果实际上有一个进程读取数据,但是数据进来的比进程能够处理的速度快这种错误也会发生。这种溢出在集群环境里ttys用作HACMP的心跳联接的情况下比较常见。
      
它是由某些事情(可能是系统里一些别的驱动程序)把持着tty的中断以致于他们不能得到足够快地预期防止数据丢失而引起的。
[
解决方法]
      
检查看是否有进程在这个tty上运行:
#fuser /dev/ttyX                                                                     
#ps -ef | grep ttyX
      
如果没有进程正在这个TTY上运行:
1.
可能端口连接有一个不该连接在上面的设备 ,移出这个设备;
2.
设备可能损坏了,更换掉这个设备;
3.
电缆可能损坏了,更换掉电缆;
4.
线路中可能有电磁干扰,用一根屏蔽了的电缆更换现在的电缆或者是消除电磁干扰的因素。
      
如果有一个进程正在这个tty上运行:
      
使用 "lsattr -El ttyX" 或者使用 "smit tty" 命令进入smit菜单来显示tty的属性,在电缆允许的情况下更改流控制属性(flow control)“RTS"(这个tty连接的另一端也需要把流控制设定为RTS);
      
如果流控制设定为RTS后仍然有溢出错误,调低速率到9600(这需要在连接的两端都要做),你能够通过以下命令来tty正在运行的速率:
# stty -a < /dev/ttyX
      
如果tty被配置为9600,但是stty命令输出显示它正在运行一个更高的速率,那么运行在这个tty上的进程正在改变了速率,在HACMP环境里这个进程是hatsd.
1)
使用 HACMP/RSCT 配置步骤来降低线路速率到9600
#smitty clstop - forced (
在所有的节点上执行)
#smitty hacmp - configure cluster - cluster topology - configure network modules - chg/show a network module
 
在速率的参数区域更改为9600,然后同步拓扑结构,在所有节点上启动HA
2
)使用TTY配置步骤来降低"RECEIVE trigger level"参数到1
# smitty tty                                                        
       Change / Show Characteristics of a TTY                           
       RECEIVE trigger level                              [1]
[
附加信息]
     
如果在检查和纠正了上面提到的所有内容还有TTY_OVERRUN错误发生,那么附加的推荐措施是:
增加进程的优先权,升级或者增加处理器,减轻系统的负载。

阅读(1054) | 评论(0) | 转发(0) |
0

上一篇:心随我动~

下一篇:rman创建脚本

给主人留下些什么吧!~~