最近LinkNemo迁移到新的程序,新的环境上,服务不是很稳定,配置还有待调优。
上午发现了一个问题:
磁盘使用达到100%:
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 479M 0 479M 0% /dev
tmpfs 100M 6.4M 93M 7% /run
/dev/vda1 40G 38G 0 100% /
tmpfs 497M 0 497M 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 497M 0 497M 0% /sys/fs/cgroup
tmpfs 100M 0 100M 0% /run/user/0
所以后台一直有一些异常抛出。
需要找到占用空间比较大的文件:
这里找出整个系统中文件大小大于100M的文件
$ find / -type f -size +100M
/var/lib/mysql/ibtmp1
...
...
/opt/jdk-8u191-linux-x64.tar.gz
/home/ss/old/default.zip
...
查看文件后发现,其中ibtmp1文件占用居然达到了24G。
查看官方文档后发现这是非压缩的innodb临时表的独立表空间。通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。
重启mysql后发现,文件恢复到74M。
不能每次遇到这个问题都去手动重启mysql。
这里手动设置下这个文件的最大长度,用来做限制。
找到my.cof,在[mysqld]下添加:
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
设置max为5G,重启mysql后问题即可解决。