centOSサーバ oom-killer発動!! 原因を探る
先日までの間サーバがハングアップしており接続できなく申し訳ありませんm(。≧Д≦。)m
というのもたまたま自分のスマートフォンより自分のブログを見ようとしたら接続できなかった。
いわゆる「データベース接続エラー」というやつだ。
awstatsで毎日の接続などを確認すると26日から接続できなくなっているようでした。
teratermも接続できなかったので、sakuraコントロールパネルより強制再起動を実施、
早速messgesログを見てみると以下のようなログが出ていた。
Aug 26 11:41:14 www16071ue kernel: httpd invoked oom-killer: gfp_mask=0x200da, order=0, oom_adj=0, oom_score_adj=0 Aug 26 11:41:14 www16071ue kernel: httpd cpuset=/ mems_allowed=0 Aug 26 11:41:14 www16071ue kernel: Pid: 29378, comm: httpd Not tainted 2.6.32-504.1.3.el6.x86_64 #1 Aug 26 11:41:14 www16071ue kernel: Call Trace: Aug 26 11:41:14 www16071ue kernel: [<ffffffff810d40c1>] ? cpuset_print_task_mems_allowed+0x91/0xb0
有名なoom-killerってやつだ。
こちらが発動した原因を色々と探ってみたいと思います。
まずgoogle君に聞いてみます。
2chに同じようなカーネルパニックの文章が載っていた。
以下2chより
########################################################
Kernel やその他のパッケージをアップデートすると、
カーネルパニックになり起動しなくなりました。
メッセージはこんな感じ:
Kernel panic – not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.32-504.8.1.el6.x86_64 #1
Call Trace:
(以下トレースバック)
起動時に古いカーネルを指定すると問題なく起動します。
ぐぐると (1) SELinux を無効にした場合、(2) LVM を変えた場合
に発生することが多いようですが、SELinuxは以前から有効にしており、
LVM は今回アップデートされたものの、古いカーネルでは問題がないので、
LVMが原因とも考えられません。ちなみに論理ボリュームは使用しています。
他にどのような原因が考えられるでしょうか。
動作するカーネルは 2.6.32-504.1.3.el6.x86_64
ディストリビューションは RHEL6.6 です。
よろしくお願いします。
########################################################
どうやら同じカーネルのようです。
上記原因について書いてあるがほかの英文サイトでもこのカーネルのパニック問題についてさまざまなサイトで質問等している記事が
散見されている。
また、(1)のSELinuxは、はじめから私のサーバーも無効化しているため特に変更していないし(2)のLVMもVPSサーバーだし特に変更していることは、ない。
しかし、以前も不安定なカーネルにアップデートされた直後から不具合があったのでyumupdateのログを確認する。
Aug 20 03:33:22 Updated: python-2.6.6-66.el6_8.x86_64 Aug 20 03:34:08 Updated: python-libs-2.6.6-66.el6_8.x86_64 Aug 25 03:25:05 Updated: libudev-147-2.73.el6_8.1.x86_64 Aug 25 03:25:16 Updated: cronie-1.4.4-16.el6_8.2.x86_64 Aug 25 03:25:18 Updated: cronie-anacron-1.4.4-16.el6_8.2.x86_64 Aug 25 03:25:29 Updated: udev-147-2.73.el6_8.1.x86_64 Aug 25 03:25:30 Updated: device-mapper-libs-1.02.117-7.el6_8.1.x86_64 Aug 25 03:25:32 Updated: device-mapper-1.02.117-7.el6_8.1.x86_64 Aug 25 03:25:34 Updated: device-mapper-event-libs-1.02.117-7.el6_8.1.x86_64 Aug 25 03:25:36 Updated: device-mapper-event-1.02.117-7.el6_8.1.x86_64 Aug 25 03:25:39 Updated: lvm2-libs-2.02.143-7.el6_8.1.x86_64 Aug 25 03:25:50 Updated: lvm2-2.02.143-7.el6_8.1.x86_64 Aug 25 03:25:54 Updated: tcsh-6.17-35.el6_8.1.x86_64 Aug 25 03:25:56 Updated: avahi-libs-0.6.25-15.el6_8.1.x86_64
で8月25日3時にlvmがアップデートされている。
上記の2chに指摘された事項と同じLVMがアップデートされてカーネルとの相性がわるくなってハングアップしてしまったのでしょうか?
とりあえず現在のカーネルの確認
# uname -a
Linux www16071ue.sakura.ne.jp 2.6.32-504.1.3.el6.x86_64 #1 SMP Tue Nov 11 17:57:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
このカーネルも相当古いカーネル(2014年くらい?)でyumによるアップデートをしているので互換性が無いわけではないがこの際カーネルも
ある程度更新したほうがセキュリティ上も問題なくなるのでカーネル等をアップデートしてみます。
現在 /etc/yum.confでexculde=kernel*の記述をしているのでカーネルのupdateは、出来ない設定です。
なのでコメントアウトして
カーネルのアップデートがあるかを確認!!
[root@www16071ue]# yum list updates 読み込んだプラグイン:fastestmirror, priorities, security Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp base | 3.7 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 更新したパッケージ kernel.x86_64 2.6.32-642.4.2.el6 updates kernel-devel.x86_64 2.6.32-642.4.2.el6 updates kernel-firmware.noarch 2.6.32-642.4.2.el6 updates kernel-headers.x86_64 2.6.32-642.4.2.el6 updates
以上4つのモジュールがあるようです。
ということでupdateコマンドで更新!!
しかし、yum updateと打つと下記メッセージでそれ以上進まない
他のアプリケーション: yum
メモリー: 54 M RSS (1.1 GB VSZ)
開始 : Tue Aug 30 18:25:38 2016 – 05:13 秒経過
状態 : 割り込み不可、PID: 2869
別のアプリケーションが現在 yum のロックを持っています。終了するまで待っています…
他のアプリケーション: yum
メモリー: 54 M RSS (1.1 GB VSZ)
開始 : Tue Aug 30 18:25:38 2016 – 05:15 秒経過
状態 : 割り込み不可、PID: 2869
どうやら通常動いているyum-updateのプロセスがあるのでとりあえずkillする。
[root@www16071ue log]# ps aux | grep yum root 2432 0.0 0.0 106108 508 ? SN 13:33 0:00 /bin/bash /etc/cron.daily/0yum.cron root 2433 0.0 0.0 105964 300 ? SN 13:33 0:00 awk -v progname=/etc/cron.daily/0yum.cron progname {????? print progname ":\n"????? progname="";???? }???? { print; } root 2869 1.0 5.7 1187656 59120 ? DN 14:25 0:02 /usr/bin/python /usr/bin/yum -e 0 -d 0 -y shell /etc/yum/yum-daily.yum root 2897 0.4 1.5 317576 16220 pts/2 S+ 14:28 0:00 /usr/bin/python /usr/bin/yum update root 2908 0.0 0.0 103328 864 pts/1 S+ 14:30 0:00 grep yum [root@www16071ue log]# kill -9 2869
これでもう一度yum updateコマンド
[root@www16071ue]# yum update 読み込んだプラグイン:fastestmirror, priorities, security Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp 更新処理の設定をしています Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp * extras: ftp.nara.wide.ad.jp * updates: ftp.nara.wide.ad.jp 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> Package kernel.x86_64 0:2.6.32-642.4.2.el6 will be インストール ---> Package kernel-devel.x86_64 0:2.6.32-642.4.2.el6 will be インストール ---> Package kernel-firmware.noarch 0:2.6.32-504.1.3.el6 will be 更新 ---> Package kernel-firmware.noarch 0:2.6.32-642.4.2.el6 will be an update ---> Package kernel-headers.x86_64 0:2.6.32-504.1.3.el6 will be 更新 ---> Package kernel-headers.x86_64 0:2.6.32-642.4.2.el6 will be an update --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ パッケージ アーキテクチャ バージョン リポジトリー 容量 ================================================================================ インストールしています: kernel x86_64 2.6.32-642.4.2.el6 updates 32 M kernel-devel x86_64 2.6.32-642.4.2.el6 updates 11 M 更新: kernel-firmware noarch 2.6.32-642.4.2.el6 updates 28 M kernel-headers x86_64 2.6.32-642.4.2.el6 updates 4.4 M トランザクションの要約 ================================================================================ インストール 2 パッケージ アップグレード 2 パッケージ 合計容量: 75 M これでいいですか? [y/N]y パッケージをダウンロードしています: トランザクションを実行しています 更新 : kernel-firmware-2.6.32-642.4.2.el6.noarch 1/6 インストールしています : kernel-2.6.32-642.4.2.el6.x86_64 2/6 インストールしています : kernel-devel-2.6.32-642.4.2.el6.x86_64 3/6 更新 : kernel-headers-2.6.32-642.4.2.el6.x86_64 4/6 整理中 : kernel-headers-2.6.32-504.1.3.el6.x86_64 5/6 整理中 : kernel-firmware-2.6.32-504.1.3.el6.noarch 6/6 Verifying : kernel-firmware-2.6.32-642.4.2.el6.noarch 1/6 Verifying : kernel-headers-2.6.32-642.4.2.el6.x86_64 2/6 Verifying : kernel-2.6.32-642.4.2.el6.x86_64 3/6 Verifying : kernel-devel-2.6.32-642.4.2.el6.x86_64 4/6 Verifying : kernel-headers-2.6.32-504.1.3.el6.x86_64 5/6 Verifying : kernel-firmware-2.6.32-504.1.3.el6.noarch 6/6 インストール: kernel.x86_64 0:2.6.32-642.4.2.el6 kernel-devel.x86_64 0:2.6.32-642.4.2.el6 更新: kernel-firmware.noarch 0:2.6.32-642.4.2.el6 kernel-headers.x86_64 0:2.6.32-642.4.2.el6 完了しました!
これだけでは、カーネルは、最新にならないので reboot してもう一度、カーネルのバージョンを確認
[root@www16071ue ~]# uname -a Linux www16071ue.sakura.ne.jp 2.6.32-642.4.2.el6.x86_64 #1 SMP Tue Aug 23 19:58:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
これでカーネルも更新されました。 数日間これで様子を見て不安定ならばカーネルのバージョンかLVMのバージョンをダウングレードしないといけないと思います。
よければこのまま最新カーネルでいきたいと思います。最後に
yum.confのカーネルを自動更新しないように再度処置
[root@www16071ue ~]# vi /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release exclude=kernel* <------コメントアウト#をはずす 以下省略
*****************************************************************************
にほんブログ村