低配服务器 省钱优化部署

优化背景,阿里云服务器 4G +双核 +40G,之前运行无压力,后续功能在增加太多,运行一天就卡死。

1、登录服务器, 查看运存使用信息(free -h):

基本用尽,系统卡死。available这里是不准确的,包含了,buff/cache,即运行中的缓存,也是被使用的,但是可以释放。

这里主要看free,133M显然是么没有了,而userd1.6G也属于,tomcat下一个java程序的所需的运存的正常值。

2、查看 cpu 实施运行 (top )

/

3、查看磁盘空间

Swap:            0B          0B          0B
[root@iz2zeezo12o4o98ficd42sz apache-tomcat-8.0.39]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   18G   20G  48% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  288K  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           380M     0  380M   0% /run/user/0
[root@iz2zeezo12o4o98ficd42sz apache-tomcat-8.0.39]# 
 

分析:内存用尽,磁盘无事,运存正常。

解决措施一  优化程序代码,每小时一次的任务改为一天(视情况而定,这里开发环境改为正式环境没有考虑实际业务)

两天后继续挂掉。

解决措施二 定时清理buff/cache。

参考  https://blog.csdn.net/yy17706753/article/details/103814812

主要内容:清理命令  sync && echo 3 > /proc/sys/vm/drop_caches

写入 linux系统任务,执行:crontab -e

然后在配置文件中加入 0 0 * * * sync && echo 3 > /proc/sys/vm/drop_caches 

执行crontab -l 查看刚添加的定时器是否成功。

运行一周,每天free -h 查看运行状态,发现free每天都在变小,尽管每天清理buff/cache,一周后发现free又变成133M。

解决措施三 定时重启tomcat。

参考 https://www.cnblogs.com/sxdcgaq8080/p/10730633.html

主要内容:

1、新建脚本文件tomcat.sh    touch tomcat.sh  //   名字随意,注意创建的路径,待会要用到。

2、vi tomcat.sh  

#!/bin/bash
. /etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre

tomcatPath="/backup/tomcat7"
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath"
pid=`ps -ef|grep java | grep catalina | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]正在运行的tomcat进程为:$pid"
echo "[info][$(date +'%F %H:%M:%S')]tomcat已经启动,准备使用shutdown命令关闭..."
$binPath"/shutdown.sh"
sleep 2
pid=`ps -ef|grep java | grep catalina | awk '{print $2}'`
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭失败,准备kill进程..."
kill -9 $pid
echo "[info][$(date +'%F %H:%M:%S')]kill进程完毕!"
sleep 1
else
echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭成功!"
fi
else
echo "[info][$(date +'%F %H:%M:%S')]tomcat未启动!"
fi
echo "[info][$(date +'%F %H:%M:%S')]准备启动tomcat..."
$binPath"/startup.sh"

3、修改脚本文件tomcat.sh 可操作权限。

chmod 777 tomcat.sh

4、加入linux系统定时任务。

crontab -e 

编辑加入 0 0 * * * /opt/tomcat.sh 每天凌晨重启。

5、先测试一下 tomcat.sh       >>  sh tomcat.sh       tail -f catalinca.out 发现启动成功。ok

[root@iz2zeezo12o4o98ficd42sz opt]# sh tomcat.sh 
[info][2020-05-11 10:54:20]正在监控tomcat,路径:/opt/apache-tomcat-8.0.39
[info][2020-05-11 10:54:20]正在运行的tomcat进程为:25301
[info][2020-05-11 10:54:20]tomcat已经启动,准备使用shutdown命令关闭...
Using CATALINA_BASE:   /opt/apache-tomcat-8.0.39
Using CATALINA_HOME:   /opt/apache-tomcat-8.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.0.39/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_111/jre
Using CLASSPATH:       /opt/apache-tomcat-8.0.39/bin/bootstrap.jar:/opt/apache-tomcat-8.0.39/bin/tomcat-juli.jar
[info][2020-05-11 10:54:23]使用shutdown命令关闭失败,准备kill进程...
[info][2020-05-11 10:54:23]kill进程完毕!
[info][2020-05-11 10:54:24]准备启动tomcat...
Using CATALINA_BASE:   /opt/apache-tomcat-8.0.39
Using CATALINA_HOME:   /opt/apache-tomcat-8.0.39
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.0.39/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_111/jre
Using CLASSPATH:       /opt/apache-tomcat-8.0.39/bin/bootstrap.jar:/opt/apache-tomcat-8.0.39/bin/tomcat-juli.jar

查看 运存情况  free -h 

[root@iz2zeezo12o4o98ficd42sz apache-tomcat-8.0.39]# free -h
              total        used        free      shared  buff/cache   available
Mem:           3.7G        1.5G        1.7G        292K        576M        2.0G
Swap:            0B          0B          0B

很好。

最终方案 :每天凌晨重启,每天中午十二点,清除buff/cache 。

猜你喜欢

转载自blog.csdn.net/somdip/article/details/106050527