X.d 笔记

小Web,大世界

0%

Tomcat:配置连接方式

安装Tomcat后,默认已经不错了,围绕配置的优化一般也就两个方面:

  1. 调优 JVM 启动的内存大小
  2. 优化连接方式

Tomcat 的连接方式

  • JIO:普通的Java io 处理。tomcat默认的 IO 连接方式。
  • NIO:java new io正理,有非阻塞 IO 特性。使用nio修改下
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol">
  • Apr: 使用C语言写的一种连接器。需要安装 APR 和 Native,然后修改 Connector 的 protocol
<Connector protocol="org.apache.coyote.http11.Http11AprProtocol">

这三种方式,看网上所有人都如是说说 Apr > nio & jio,甚 至把 jio 鄙视的一文不值,当初我也以为是这样,毕竟C更贴近底层一些,而 nio 名字听起来也比 io 吓人,所以就把这些都装上去尝试了一下,结果发现这些不相上下,特别是处理小文件方面比 apr, nio 要快的多。忽然有种被忽悠的感觉,听说快的原因如下:

  1. apr 虽然是更接近底层的c写的,但每次都要执行很多,jio 编译成码流后,可以省很多性能。
  2. nio 处理文件由于有非阻塞 io 的特性,会额外增加不少开销,并不是万能的快。

但结果不敢信,必竟我的结果是 jio > apr > nio ,但可能和具体环境有关,所以想知道自己的服务器更适合哪一种,还需要投入足量的测试才行。

测试工具:一种即可。
建议:Apache AB / Siege ,可用:Apache JMeter / LoadRunner
测试没什么规则,就是不段使用各种并发量和各种参数对请求作出调试,可以参考电视节目猜价里面的“高了”,“低了”不停的调试,调试到峰值的时候,把这时候的并发量,吞吐率算出来,同时要测不同类型的请求,如小文件,大文件,复杂度高的请求等等。

个人建议不知道选择什么好的时候不要改成APR或NIO,就用默认的JIO。

另外,Tomcat 还可以设置线程池,缓冲区,请求大小,IP,队列长度等等,也要根据实际情况配置,但如果不是太清楚的情况还是建议保留默认配置即可。