cpu使用率是如何计算的?如果按照并发的概念来看,不应该有进程的时候直接飙到100%,把进程任务马上处理完吗?
1.进程和进程不一样
如果你是要算π的小数点后6亿位,那肯定直接把cpu跑满了
而如果你的进程是在搞爬虫,那cpu其实很闲的,是网卡在忙
2.此外,就算你死循环在跑计算,也只是占了cpu的其中一个核
现在cpu至少是4核的,那也才25%而已
3.操作系统里同一时间开的进程多了,但是并不是所有进程都在忙
比如你现在开着IE浏览器,但是没有点任何按键,就只是在看内容,那么这个进程其实该干的活已经干完了,不占资源
首先查看该进程的日志文件,未发现异常。
无意间执行 df 命令,发现磁盘已经满了,经查,是另一进程的日志文件占用过高,已近700GB。利用 scp 将部分日志文件迁移到另一台服务器,用 vim打开日志,定位到1000多行发现出错信息:open read pipe failed : Permission denied
,定位到文末,也是相同的出错语句,得到结论,该语句频繁输出,导致文件过大,占用空间。
删除日志文件,磁盘恢复,但 CPU 依然满载,使用了iotop -oP
、iostat
、pidstat -d 1
命令查看,发现还跟 rsyslog 有关。
网上有相关问题的介绍,根据文章,使用service rsyslog status
查看 syslog 的服务状态,输出如下:
Oct 29 11:06:57 localhost.localdomain systemd[1]: Starting System Logging Service...
Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="4836" x-info="http://www.rsyslog.com"] start
Oct 29 11:06:57 localhost.localdomain systemd[1]: Started System Logging Service.
Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address' [v8.24.0-34.el7]
Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
Oct 29 11:06:58 localhost.localdomain rsyslogd[4836]: imjournal: begin to drop messages due to rate-limiting
Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address' [v8.24.0-34.el7]
Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address' [v8.24.0-34.el7]
Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
可知系统的日志服务出现问题。根据网上说法,手动删除/var/lib/rsyslog/imjournal.state
文件并重启 rsyslog,命令如下:
rm -rf /var/lib/rsyslog/imjournal.state
systemctl restart rsyslog
随后查看,问题依旧,再重启多次亦然。问题还是未解决。