Tomcat优化

1. 按照日期切割catalina.out日志

[创建定时任务脚本]
mkdir -m 755 -p /opt/sh/
vi /opt/sh/tomcat-cut-log.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
[需切割日志的路径]
LogPath=/home/tomcat-model/logs
[将catalina.out备份为catalina-年-月-昨天.out]
cp ${LogPath}/catalina.out ${LogPath}/catalina-`date -d '-1 days' +%Y-%m-%d`.log
[清空catalina.out]
echo "" > ${LogPath}/catalina.out
[如有多个Tomcat日志需切割可以继续增加]
LogPath2=/home/tomcat-model/logs
cp ${LogPath2}/catalina.out ${LogPath2}/catalina-`date -d '-1 days' +%Y-%m-%d`.log
echo "" > ${LogPath2}/catalina.out
[清理五天前的日志]
find ${LogPath}/ -mtime +5 -name "*" -exec rm -rf {} \;
find ${LogPath2}/ -mtime +5 -name "*" -exec rm -rf {} \;

[赋予脚本可执行权限]
chmod -R 755 /opt/sh/tomcat-cut-log.sh
[设置crontab定时任务]
crontab -e
0 0 * * * /opt/sh/tomcat-cut-log.sh
crontab文件每行的前五个数字代表分、时、日、月、周,后边是在相应时间执行的脚本
分钟00(0)-59,小时00(0)-59,日01-31,月份01-12,星期1-7(0)
[查看当前用户所有定时任务]
crontab -l
[手动更改时间]
date -s "20200202 00:00:00"
更改时间后三十秒内,定时任务即可执行完成,此时便可查看日志文件是否符合预期。

2. shutdown.sh没有关闭tomcat进程[已设为服务的tomcat不存在此问题]

[修改tomcat下bin/catalina.sh文件,在最后添加以下内容]
[设置记录CATALINA_PID]
[该设置会在启动时候bin下新建一个CATALINA_PID文件]
[关闭时候从CATALINA_PID文件找到pid,kill同时删除CATALINA_PID文件]

1
2
3
if [ -z "$CATALINA_PID" ]; then
     CATALINA_PID=$PRGDIR/CATALINA_PID
fi

[tomcat的shutdown.sh文件,在最后一行加上-force]
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

3. 默认端口功能

8005端口为服务端口,主要用来启动停止服务,为-1时会自动选用未使用的端口。
8080端口为HTTP端口,主要用来建立HTTP连接。
8443端口为HTTPS端口 主要用来建立HTTPS连接。
8009端口为AJP端口,集成其它HTTP服务器时与其他服务器建立连接。

4. 设为服务开机自启

[编辑setenv.sh文件,增加如下语句,若无此文件则手动创建]
vi /home/tomcat-model/bin/setenv.sh
JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=512M -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true"
[编辑server.xml文件并替换]
vi /home/tomcat-model/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1
替换为<Connector port="自定义端口" protocol="HTTP/1.1"
Server port="8005" shutdown="SHUTDOWN
替换为Server port="-1" shutdown="SHUTDOWN"
[编辑服务文件]
vi /usr/lib/systemd/system/tomcat-服务名-自定义端口号.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=tomcat-服务名-自定义端口号
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=oneshot
ExecStart=/home/tomcat/bin/startup.sh
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes
WorkingDirectory=/home/tomcat/
[Install]
WantedBy=multi-user.target

设置开机自启服务
systemctl enable tomcat-服务名-自定义端口号
取消开机自启服务
systemctl disable tomcat-服务名-自定义端口号
启动服务
systemctl start tomcat-服务名-自定义端口号
停止服务
systemctl stop tomcat-服务名-自定义端口号