`

mina2和https长连接总结

 
阅读更多

一个项目托了2年了,坑爹啊。郁闷啊

上次需求修改之后,这次通过了st的时候,发现公网不让使用socket。这里解释下为什么不让:项目是银行项目,名称就不说了,后台部署在行内,客户端部署在客户公网,各个银行的前置机也是部署在公网和客户端一起,我们的客户端负责和各个银行的前置机通信做查余额或者支付等的业务。

 

第一个版本设计的时候,老大们拍胸部说客户端可以和我们的后台socket通信的,然后由于种种原因,第一个版本不行,都已经到ST阶段了啊,没办法,老大说改我们就改,需求重新来过,第二个版本又到了st阶段,tmd说公网不让使用socket与行内联网,要使用Https,郁闷啊,https下面不就是socket么。

 

没办法,改呗。

 

现在使用https长连接,使用jdk里面的exchanger对象实现。方法很简单,客户端上来,服务器不给相应,等后台业务过来了,然后再返回给客户端,底层的压力现在都在web容器上。然后我们接着压力测试。

 

 

业务是另外一个系统(行内的)通过mina2发给我们后台的,因为是行内,所以可以用socket,就是Mina2,。

 

测试发现了很多问题啊:

1、数据库连接不够,因为我们的框架设计是从servlet进入就开始数据库连接创建,到业务结束才会关闭,中间又有很多过滤器,过滤器里面又有自己创建连接,导致后台经常死掉,死的位置就是创建数据库连接。然后大范围的整理后台代码。

 

2、如果并发很高,后台会死,死的位置是在mina2,网上找了很多资料,有一个哥们说:如果mina2接收到之后处理业务需要很长时间,最好另起线程,然后释放mina2的接收线程。接着改。。。

 

3、。。。。其他(不说了)

分享到:
评论
5 楼 smallbee 2012-07-17  
jinkun 写道
MINA2.0出现WriteTimeoutException,请问大侠如何解决

是不是超时时间问题,具体网上找找解决办法,我记得应该是超时时间。
4 楼 jinkun 2012-07-17  
MINA2.0出现WriteTimeoutException,请问大侠如何解决
3 楼 smallbee 2011-08-31  
scholers 写道
这个项目确实,,
并发有多少?
应该不是MINA2并发的问题吧?

非mina2的问题,mina2接收到业务之后,由于200笔的业务处理时间很长,是一个串行的过程,1、导致了数据库连接无法释放  2、mina2的接收线程一直在处理业务,当最大的接收线程都在处理业务的时候,就无法接收业务系统指令了。  所以无论你配置多少,都是有问题的,所以我在请求层另起线程处理后台业务,将mina2的接收线程返回,这样就能有更好的并发。

我们在压力测试的时候,使用我自己写的一个jmeter,重新了socket,全部门20个人一起测试,每个人5个银行接口,一个银行接口每5分钟发起200笔指令,发5次。加上bserver还有模拟延时返回。能处理完,但是又点吃力的。
2 楼 scholers 2011-08-30  
MINA2启动的时候有没有指定线程池呢?
1 楼 scholers 2011-08-30  
这个项目确实,,
并发有多少?
应该不是MINA2并发的问题吧?

相关推荐

Global site tag (gtag.js) - Google Analytics