说一下需求:
1、客户端1000多个,需要同时向服务器发送数据;
2、每个客户端每秒发送一次数据,并且是不间断地发送至少24小时;
3、服务器接收到数据后存储到数据库,我们目前用的是postgresql服务器用到了mina框架,当接收到数据后先把数据缓存到一个list里,有另外一个线程对该list进行检测,当数据量达到500
条时批量写入数据库。开始每个客户端每秒发送数据量大约1k,同时开启3000个并发都可以支持,但是现在数据量上升到10k左右的时候性能急剧下降,
并发超过300个的时候就报错:
java.lang.OutOfMemoryError: Java heap space
        at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39)
        at java.nio.ByteBuffer.allocate(ByteBuffer.java:312)
        at org.apache.mina.common.SimpleByteBufferAllocator.allocate(SimpleByteBufferAllocator.java:45)
        at org.apache.mina.common.ByteBuffer.allocate(ByteBuffer.java:225)
        at org.apache.mina.common.ByteBuffer.allocate(ByteBuffer.java:214)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.java:210)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcessor.java:198)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProcessor.java:45)
        at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:485)
        at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
        at java.lang.Thread.run(Thread.java:595)整了几天了,始终没弄清楚。小弟也是才接触mina以及java nio,开始以为是java虚拟机内存不够,可是调大了以后还是同样出错。
郁闷阿,大家给帮帮忙吧。