Java Tomcat 8,NIO是如何工作的
我想了解NIO在tomcat中是如何工作的 我在Java Tomcat 8,NIO是如何工作的,java,tomcat,nio,Java,Tomcat,Nio,我想了解NIO在tomcat中是如何工作的 我在app.prop server.tomcat.max-connections = 80 server.tomcat.max-threads= 70 当应用程序启动时,我从JVisualVM 据我所知(从线程名称来看),只有10个线程来自Tomcat连接池(它们的名称类似于http-nio-exec-1)。然后使用wrk我使用 wrk -t12 -c400 -d30s http://localhost:8080 (12个螺纹和400个接头) 现
app.prop
server.tomcat.max-connections = 80
server.tomcat.max-threads= 70
当应用程序启动时,我从JVisualVM
据我所知(从线程名称来看),只有10个线程来自Tomcat连接池(它们的名称类似于http-nio-exec-1)。然后使用wrk
我使用
wrk -t12 -c400 -d30s http://localhost:8080
(12个螺纹和400个接头)
现在,Tomcat创建70个http nio连接,当它们不活动时,Tomcat将杀死其中60个
我的问题:
1) 我开始学习Java中的NIO包,我知道由ServerSocketChanel
创建的服务器每秒可以处理1000个请求。为什么Tomcat首先创建与我们在max threads
prop中编写的线程一样多的线程,然后才使用NIO概念
2) 我不清楚什么是server.tomcat.max connections
从文档:服务器在任何给定时间接受和处理的最大连接数。达到此号码后,服务器将接受但不处理另一个连接。
但在测试过程中,我也打开了浏览器,我没有等待免费连接
(从
wrk
我向服务器发送了400个连接,但当我打开localhost:8080时,我也能够在浏览器中看到网页)它需要线程来同时处理请求,即使这些线程没有执行实际的I/O。wrk
是否支持HTTP keepalives?默认情况下是启用还是禁用它们?