Linux abrtd とはどのようなサービスですか?

藏色散人
リリース: 2023-03-27 09:19:24
オリジナル
3286 人が閲覧しました

linux abrtd は、アプリケーションのクラッシュを監視するデーモンです。クラッシュが発生すると、クラッシュしたアプリケーションを収集し、「/etc」にある abrt.conf 構成ファイル内のクラッシュ構成のタイプに基づいて対策を講じます。 /abrt" ディレクトリには、その設定 "abrt.conf" などが含まれます。

Linux abrtd とはどのようなサービスですか?

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

abrtd サービスはシステム リソースでいっぱいですか?

##問題の説明

開発環境に特にリソースを消費するプロセスがあります。理由の分析を手伝ってもらえますか?これはオンサイトやパブリック クラウドで何度か発生しており、最終的にはこのプロセスによってマシンのメモリがいっぱいになり、ダウンタイムが発生します。今、現場でこの問題を発見しました。

Linux abrtd とはどのようなサービスですか?

解決策のアイデアと方法

プロセスがいっぱいになったときに最初に行うことプロセス名を見てみましょう。目視検査は終了しました。

top -pH 48297 を初めて確認しました。特定のプロセスのどのスレッドに問題があるかを確認し、スレッドがないプロセスが 1 つだけであることを確認します


Linux abrtd とはどのようなサービスですか?

ps このサービスのディレクトリがどこにあるか見てください

[root@yq01-kg-section1-bud3 libexec]# ps -ef | grep  abrt-hook-ccpp
root     45733 11797  0 12:18 pts/8    00:00:00 grep --color=auto abrt-hook-ccpp
root     48297     2 99 Nov16 ?        15:42:50 /usr/libexec/abrt-hook-ccpp 11 0 8669 0 0 1605530067 e 8669 8669
ログイン後にコピー
手がかりがありません。 ! Baidu で検索を開始したところ、次のことがわかりました。

abrtd

abrtd は、アプリケーションのクラッシュを監視するデーモン プロセスです。クラッシュが発生すると、クラッシュ (コア) を収集します。ファイル コマンド ラインなど)アプリケーションを実行し、クラッシュのタイプと abrt.conf 構成ファイルの設定に基づいてアクションを実行します。プラグインにはさまざまなアクションがあります。たとえば、bugzilla はクラッシュを報告し、ファイルを転送します。レポート、または ftp または scp 経由のレポート。マニュアル ページで対応するプラグインを確認してください。

abrtd: 自動的にバグ レポート デーモン。自動バグ レポート デーモン
Linux のデバッグ プログラムで最も厄介なのは、プログラムがが異常終了しますが、コア ファイルが見つかりません。これは非常に難しい位置決めの問題です。ただし、コア ファイルを使用すると、見つけるのがはるかに簡単になります。

通常、環境変数に ulimit -c unlimited を設定できます。ただし、現場の実装者はこのコマンドの設定を忘れることがあります。ではどうすればよいでしょうか? Linux の abrt サービスを設定することで実現できます。

abrt-action-save-package-data.conf ファイルを変更します

次のように変更します:

vi /etc/abrt/abrt-action-save-package-data.conf

# With this option set to "yes",
# only crashes in signed packages will be analyzed.
# the list of public keys used to check the signature is
# in the file gpg_keys
#
OpenGPGCheck = no


# Blacklisted packages
#
BlackList = nspluginwrapper, valgrind, strace, mono-core


# Process crashes in executables which do not belong to any package?
#
ProcessUnpackaged = yes


# Blacklisted executable paths (shell patterns)
#
BlackListedPaths = /usr/share/doc/, /example*, /usr/bin/nspluginviewer, /usr/lib/xulrunner-*/plugin-container


还可以调整core文件的大小:

[root@xx-host2 abrt]# cat abrt.conf 
# Enable this if you want abrtd to auto-unpack crashdump tarballs which appear
# in this directory (for example, uploaded via ftp, scp etc).
# Note: you must ensure that whatever directory you specify here exists
# and is writable for abrtd. abrtd will not create it automatically.
#
#WatchCrashdumpArchiveDir = /var/spool/abrt-upload


# Max size for crash storage [MiB] or 0 for unlimited
#
MaxCrashReportsSize = 1000


# Specify where you want to store coredumps and all files which are needed for
# reporting. (default:/var/spool/abrt)
#
# Changing dump location could cause problems with SELinux. See man abrt_selinux(8).
#
#DumpLocation = /var/spool/abrt


# If you want to automatically clean the upload directory you have to tweak the
# selinux policy.
#
DeleteUploaded = no
ログイン後にコピー
abrtd サービスを再起動します: service abrtd restart

コア ファイルがある場合は、時間内に削除する必要があるため、abrt-cli リストでファイル パッケージを確認し、abrt-cli rm [ファイル パッケージ] を使用します。

プログラムがクラッシュすると、abrt-hook-ccpp は CPU を過剰に使用し、IO が高くなりすぎて、システムがいっぱいになります。これを非アクティブ化するだけです。

systemctl stop abrt-ccpp.service
systemctl disable abrt-ccpp.service
systemctl status abrt-ccpp.service

systemctl status abrt-ccpp.service を確認したところ、そのようなサービスはまったく存在しないことがわかりました

Baidu をもう一度確認しました

usr/libexec/abrt-hook-ccppこのプロセスが増加し続けるのはなぜですか

ccpp ファイルを作成できないためです

/etc/abrt/abrt-action-save- を変更する必要がありますpackage-data.conf の ProcessUnpackated パラメータ。

/etc/abrt/abrt-action-save-package-data.conf の ProcessUnpackages パラメータを変更します

sed -i 's/ProcessUnpackaged = no/ProcessUnpackaged = yes/g' /etc/abrt/abrt-action-save-package-data.conf&& service abrtd restart
ログイン後にコピー
変更後も動作しません。システム ログを確認してください

Nov 17 13:15:15 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
Nov 17 13:15:15 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
Nov 17 13:15:16 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
Nov 17 13:15:16 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
Nov 17 13:15:17 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
Nov 17 13:15:17 yq01-kg-section1-bud3 systemd: abrtd.service stop-sigterm timed out. Killing.
Nov 17 13:15:17 yq01-kg-section1-bud3 systemd: abrtd.service: main process exited, code=killed, status=9/KILL
Nov 17 13:15:17 yq01-kg-section1-bud3 systemd: Unit abrtd.service entered failed state.
Nov 17 13:15:17 yq01-kg-section1-bud3 systemd: abrtd.service failed.
Nov 17 13:15:17 yq01-kg-section1-bud3 abrtd: Lock file '.lock' is locked by process 48297
ログイン後にコピー
サービスが利用できないことがわかり、再起動すると、このプロセスによってロックされており、このプロセスが多くのリソースを消費していることがわかります

kill -9 48297
ログイン後にコピー
再起動service

サービスの状態を確認する

Linux abrtd とはどのようなサービスですか?

トップへ プロセスをもう一度見てみましょう。


Linux abrtd とはどのようなサービスですか?

推奨される学習: 「

linux ビデオ チュートリアル

以上がLinux abrtd とはどのようなサービスですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート