1. 内存占用
- 执行
top
命令查看系统的实时负载,进入 top 的实时界面后,默认按照 CPU 的使用率排序 - 通过
shift + m
按键将进程按照内存使用情况从大到小排序
2. Mysql 内存优化
1 | MySQL 在启动的时候,会占用一部分的内存来作为缓冲区,这样做的原因是可以优化查询速度,我们可以发现只要查询过一次 MySQL, |
2.1 修改 my.cnf
- 可以使用
mysql --help | grep 'my.cnf'
来查看默认加载的my.cnf
目录,排序前的优先 - 使用vim打开排在第一个的
my.cnf
,加入如下内容:1
2
3
4table_open_cache=200
table_definition_cache=400
performance_schema_max_table_instances=400
performance_schema=off - 重启 MySQL:
1
service mysqld restart
3. Java 内存优化
3.1 规定内存大小
可以在 tomcat /bin 目录下的 catalina.sh,设置 JAVA_OPTS 参数规定运行时内存使用情况。
因为 tomcat 容器里的 java 都是一些小项目和 demo,用不着分配这么多内存,所以只需分配很小内存即可。
1 | JAVA_OPTS="$JAVA_OPTS -Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m" |
参数详解:
- Xms:Java 虚拟机堆区内存初始内存分配的大小
- Xmx:Java 虚拟机堆区内存初始内存分配的最大上限
- Xmn:Java 虚拟机堆区内存初始内存分配的最小值
- XX:PermSize:非堆区初始化内存分配大小
- XX:MaxPermSize:非堆区分配的内存的最大上限
- XX:MaxNewSize:新生代可被分配的内存的最大上限
3.2 回收 buffer/cache
- 创建脚本 cleanCache.sh
- 添加内容:
1
2
3
4
5
6
7#!/bin/bash
echo "开始清除缓存"
sync;sync;sync # 写入硬盘,防止数据丢失
sleep 10 # 延迟10秒
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches - 打开权限:
1
chmod +x cleanCache.sh
- 打开定时任务配置文件
1
crontab -e # 弹出配置文件
- 添加定时任务,每两小时执行一次
1
2# 分 时 日 月 周 命令
0 */2 * * * ./cleanCache.sh - 设置 crond 启动以及开机自启
1
2systemctl start crond.service
systemctl enable crond.service - 查看定时任务是否被执行
1
cat /var/log/cron | grep cleanCache