本篇文章为大家展示了java.net.SocketException: Broken pipe报错可能的原因是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
线上跑的java应用中的stderr.log中偶尔会有这样的日志出现,出现问题时系统负载并不高,并且系统可以自己恢复正常。google了很久,也困扰俺多日,今天对这个问题做一个了断。
产生这个问题的原因可能有以下几个: 1、mysql的驱动的问题,我的驱动是mysql-connector-java-3.1.11-bin.jar 如果有兴趣测试话,可以使用其他新版本的mysql驱动来试试吧。
2、防火墙和网络上的问题,或者服务器发生了crash(有意或无意导致) 同学们可以检查产生"java.net.SocketException: Broken pipe" 错误的时候服务器、网络是否有异常?
3、应用系统的数据库连接池导致,最大的可能就是程序上写的不严谨 吼吼! 新手在开发过程中都难避免的失误:忘记数据库连接的关闭(纯jdbc的操作中常见,不过这个还好找啦,压力测试中如果看到数据库连接数多或者干脆挂掉可以找出原因的); 另外就是提交事物时,在对数据操作中没有做明确的commit或者rollback,如果忘记了提交commit,在你尝试使用类似的resultset去操作或者做其他的操作时就有可以能出现这样的问题,这样的悬挂着连接一直要等到超时mysql将其kill掉。仔细检查你应用的事物中是否都做了明确的提交操作呢?或者干错使用Hibernate,试试C3P0、Proxool这样的连接池吧。
上述内容就是java.net.SocketException: Broken pipe报错可能的原因是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。