Tomcat部署与调优
部署Tomcat
1.安装java-jdk环境
yum -y install java-1.8.0-openjdk
yum -y install java-1.8.0-openjdk-headless
java -version
查看java版本
2.安装Tomcat
解压源码包
tar -xf apache-tomcat-8.0.30.tar.gz
移动到/usr/local/下
mv apache-tomcat-8.0.30 /usr/local/tomcat
bin/ ##主程序目录
lib/ ##库文件目录
logs/ ##日志目录
temp/ ##临时目录
work/ ##自动编译目录jsp代码转换servlet
conf/ ##配置文件目录
webapps/ ##页面目录
3.启动服务
/usr/local/tomcat/bin/startup.sh
4.服务器验证端口信息
netstat -nutlp | grep java
8080 和8005端口是否打开
如果检查端口时,8005端口启动非常慢,可用使用下面的命令用urandom替换random(非必须操作).
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random
使用Tomcat部署虚拟主机
1.修改配置文件
cat /usr/local/tomcat/conf/server.xml
<Server>
<Service>
<Connector port=8080 />
<Connector port=8009 />
<Engine name="Catalina" defaultHost="localhost">
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
</Host>
<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">
</Host>
… …
2.创建虚拟主机
mkdir -p /usr/local/tomcat/{a,b}/ROOT
echo “AAA” > /usr/local/tomcat/a/ROOT/index.html
echo “BBB” > /usr/local/tomcat/b/ROOT/index.html
3)重启Tomcat
修改www.b.com网站的首页目录为base
1.修改配置文件
vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
</Host>
<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">
<Context path="" docBase="base"/>
</Host>
...
2.创建根目录
mkdir /usr/local/tomcat/b/base
echo “BASE” > /usr/local/tomcat/b/base/index.html
3.重启tomcat
页面跳转
1.当用户访问http://www.a.com/test打开/var/www/html目录下的页面
vim /usr/local/tomcat/conf/server.xml
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
<Context path="/test" docBase="/var/www/html/" />
</Host>
<Host name="www.b.com" appBase="b" unpackWARS="true" autoDeploy="true">
<Context path="" docBase="base" />
</Host>
2.编辑页面
echo “Test” > /var/www/html/index.html
3.重启tomcat
配置Tomcat支持SSL加密网站
1.创建加密用的私钥和证书文件
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
提示输入密码为:123456
##-genkeypair 生成**对
##-alias tomcat **别名
##-keyalg RSA 定义**算法为RSA算法
##-keystore 定义**文件存储在:/usr/local/tomcat/keystore
2.修改server.xml配置文件,创建支持加密连接的Connector
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456" clientAuth="false" sslProtocol="TLS" />
3.重启Tomcat
配置Tomcat日志
为每个虚拟主机设置不同的日志文件
1.vim /usr/local/tomcat/conf/server.xml
<Host name="www.a.com" appBase="a" unpackWARS="true" autoDeploy="true">
<Context path="/test" docBase="/var/www/html/" />
#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix=" a_access" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
2.重启tomcat
3.查看日志
ls /usr/local/tomcat/logs/
tomcat调优
1.修改server.xml文件
将
<!--
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="150" minSpareThreads="4"/>
-->
修改为:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1500" minSpareThreads="50" prestartminSpareThreads="true"/>
#maxThreads 最大线程数
#minSpareThreads 最小线程
#prestartminSpareThreads 是否在启动前准备线程
将
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
/>
修改为
<Connector executor ="tomcatThreadPool" port="8009" protocol="org.apache.coyote.http11.Http11Nio2Protocol" connectionTimeout="20000" maxConnections="10000" redirectPort="8443" acceptCount="1500"/>
#acceptCount 线程达到最大时,排队的最大请求个数
#connectionTimeout 链接超时时间
#acceptCount与maxThreads设置一样大(最大请求数)
#tomcatThreadPool 线程池
2.linux系统对当前用户的单一进程同时可打开的文件数量的限制
ulimit -u 默认值为1024 。查看系统允许当前用户进程打开的文件数量
如果想支持更高并发可修改软硬限制,软限制是指Linux在当前系统能够承受的范围内进一步限制用户同时打开的文件数;硬限制则是根据系统硬件资源状况(主要是系统内存)计算出来的系统最多可同时打开的文件数量。通常软限制小于或等于硬限制。
vim /etc/security/limits.conf
#增加如下配置
prouser soft nofile 65536
prouser hard nofile 65536
prouser soft nproc 65536
prouser hard nproc 65536
3.Linux网络内核对TCP连接的有关限制
vim /etc/sysctl.conf
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
#超时时间
net.ipv4.ip_local_port_range = 10000 65000
#修改端口范围
net.ipv4.tcp_max_syn_backlog = 8192
#允许多少个访问地址
net.ipv4.tcp_max_tw_buckets = 10000
net.core.somaxconn=8192
#accept队列的长度跟这个参数有关
上一篇: vim常用的命令