Any news on this? We have a JBoss7 server performing very badly under moderate load. We seem to be maxing out 500 threads in no time at all, all the threads, I presume, are waiting for keep-alives from clients that have nothing more they need from the server.
I can see 500 ESTABLISHED connections which implies this is the problem.
I dont understand how JBoss can support keep-alive without supporting configurable keep-alive timeout?
you can't control the keep-alive timeout. The only thing you can control is the number of keep-alive (org.apache.coyote.http11.Http11Protocol.MAX_KEEP_ALIVE_REQUESTS).
The ability to disable keep-alive is a very poor substiture for being able to configure the timeout.
I have just disabled keep-alive with -Dorg.apache.coyote.http11.Http11Protocol.MAX_KEEP_ALIVE_REQUESTS=1 and our performance increases, but this means that http/1.1 keep-alive is disabled.
Every request now has Connection:close, it makes it impossible to use JBossAS7 as a web server. We need a proper webserver infront to handle HTTP.
Using the java.io connector for real requires either lots of threads, or disabling the keepalive, there's no other way. Or use the native connector.
Configuring a separate keepalive timeout is not available (it will use the regular timeout instead, it is not hardcoded) as well as TCP no delay (true is the only useful value). You don't need either options, the rest are configurable. I think you should put your properties in the main configuration of AS rather than on the command line.