本篇内容介绍了“服务器异常问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
服务背景:
流数据接收--> 解析过滤-->调用socket服务 写入mina服务。
服务器异常日志:
java.io.IOException: Too many open files Failed to open a selectorFailed to create a new instance of org.apache.mina.transport.socket.nio.NioProcessor:null
定位到问题代码:
public void init() { NioSocketConnector connector = new NioSocketConnector(); connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.defaultCharset()))); connector.setConnectTimeoutMillis(10000); connector.setHandler(new SocketClientHandler()); connector.getSessionConfig().setReceiveBufferSize(10240); // 设置接收缓冲区的大小 connector.getSessionConfig().setSendBufferSize(10240);// 设置输出缓冲区的大小 ConnectFuture cf = connector.connect( new InetSocketAddress(socketConfig.getSocketServerIp(), socketConfig.getSocketServerPort())); // 等待连接创建完成 cf.awaitUninterruptibly(); session = cf.getSession(); }
问题产生原因:
当mina服务端长时间连接不上 ,并发连接特别多的时候 都会导致上述问题。
解决方案:当连接不成功的时候 进行施放句柄。
修改之后:
public void init() { NioSocketConnector connector = new NioSocketConnector(); connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.defaultCharset()))); connector.setConnectTimeoutMillis(10000); connector.setHandler(new SocketClientHandler()); connector.getSessionConfig().setReceiveBufferSize(10240); // 设置接收缓冲区的大小 connector.getSessionConfig().setSendBufferSize(10240);// 设置输出缓冲区的大小 ConnectFuture cf = connector.connect( new InetSocketAddress(socketConfig.getSocketServerIp(), socketConfig.getSocketServerPort())); // 等待连接创建完成 cf.awaitUninterruptibly(); if (cf.isDone()) { if (!cf.isConnected()) { log.error("fail connect {} {}", socketConfig.getSocketServerIp(), socketConfig.getSocketServerPort()); connector.dispose(); throw new RuntimeException("Not connect to Mina Server"); } else { session = cf.getSession(); } } }
“服务器异常问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3527075/blog/4778834