十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容介绍了“服务器异常问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,成都创新互联在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到成都微信小程序,软件开发,手机APP定制开发,十年企业网站建设服务经验,为企业提供网站设计,网站运营一条龙服务.为企业提供营销型网站,按需求定制开发,原创设计,十年品质,值得您的信赖.
服务背景:
流数据接收--> 解析过滤-->调用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();
}
}
}
“服务器异常问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!