zoukankan      html  css  js  c++  java
  • Oracle死锁导致的tomcat抛损坏的管道异常

    今天遇到个问题,就是由于清空数据库的数据,设备采集客户端一直在往服务器上发采集回来的数据,但是由于某种原因,数据库的某语句死锁了。

    数据库的死锁语句是通过这个SQL查出来的:select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in
    (select session_id from v$locked_object))

    由于死锁了,所以就会造成tomcat一直长时间无响应,客户端的http接口设置了socket超时,一旦在指定时间段内等不到服务器的回应,就会把客户端的socket连接关闭掉。

    然后由于tomcat不知道链接已经关闭了,还在往自己的socket中写数据,就导致Java抛broekn pipe的异常。

    至于怎么得到以上的结论的:是通过

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    命令行得到服务器的SOCKET状态,
    CLOSE_WAIT 数量一直在语句死锁的期间增高,这是不正常的,这个状态增高就表明服务器端SOCKET被动关闭链接数越来越高(也就说,由于死锁得不到响应,客户端主动关闭链接数越来越多,但是死锁解除了,服务器还往socket中写就有异常了)
     
    references:
    http://www.cnblogs.com/sunxucool/p/3449068.html
    http://blog.csdn.net/zqz_zqz/article/details/52235479
    http://blog.sina.com.cn/s/blog_4586764e01012cqf.html
     
     
     
     
  • 相关阅读:
    Debian6.0 linux安装redmine
    Backtrack无线WPA2破解过程
    回溯法解决0-1背包问题
    机试笔记8--栈与优先队列
    计算机网络笔记--数据链路层
    计算机网络笔记--物理层--调制
    计算机网络笔记--物理层--编码
    计算机网络笔记--物理层-概述
    机试笔记7--数学问题
    两种简单的字符串匹配算法
  • 原文地址:https://www.cnblogs.com/foohack/p/6645582.html
Copyright © 2011-2022 走看看