我正在使用netty编写一个webgame服务器,并打算使用keep-alive来提高性能
如果我将CachedThreadPool用于boss和worker executor,那么服务器对keep-alive和non keep-alive连接都可以正常工作。
但是如果我使用FixedThreadPool(1)一个用于老板而一个用于工作者,则第一个响应将其发送给客户端但是如果浏览器使用该连接发送第二个请求它将阻塞并在服务器超时,我关闭该连接并且firefox打开新的套接字,这个套接字在第一次响应时也能正常工作。(我已经将Connection Keep-alive和ContentLength包含在响应头中,并使用httpAnalyzer工具仔细检查它。
那么有人可以告诉我为什么会发生这种情况,以及为webgame服务器使用netty和netty的最佳做法是什么。如果netty是异步的,这不应该发生吗?
答案 0 :(得分:2)
您应始终使用CachedThreadPool并使用NioSocketChannelFactory的构造函数来限制使用的线程。我认为它也记录在javadocs中。