为了使单个Tomcat达到最大性能,已启用APR的Tomcat还必要配线程池吗?

灵溪小鱼 发布于 2015/11/16 17:35
阅读 3K+
收藏 0

小项目,估计一个tomcat跑跑就够了,但为了尽善尽美,想尽量将tomcat性能搞得最大(服务器配置很够,单个tomcat跑着只是其中一个用途)。各种百度知道tomcat三种bio,nio,apr,现在tomcat已是apr下跑着,是否还需要配下线程池大小?还是配线程池的模式和apr的模式是两种模式?配了apr就不需要配线程池了吗?

求个逻辑清晰的总介绍。。百度上太杂了。

加载中
2
zigzagroad
zigzagroad
再开线程池。解决的根本不是一个问题,线程池解决的是处理请求的工作线程的来源问题, bio/nio/apr解决的是IO处理效率问题。
zigzagroad
zigzagroad
既然硬件资源足够,那在同一台机器上配置启动多个Tomcat;然后在前面加Nginx并且配置启用负载均衡,并且配置拦截处理静态资源的请求,只将动态请求转发给相应的Tomcat处理。不管怎么样,Tomcat启用线程池都是可以的;如果Tomcat不处理静态资源的话,没有必要配置使用nio/bio/apr (用默认的 HTTP 1.1 就可以)。
0
乌龟壳
乌龟壳

学学nginx的使用,在tomcat前面放个nginx作反向代理。

默认的线程池一般情况都够用了。

乌龟壳
乌龟壳
回复 @neo-chen : 另外一点就是nginx可以用在未来做web集群的时候,作为负载均衡。怎样都是值得的。
乌龟壳
乌龟壳
回复 @neo-chen : nio有它的场景,但一般的web应用不需要。
乌龟壳
乌龟壳
回复 @neo-chen : nginx处理静态文件比tomcat强,释放更多的tomcat线程用来做业务计算。nginx是一个缓冲器,并发的请求可以确实接收完才提交给tomcat。接下来对于tomcat只有一个一个密集的业务计算了,没必要开什么nio直接默认的线程池就好了。
netkiller-
netkiller-
为什么要在tomcat 前面放 nginx ? 放nginx 并不能解决静态文件的性能。。我记得早年搞java 都用 mod_jk 这样 静态文件走 httpd 动态走 tomcat ... 为什么现在没有用 mod_jk 了??
0
景愿
景愿
楼上的都没明白楼主的意思,这个问题osc能解释清楚的人只有个位数,我也说不清楚 
0
无踢
根据你的“服务器配置很够”,那么单个tomcat把服务器跑满的可能性应该没有。
0
Ivann
Ivann

BIO,NIO,APR决定的是服务的处理方式,线程池决定是服务的窗口数量。

TOMCAT本身都是跑着JVM上的,NIO/APR都能实现非阻塞处理,只是实现方式不一样,非阻塞最大的好处就是充分利用线程,让一个线程处理多个请求,降低线程数量。

所以开启了APR能够提升单个线程的处理能力,配置线程池决定的线程总数

简单点说开启APR,相当于在线程池的数量基础上乘了一个系数,这个好处就是大大的了....

楼主只配APR,没配线程池,那就是用的TOMCAT默认的...

另外这些参数可以通过Tomcat Manager来看一下

0
河边妞啊
河边妞啊
(服务器配置很够,单个tomcat跑着只是其中一个用途),在我看来那就做虚拟化,再虚拟出2台或者3台服务器,然后做负载均衡,这样程序稳定性得到提高,而且还把服务器使用的尽善尽美。
0
nubo
nubo
APR好像是提升处理静态文件的能力吧,你的web服务肯定还要做很多其他的,tomca现在好像默认就是NIO了,去看看官方文档里都有说明。
0
nubo
nubo
APR好像是提升处理静态文件的能力吧,你的web服务肯定还要做很多其他的,tomca现在好像默认就是NIO了,去看看官方文档里都有说明。
返回顶部
顶部