アーカイブ

2013 年 12 月 のアーカイブ

CentOS 6.5 サーバハングアップ 調査結果

2013 年 12 月 17 日 Comments off

今後のために備忘録的に書いておきます。参考にならないかもしれませんが・・・

 

昨日、久しぶりに自分のサイトを確認しようとしたら

「サーバにつながらない」のメッセージが・・・

急いでteratermでログインを試みるもアクセスできず、当然SFTPでもつながらない。

 

 

さくらVPSなので専用のコンソールからログインするとコンソール画面は、文字化け状態、

すぐにリモートコンソールの強制再起動のボタンを押してとりあえずWEBを確認できるところまでできました。

 

 

そしてサーバにログインして早速、/var/log/messagesを確認

Dec 16 08:16:53 www16071ue kernel: httpd invoked oom-killer: gfp_mask=0x200da, order=0, oom_adj=0, oom_score_adj=0

 

以前にも見たことのあるoom-killerの発動です。

けれど自宅サーバ時代の旧型ザクのようなパソコンよりも高性能なさくらVPSなので

メモリも1GBでcpuなどスペック的には、問題ないはず。

 

けれどこれが発動されているとしたらメモリ不足を疑います。というかメモリ不足が原因

しかも動かしているものとすればhttpdがメインなのでこれくらいしか思い当たらない。

 

 

まずfreeコマンドやtopコマンド、vmstatなどでメモリやswapの状況を確認しましたが良く分かりません。

通常の状態だとfreeコマンド見ると300MB~400MBくらいの空きメモリがあるのでそんなに緊急を要する状態には、みえない。

 

 

とりあえず、/etc/httpd/conf/にあるhpptd.confの設定を確認する。

<IfModule prefork.c>
StartServers       5
MinSpareServers    5
MaxSpareServers   10
ServerLimit      256
MaxClients       70
MaxRequestsPerChild  1000
</IfModule>

MaxClients       を80→70へ

MaxRequestsPerChild  2000→1000

少しだけに変更しました。

 

 

空きメモリが若干増えたりしましたが根本的な解決に至りません。そもそもアクセスログみたりしても

webサーバでそんなにアクセスが多いわけじゃないのでhttpdのメモリ不足ということでは、無いらしい。

(アクセスログみなくても分かるけれど・・・・(^^;) そんな人気サイトか?(笑)、それとも不正アクセスなどの攻撃?

なんてことは、無いと思いますがよくわからないのでちょっと半日ほど休憩しました。

 

httpdのログを見てたら脱線しちゃって、ログのフォーマット形式を色々と変更したりして気分転換していたら、

下記のログを発見

Dec 16 08:16:53 www16071ue kernel: httpd invoked oom-killer: gfp_mask=0x200da, o
rder=0, oom_adj=0, oom_score_adj=0
Dec 16 08:16:53 www16071ue kernel: httpd cpuset=/ mems_allowed=0
Dec 16 08:16:53 www16071ue kernel: Pid: 25152, comm: httpd Not tainted 2.6.32-220.23.1.el6.x86_64 #1
Dec 16 08:16:53 www16071ue kernel: Call Trace:
Dec 16 08:16:53 www16071ue kernel: [<ffffffff810c2f21>] ? cpuset_print_task_mems_allowed+0x91/0xb0
Dec 16 08:16:53 www16071ue kernel: [<ffffffff81113c80>] ? dump_header+0x90/0x1b0
Dec 16 08:16:53 www16071ue kernel: [<ffffffff810e144e>] ? __delayacct_freepages_end+0x2e/0x30
Dec 16 08:16:53 www16071ue kernel: [<ffffffff8120ddfc>] ? security_real_capable_noaudit+0x3c/0x70
Dec 16 08:16:53 www16071ue kernel: [<ffffffff8111410a>] ? oom_kill_process+0x8a/0x2c0
Dec 16 08:16:53 www16071ue kernel: [<ffffffff81114041>] ? select_bad_process+0xe1/0x120
Dec 16 08:16:53 www16071ue kernel: [<ffffffff81114560>] ? out_of_memory+0x220/0x3c0

Not taintedという聞きなれないキーワードが・・・

色々とググルとカーネルの不具合もあるというブログもあったのでそっち方面も調べる。

/var/log/yum.logを調べると、15日の朝方にkernelのupdateがあった。

Dec 15 02:22:56 Updated: kernel-firmware-2.6.32-431.1.2.0.1.el6.noarch
Dec 15 02:24:05 Installed: kernel-2.6.32-431.1.2.0.1.el6.x86_64
Dec 15 02:24:36 Updated: kernel-headers-2.6.32-431.1.2.0.1.el6.x86_64
Dec 15 02:25:24 Installed: kernel-devel-2.6.32-431.1.2.0.1.el6.x86_64

障害が発生したのが16日の朝、時間的には、1日近くたっているけれどちょっと怪しい。

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

また、下記cent OSサイトでカーネルパニックのことが書いてあった。やはりビンゴかな?

http://bugs.centos.org/view.php?id=6832

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

早速、再起動時にひとつ古いカーネルで起動するようにした。

 

サーバコンソール

他にもやり方があるかもしれないが、リモートコンソールで、再起動時にリターンキーを押すとカーネルを選べるので

一番上が新しいカーネル、上から2つめが一つ前のカーネルとなっているので、ひとつ前のカーネルで起動させた。

そして原因?の新しいカーネルを削除する。

# yum remove kernel-2.6.32-431.1.2.0.1.el6
Loaded plugins: downloadonly, fastestmirror, priorities, security
Setting up Remove Process
Resolving Dependencies
–> Running transaction check
—> Package kernel.x86_64 0:2.6.32-431.1.2.0.1.el6 will be erased
–> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package      Arch         Version                         Repository      Size
================================================================================
Removing:
kernel       x86_64       2.6.32-431.1.2.0.1.el6          @updates       121 M

Transaction Summary
================================================================================
Remove        1 Package(s)

Installed size: 121 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing    : kernel-2.6.32-431.1.2.0.1.el6.x86_64                         1/1
Verifying  : kernel-2.6.32-431.1.2.0.1.el6.x86_64                         1/1

Removed:
kernel.x86_64 0:2.6.32-431.1.2.0.1.el6

Complete!

そしてカーネル自体yumで自動アップデートしないようにする。

# vi /etc/yum.conf

exclude=kernel*

を追記する。

これでとりあえず様子です。

 

 

カーネルパニックは、回避できればと思います。

私は、公私で年末バタバタしてパニックになりそうですが・・・・(笑)