最近给公司开发了个CMPP 和 SMGP 的关于直连移动电信网关的协议。
实现非常简单, 但是在 主运行类里面直接加了 3个线程 一个心跳 一个网关接收 一个报告
分别都是永真循环 每个线程循环里面 都sleep(300 -500) 左右的时间。
估计在服务器运行了10天左右非常 稳定。
但是最近这几天出现了 接收和心跳依然正常 但是从数据库取数据的线程不动了 而且我又加了 一个守护线程用来维护数据库的线程 出现异常system.exit(-1) 然后重启程序 可惜的是 程序并不退出 还是依然心跳和接收报告。 估计是死掉了。
可是不知道怎么解决,为什么就这两天会死掉了。 之前也考虑过是不是用的连接池过多 (一共十多个程序都在扫一个库)在数据库处排队 导致假死。 可是我查询了数据库连接池上限 是 600 并发也就才 120 绰绰有余啊。
望高手解答。 在线等!(分没多少了 全扔出去了)
实现非常简单, 但是在 主运行类里面直接加了 3个线程 一个心跳 一个网关接收 一个报告
分别都是永真循环 每个线程循环里面 都sleep(300 -500) 左右的时间。
估计在服务器运行了10天左右非常 稳定。
但是最近这几天出现了 接收和心跳依然正常 但是从数据库取数据的线程不动了 而且我又加了 一个守护线程用来维护数据库的线程 出现异常system.exit(-1) 然后重启程序 可惜的是 程序并不退出 还是依然心跳和接收报告。 估计是死掉了。
可是不知道怎么解决,为什么就这两天会死掉了。 之前也考虑过是不是用的连接池过多 (一共十多个程序都在扫一个库)在数据库处排队 导致假死。 可是我查询了数据库连接池上限 是 600 并发也就才 120 绰绰有余啊。
望高手解答。 在线等!(分没多少了 全扔出去了)
另外,搜得这个,希望有所启发
http://www.javaworld.com.tw/jute/post/view?bid=21&id=201890&tpg=16&ppg=1&sty=1&age=0#201890
还有可能是高并发+持续大数据量导致系统内存耗尽,处理速度 会超慢,因为一直在做gc
其它情况,看楼上和等楼下吧
底下说的 高并发+持续大数量如何解决比较合理
而且我守护线程发现数据库线程死掉以后整个程序也就死掉了 做 system.exit()动作 都不再响应。
关于System.exit()我觉得应该不是执行了没响应,而应该是其实并没有执行到这个指令。(这么说是不是比较暴力,只是希望楼主能早日解决问题吧)