top
这个命令可以发现cpu或mem异常的进程,可以用kill -9杀死
查看前20内存占用
ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20
free -m
定时清理缓存
freemem.sh
date >> /root/log/mem.log
sync && echo 1 > /proc/sys/vm/drop_caches
sync && echo 2 > /proc/sys/vm/drop_caches
sync && echo 3 > /proc/sys/vm/drop_caches
echo "ok" >> /root/log/mem.log
可以设置一个定时任务,每个小时执行,
0 * * * * /root/python/freemem.sh>>/root/log/mem.log 2>&1 &
![在这里插入图片描述](https://img-blog.csdnimg.cn/fbbc922674e0450388b7b670c586cb26.png
优化nginx
减少nginx.conf中worker_processes的个数,使之为cpu核数的2倍
优化mysql内存
找到 table_definition_cache,我们修改为400
官方解释为:可以存储在定义缓存中的表定义数(来自.frm文件)。如果使用大量表,可以创建大型表定义缓存以加快表的打开速度。与普通的表缓存不同,表定义缓存占用更少的空间,并且不使用文件描述符。最小值和默认值均为400。
找到 table_open_cache,我们修改为256
MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。
官方解释为:所有线程的打开表数。增加该值会增加mysqld所需的文件描述符的数量。因此,您必须确保在[mysqld safe]部分的变量“open files limit”中将允许打开的文件量设置为至少4096。
找到 performance_schema ,修改为off
如果找不到这个的话,直接在合适的地方加上 performance_schema = off 即可。
用于监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况,关闭之后可以节省开销,不会使server的行为发生变化。