具有并发慢速TCP客户端连接的tomcat Java NIO



我的未启动

没有NIO:
对于每个keepAlive连接,服务器都会继续阻止一个线程。

使用NIO:
这个连接器有几个轮询线程,用于为所有连接的用户保持连接的有效性,同时只要数据(新的HTTP请求(可用,就会调用工作线程

现在:如果我有一个简单的servlet,它会向客户端(浏览器(返回一个100KB的字符串。

....
String HunderdKBString = "reallylongstring"
PrintWriter out = response.getWriter();
out.println(HunderdKBString);
....

如果连接了1 KB的客户端,那么接收字符串大约需要100秒
那么,java线程会被阻塞大约100秒吗?

TCP缓冲区、Java OutputStreamWriter或其他缓冲区如何影响线程块时间?

附言:在centos 7中使用apache-tomcat-8.0.24与oracle JDK 1.7。

编辑:如前所述,线程确实会被阻塞,缓冲区可以减少线程阻塞时间。。如何乐观tomcat/OS通过使用这些缓冲区来减少线程阻塞时间?

如果tomcat由于连接到它的许多连接缓慢的客户端而导致线程不足,如何在生产环境中检测它?

那么,java线程会被阻塞大约100秒吗?

是的。

TCP缓冲区、Java OutputStream或Writer或其他缓冲区如何影响线程块时间?

如果缓冲区足够大,可以容纳发送的数据,则发送线程不会阻塞。

最新更新