日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

centos7 systemctl status servicename执行慢的问题

發布時間:2024/1/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos7 systemctl status servicename执行慢的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,這個問題和systemd-journald有關,故我們先簡單了解下:

????過去只有 rsyslogd 的年代中,由于 rsyslogd 必須要開機完成并且執行了 rsyslogd 這個 daemon 之后,登錄文件才會開始記錄。所以,核心還得要自己產生一個 klogd 的服務, 才能將系統在開機過程、啟動服務的過程中的信息記錄下來,然后等 rsyslogd 啟動后才傳送給它來處理。

????現在有了 systemd 之后,systemd 使用systemd-journald統一管理所有 Unit 的啟動日志。由于systemd是kernel喚醒的,然后又是第一個執行的軟件,它可以主動調用 systemd-journald 來協助記載登錄信息。因此在開機過程中的所有信息,包括啟動服務與服務若啟動失敗的情況等等,都可以直接被記錄到 systemd-journald 里頭去!

????不過 systemd-journald 由于是使用于內存的登錄文件記錄方式,因此重新開機過后,開機前的登錄文件信息當然就不會被記載了。 為此,我們還是建議啟動 rsyslogd 來協助分類記錄!也就是說, systemd-journald 用來管理與查詢這次開機后的登錄信息,而 rsyslogd 可以用來記錄以前及現在的所以數據到磁盤文件中,方便未來進行查詢!


二,問題場景:

一臺centos7系統有load高的報警,故登錄上去查看,發現系統很卡,系統磁盤io吃的比較多。之后,發現很多systemctl status的進程,并且這種進程占用系統io很多。??


問題分析定位:

1,centos7的bug

2,systemctl的問題??


三,解決過程:

1,centos7已經用了很長時間,目前處于穩定,并且翻看centos7的bug list未發現有類似異常。故排除了系統bug。

2,開始查找systemctl的問題,果不其然發現是systemd-journald的問題。

1)strace命令查看問題,發現是讀取systemd-journald日志比較慢

# strace -s 1024 systemctl status nginx


2)查看status輸出:

# systemctl status nginx

● nginx.service - nginx - high performance web server

? ?Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)

? ?Active: active (running) since 一 2018-01-08 18:25:37 CST; 2h 20min ago

? ? ?Docs: http://nginx.org/en/docs/

?Main PID: 22403 (nginx)

? ?CGroup: /system.slice/nginx.service

? ? ? ? ? ?├─22403 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

? ? ? ? ? ?├─22404 nginx: worker process

? ? ? ? ? ?├─22405 nginx: worker process

? ? ? ? ? ?├─22408 nginx: worker process


1月 08 18:25:37 test systemd[1]: Starting nginx - high performance web server...

1月 08 18:25:37 test nginx[22398]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

1月 08 18:25:37 test nginx[22398]: nginx: configuration file /etc/nginx/nginx.conf test is successful

1月 08 18:25:37 test systemd[1]: Started nginx - high performance web server.


可以看到systemctl有的輸出有nginx啟動時候相關的信息。而這些輸出是從systemd-journald中讀取的。


3)systemd-journald的日志默認是存儲在/run/log/journal目錄,發現這個目錄已經有4G了。查看網上相關資料,發現也有其它人遇見過類似的問題。可以通過修改systemd-journald的配置來解決問題:

# vim /etc/systemd/journald.conf

SystemMaxUse=100M

RuntimeMaxUse=100M

###

SystemMaxUse= 與 RuntimeMaxUse= 限制全部日志文件加在一起最多可以占用多少空間。而SystemMaxUse= 與 RuntimeMaxUse= 的默認值是10%空間與4G空間兩者中的較小者,故把這兩個配置調小了。


重啟systemd-journald:

#?systemctl restart systemd-journald


4)操作完成之后發現系統load慢慢降了下來,systemctl status命令也變快了。


四,結論:

1,通過限制systemd-journald日志的大小來解決這個問題。副作用是保存的日志變少,但是可接受,目前沒有發現有異常。


五,參考:

http://shouce.jb51.net/vbird-linux-basic-4/160.html

http://www.jinbuguo.com/systemd/journald.conf.html

http://www.codekoala.com/posts/systemctl-status-foo-was-too-slow/










本文轉自 leejia1989 51CTO博客,原文鏈接:http://blog.51cto.com/leejia/2058797,如需轉載請自行聯系原作者 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的centos7 systemctl status servicename执行慢的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。