アーカイブ

‘Linux’ カテゴリーのアーカイブ

centOSサーバ oom-killer発動!! 原因を探る

2016 年 8 月 30 日 Comments off

先日までの間サーバがハングアップしており接続できなく申し訳ありません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*          <------コメントアウト#をはずす
以下省略

*****************************************************************************

ブログランキング・にほんブログ村へ

にほんブログ村

PVアクセスランキング にほんブログ村

カテゴリー: Linux タグ: , ,