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
     
     
     
     
  • 相关阅读:
    .NET创建WebService服务简单的例子
    SVN服务器搭建
    Visual Studio 2017 系统发布部署服务器教程
    C#进阶--WebApi异常处理机制
    利用iis虚拟目录实现文件服务器功能(分布式存储)
    jQuery 选择器
    jQuery 简介
    从「闭包」到 思考人生
    跨域
    ajax 和 mock 数据
  • 原文地址:https://www.cnblogs.com/foohack/p/6645582.html
Copyright © 2011-2022 走看看