Tomcat三种运行模式
BIO(blocking I/O)
阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景。
NIO(New IO)
基于java中非阻塞IO操作的API实现(即java.nio包及其子包),比传统的i/o处理方式有更高的并发运行性能。
APR(Apache Portable Runtime/Apache可移植运行库)
Apache Portable Runtime是Apache HTTP服务器的支持库。可以简单地理解为,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。 Tomcat apr也是在Tomcat上运行高并发应用的首选模式。
安装APR
安装gcc
查看gcc是否安装,gcc –version,没有安装的话进行安装
下载tomcat、apr、apr-util、openssl
1 | wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.72/bin/apache-tomcat-7.0.72.tar.gz |
编译apr
1 | sudo mkdir /usr/local/apr |
编译apr-util
1 | cd apr-util-1.5.4 |
编译openssl
1 | sudo mkdir /usr/local/ssl |
编译tomcat-native
1 | cd apache-tomcat-7.0.70/bin/ |
配置Tomcat使用APR运行模式
修改apache-tomcat-7.0.70/bin/catalina.sh文件
添加CATALINA_OPTS=”$CATALINA_OPTS -Djava.library.path=/usr/local/apr/lib”
修改apache-tomcat-7.0.70/conf/server.xml 文件
将protocol由HTTP/1.1 改成 org.apache.coyote.http11.Http11AprProtocol
1 | <Connector port="8080" protocol="org.apache.coyote.http11.Http11AprProtocol" |
修改内存(apache-tomcat-7.0.70/bin/catalina.sh)
1 | JAVA_OPTS="-server -Xmx8g -Xms8g -Xss256k -XX:+DisableExplicitGC -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=50 -XX:G1ReservePercent=15" |
压测
使用apache ab压测
1 | ab -kc 1000 -n 10000 http://localhost/ |