2023年5月

通过/proc/pid/status查看

cat /proc/pid/status
VmHWM: 47940 kB——————————————-RSS峰值。
VmRSS: 47940 kB——————————————-RSS实际使用量=RSSAnon+RssFile+RssShmem。
RssAnon: 38700 kB
RssFile: 9240 kB

RssFile是库代码映射,是多个进程公用,所以如果以VmRSS的值作为参考,获得的内存会比较大。

清理内存

#!/bin/bash
echo "开始清理缓存"
# 写入硬盘,防止数据丢失
sync;sync;sync; 
# 延迟10S
sleep 10
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
echo "清理缓存结束"
crontab -e
#添加:
* 0 * * * ./tools/clean/cleanBuffCache.sh

想着将MySQL初始化,改变一下存放数据文件的位置,修改MySQL配置文件:
datadir = /lvmdata/data
然后初始化:

mysqld —initialize-insecure —user=root

报错:
mysqld: Can’t create directory ‘/lvmdata/data’ (Errcode: 13 - Permission denied)


因为Ubuntu有个AppArmor,是一个Linux系统安全应用程序,类似于Selinux,AppArmor默认安全策略定义个别应用程序可以访问系统资源和各自的特权,如果不设置服务的执行程序,即使你改了属主属组并0777权限,也是对服务起不到作用。

ok,apt安装下MySQL默认数据目录是/var/lib/mysql,其它的目录权限都不可。开始修改:

vim /etc/apparmor.d/usr.sbin.mysqld

找到:

Allow data dir access
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

修改为:

Allow data dir access
/lvmdata/data/ r,
/lvmdata/data/** rwk,

重启apparmor服务:
systemctl restart apparmor
感觉可以直接关闭这玩意


初始化数据库

update user set host='%' where user='root';
ALTER USER 'root'@'%' IDENTIFIED BY '598741236';
flush privileges;