问题描述
网站打开以后提示“建立数据库连接时出错”,怀疑 MySQL进程挂了,随手重启服务器以后,还是如此。登录服务器检查,发现 MySQL服务确实没有启动。根据经验判断,估计是硬盘满了。使用 df -h
可以看到硬盘可用为0,印证了我的判断。因为网站已经正常使用很久了,也很少上传附件,所以怀疑是日志文件造成的。然后依次排查系统日志、MySQL日志、Nginx日志、PHP日志。当检查到 Nginx日志时,发现占用量有 14G,那么基本确定了。具体排查过程如下:
[root@iz2ze3gpxv4kgxbddvcz ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 40G 38G 0 100% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 336K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 379M 0 379M 0% /run/user/0
[root@iz2ze3gpxv4kgxbddvcz ~]# ls -lh /var/log/
总用量 4.0M
drwxr-xr-x. 2 root root 4.0K 10月 15 2017 anaconda
drwx------. 2 root root 4.0K 6月 21 15:30 audit
-rw------- 1 root root 32K 7月 6 21:01 boot.log
-rw------- 1 root root 0 6月 30 03:10 boot.log-20200630
-rw------- 1 root root 0 7月 1 03:46 boot.log-20200701
-rw------- 1 root root 0 7月 2 03:15 boot.log-20200702
-rw------- 1 root root 0 7月 3 03:30 boot.log-20200703
-rw------- 1 root root 0 7月 4 03:48 boot.log-20200704
-rw------- 1 root root 0 7月 5 03:06 boot.log-20200705
-rw------- 1 root root 0 7月 6 03:24 boot.log-20200706
-rw------- 1 root utmp 20K 7月 6 21:35 btmp
-rw------- 1 root utmp 253K 7月 1 01:58 btmp-20200701
drwxr-xr-x. 2 chrony chrony 4.0K 8月 4 2017 chrony
-rw-r--r-- 1 root root 967K 7月 6 21:01 cloud-init.log
-rw------- 1 root root 38K 7月 6 21:40 cron
-rw------- 1 root root 164K 6月 15 03:09 cron-20200615
-rw------- 1 root root 125K 6月 21 03:32 cron-20200621
-rw------- 1 root root 165K 6月 29 03:45 cron-20200629
-rw------- 1 root root 123K 7月 5 03:06 cron-20200705
-rw-r--r-- 1 root root 34K 7月 6 21:01 dmesg
-rw-r--r-- 1 root root 34K 7月 6 19:49 dmesg.old
-rw-r--r-- 1 root root 674 7月 6 21:01 ecs_network_optimization.log
-rw------- 1 root root 1.3K 3月 19 22:18 grubby
-rw-r--r--. 1 root root 0 10月 15 2017 grubby_prune_debug
drwxr-sr-x+ 3 root systemd-journal 4.0K 11月 8 2018 journal
-rw-r--r--. 1 root root 286K 7月 6 21:42 lastlog
-rw------- 1 root root 0 7月 5 03:06 maillog
-rw------- 1 root root 0 6月 7 03:42 maillog-20200615
-rw------- 1 root root 0 6月 15 03:09 maillog-20200621
-rw------- 1 root root 0 6月 21 03:32 maillog-20200629
-rw------- 1 root root 0 6月 29 03:45 maillog-20200705
-rw------- 1 root root 429K 7月 6 21:42 messages
-rw------- 1 root root 287K 6月 15 03:09 messages-20200615
-rw------- 1 root root 179K 6月 21 03:32 messages-20200621
-rw------- 1 root root 348K 6月 29 03:40 messages-20200629
-rw------- 1 root root 193K 7月 5 03:06 messages-20200705
drwxr-xr-x 2 root root 4.0K 7月 6 19:11 multi-nic-util
-rw-r--r-- 1 root root 88K 7月 6 21:32 ntp.log
drwxr-xr-x 2 ntp ntp 4.0K 4月 13 2018 ntpstats
drwxr-xr-x. 2 root root 4.0K 10月 15 2017 rhsm
drwxr-xr-x 2 root root 4.0K 7月 6 00:00 sa
-rw------- 1 root root 10K 7月 6 21:42 secure
-rw------- 1 root root 37K 6月 15 03:05 secure-20200615
-rw------- 1 root root 149K 6月 20 22:48 secure-20200621
-rw------- 1 root root 94K 6月 29 01:17 secure-20200629
-rw------- 1 root root 36K 7月 5 00:09 secure-20200705
-rw------- 1 root root 0 7月 5 03:06 spooler
-rw------- 1 root root 0 6月 7 03:42 spooler-20200615
-rw------- 1 root root 0 6月 15 03:09 spooler-20200621
-rw------- 1 root root 0 6月 21 03:32 spooler-20200629
-rw------- 1 root root 0 6月 29 03:45 spooler-20200705
-rw-------. 1 root root 0 10月 15 2017 tallylog
drwxr-xr-x. 2 root root 4.0K 10月 15 2017 tuned
-rw-rw-r--. 1 root utmp 89K 7月 6 21:42 wtmp
-rw------- 1 root root 2.1K 3月 19 22:20 yum.log
-rw------- 1 root root 6.9K 11月 8 2018 yum.log-20190101
-rw------- 1 root root 49 3月 18 22:27 yum.log-20200319
[root@iz2ze3gpxv4kgxbddvcz ~]# ls -lh /usr/local/mysql/var/
总用量 1.9G
drwx------ 2 mysql mysql 4.0K 4月 9 13:52 baidu
-rw-rw---- 1 mysql mysql 56 11月 8 2018 auto.cnf
-rw-rw---- 1 mysql mysql 74M 7月 6 19:11 ibdata1
-rw-rw---- 1 mysql mysql 64M 7月 6 21:01 ib_logfile0
-rw-rw---- 1 mysql mysql 64M 7月 6 19:11 ib_logfile1
-rw-rw---- 1 mysql mysql 352K 7月 6 21:01 iz2ze3gpxv4kgxbddvcz.err
-rw-rw---- 1 mysql mysql 30K 11月 8 2018 iZ2ze3gpxv4kgxbddvcZ.err
drwx------ 2 mysql mysql 4.0K 11月 8 2018 mysql
-rw-rw---- 1 mysql mysql 1.1G 6月 23 07:42 mysql-bin.000130
-rw-rw---- 1 mysql mysql 46M 6月 24 00:44 mysql-bin.000131
-rw-rw---- 1 mysql mysql 11M 6月 24 10:10 mysql-bin.000132
-rw-rw---- 1 mysql mysql 1.3M 6月 24 10:22 mysql-bin.000133
-rw-rw---- 1 mysql mysql 150M 6月 26 17:14 mysql-bin.000134
-rw-rw---- 1 mysql mysql 248M 7月 1 13:05 mysql-bin.000135
-rw-rw---- 1 mysql mysql 255M 7月 6 19:11 mysql-bin.000136
-rw-rw---- 1 mysql mysql 133 7月 1 13:05 mysql-bin.index
-rw-rw---- 1 mysql mysql 0 7月 6 21:01 mysql-bin.~rec~
drwx------ 2 mysql mysql 4.0K 11月 8 2018 performance_schema
[root@iz2ze3gpxv4kgxbddvcz ~]# ls -lh /home/wwwlogs/
总用量 14G
-rw-r--r-- 1 root root 94M 7月 6 21:41 access.log
-rw-r--r-- 1 root root 72K 7月 6 21:48 nginx_error.log
-rw-r--r-- 1 root root 14G 7月 6 21:48 www.baidu.com.log
解决办法
因为使用的是“lnmp一键安装包”,所以日志目录稍有不同,在 /usr/local/nginx/conf/vhost
目录中,找到网站所属的conf
配置文件,修改其中关于日志目录的地方。如本例中,修改 access_log /home/wwwlogs/www.baidu.com.log;
为 access_log /dev/null;
。保存后,再执行 cat /dev/null > /home/wwwlogs/www.baidu.com.log
清空之前的日志。最后,重启一下 lnmp 即可。具体过程如下:
[root@iz2ze3gpxv4kgxbddvcz ~]# cat /dev/null > /home/wwwlogs/www.baidu.com.log
[root@iz2ze3gpxv4kgxbddvcz ~]# ls -lh /home/wwwlogs/
总用量 95M
-rw-r--r-- 1 root root 94M 7月 6 21:41 access.log
-rw-r--r-- 1 root root 72K 7月 6 21:54 nginx_error.log
-rw-r--r-- 1 root root 4.2K 7月 6 21:54 www.baidu.com.log
[root@iz2ze3gpxv4kgxbddvcz ~]# lnmp restart
+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Stoping LNMP...
Stoping nginx... done
ERROR! MySQL server PID file could not be found!
Gracefully shutting down php-fpm . done
Starting LNMP...
Starting nginx... done
Starting MySQL.. SUCCESS!
Starting php-fpm done