我坚定不移
没有NIO:
对于每个keepAlive连接服务器继续阻止一个线程.
与NIO:
此连接器有几个轮询线程,用于保持所有连接的用户的连接活动,而在数据(新的HTTP请求)可用时调用工作线程
现在:
如果我有一个简单的servlet返回一个100 KB字符串到客户端(浏览器).
....
String HunderdKBString = "reallylongstring"
PrintWriter out = response.getWriter();
out.println(HunderdKBString);
....
如果连接1 KB连接的客户端,则需要大约100秒才能接收字符串.
那么Java线程会被阻塞大约100秒吗?
TCP缓冲区,Java OutputStream或Writer或其他缓冲区如何影响线程块时间?
PS:使用apache-tomcat-8.0.24在centos 7与oracle JDK 1.7.
编辑:如上所述线程确实被阻塞,缓冲区可以减少线程阻塞时间..如何乐观tomcat / OS通过使用这些缓冲区减少线程阻塞时间?
如果tomcat由于连接了很多慢速连接客户端的线程而挨饿,在生产环境中可以如何检测?