最近碰到一个问题,求老哥们指点:
我们有一个公司表,单表数据量3亿多,还有一个产品表,单表数据量2.7亿,这两个表要关联查询,构造的条件不同,查询的时间快慢也不同,大概在3s~90s之间吧。
因为用户根据条件搜索后,肯定是要等待结果出现,但是如果用户搜索了几个慢SQL后,通过SHOW FULL PROCESSLIST命令,在MySQL中是可以看到那几条慢SQL还在执行的,但是看日志报错有org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe,目前猜测是查询时间太长了,然后Nginx主动断开连接了,但是这几个慢SQL会导致整个程序卡死,有时候在很多个Broken Pipe之后,还会出现OOM,然后程序就挂掉了,因为这个问题,我已经被老板吵过好几次了,有什么解决办法吗?SQL已经没法优化了,因为单表数据量在那里放着呢,另外也不要从分库分表考虑,因为是小公司,公司就我一个Java,肯定是不让动数据的,我只想不让Java程序挂掉,有解决办法吗?老哥们
Java Broken Pipe以及OOM
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-