Exception during Concurrent visit netty http server

Lookis lookisliu at gmail.com
Wed Nov 4 01:54:10 EST 2009


Hi,

i have wrote a simple http server with netty,i try to connect server with
10req/s every thing goes right,but when i try 1000req/s,Exception happended:

============exception start=============
java.lang.IllegalArgumentException: invalid version format: (LINUX-GNU)
	at
org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:95)
	at
org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68)
	at
org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:169)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.lang.IllegalArgumentException: empty text
	at
org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:90)
	at
org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68)
	at
org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:169)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:525)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelDisconnected(ReplayingDecoder.java:433)
	at
org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:502)
	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:583)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
	at org.jboss.netty.channel.Channels.close(Channels.java:1065)
	at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:178)
	at
cn.lo0kis.netty.demo.DemoServerHandler.exceptionCaught(DemoServerHandler.java:102)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.exceptionCaught(ReplayingDecoder.java:445)
	at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:619)
	at
org.jboss.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:52)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.lang.IllegalArgumentException: invalid version format: HTTP1.0
	at
org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:95)
	at
org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68)
	at
org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:169)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
============exception end=================

i have confirm that my ulimit is correct and i try the same server on vista
and linux,they all meet the problem

we can reproduce this problem with example http server,and simply wrote a
shell script just wget the server 1000 times with sleep 0.001s(or not)

i try 'ab -n 100 -c 10 http://127.0.0.1:8083' and i got exception like this:


============exception start=============
java.lang.NullPointerException
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.skipControlCharacters(HttpMessageDecoder.java:385)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:155)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.nio.channels.ClosedChannelException
	at
org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:630)
	at org.jboss.netty.channel.socket.nio.NioWorker.write(NioWorker.java:346)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:137)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at org.jboss.netty.channel.Channels.write(Channels.java:916)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:69)
	at org.jboss.netty.channel.Channels.write(Channels.java:895)
	at org.jboss.netty.channel.Channels.write(Channels.java:842)
	at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:229)
	at
cn.lo0kis.netty.demo.DemoServerHandler.writeResponse(DemoServerHandler.java:91)
	at
cn.lo0kis.netty.demo.DemoServerHandler.messageReceived(DemoServerHandler.java:42)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:391)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:506)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:490)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.lang.IllegalArgumentException: empty text
	at
org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:90)
	at
org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68)
	at
org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:169)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:525)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelDisconnected(ReplayingDecoder.java:433)
	at
org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:502)
	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:583)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
	at org.jboss.netty.channel.Channels.close(Channels.java:1065)
	at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:178)
	at
cn.lo0kis.netty.demo.DemoServerHandler.exceptionCaught(DemoServerHandler.java:102)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.exceptionCaught(ReplayingDecoder.java:445)
	at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:619)
	at
org.jboss.netty.channel.AbstractChannelSink.exceptionCaught(AbstractChannelSink.java:52)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.lang.IllegalArgumentException: empty text
	at
org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:90)
	at
org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68)
	at
org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:169)
	at
org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:78)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:454)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:525)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelDisconnected(ReplayingDecoder.java:433)
	at
org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:502)
	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:583)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
	at org.jboss.netty.channel.Channels.close(Channels.java:1065)
	at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:178)
	at
org.jboss.netty.channel.ChannelFutureListener$1.operationComplete(ChannelFutureListener.java:46)
	at
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:366)
	at
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:139)
	at
cn.lo0kis.netty.demo.DemoServerHandler.writeResponse(DemoServerHandler.java:95)
	at
cn.lo0kis.netty.demo.DemoServerHandler.messageReceived(DemoServerHandler.java:42)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:391)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:506)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:490)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
java.nio.channels.ClosedChannelException
	at
org.jboss.netty.channel.socket.nio.NioWorker.cleanUpWriteBuffer(NioWorker.java:630)
	at org.jboss.netty.channel.socket.nio.NioWorker.write(NioWorker.java:346)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:137)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at org.jboss.netty.channel.Channels.write(Channels.java:916)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:69)
	at org.jboss.netty.channel.Channels.write(Channels.java:895)
	at org.jboss.netty.channel.Channels.write(Channels.java:842)
	at org.jboss.netty.channel.AbstractChannel.write(AbstractChannel.java:229)
	at
cn.lo0kis.netty.demo.DemoServerHandler.writeResponse(DemoServerHandler.java:91)
	at
cn.lo0kis.netty.demo.DemoServerHandler.messageReceived(DemoServerHandler.java:42)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:391)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:506)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:490)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.cleanup(ReplayingDecoder.java:525)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.channelDisconnected(ReplayingDecoder.java:433)
	at
org.jboss.netty.channel.Channels.fireChannelDisconnected(Channels.java:502)
	at org.jboss.netty.channel.socket.nio.NioWorker.close(NioWorker.java:583)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.handleAcceptedSocket(NioServerSocketPipelineSink.java:119)
	at
org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink.eventSunk(NioServerSocketPipelineSink.java:76)
	at
org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:59)
	at org.jboss.netty.channel.Channels.close(Channels.java:1065)
	at org.jboss.netty.channel.AbstractChannel.close(AbstractChannel.java:178)
	at
org.jboss.netty.channel.ChannelFutureListener$1.operationComplete(ChannelFutureListener.java:46)
	at
org.jboss.netty.channel.DefaultChannelFuture.notifyListener(DefaultChannelFuture.java:366)
	at
org.jboss.netty.channel.DefaultChannelFuture.addListener(DefaultChannelFuture.java:139)
	at
cn.lo0kis.netty.demo.DemoServerHandler.writeResponse(DemoServerHandler.java:95)
	at
cn.lo0kis.netty.demo.DemoServerHandler.messageReceived(DemoServerHandler.java:42)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:391)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.unfoldAndfireMessageReceived(ReplayingDecoder.java:506)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:490)
	at
org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:427)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:345)
	at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:332)
	at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:323)
	at
org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:275)
	at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:196)
	at
org.jboss.netty.util.internal.IoWorkerRunnable.run(IoWorkerRunnable.java:46)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)

============exception end=================

Is there anything i can do to help to resolve this problem?


-- 
View this message in context: http://n2.nabble.com/Exception-during-Concurrent-visit-netty-http-server-tp3943489p3943489.html
Sent from the Netty User Group mailing list archive at Nabble.com.


More information about the netty-users mailing list