oom-killerの原因がわかった!

Posted by nogajun - 2008/06/27

_

今日の今朝5時ぐらいに、またoom-killerでnofuture.tvが落とされていたわけですが(ごめん!)、その原因がわかった!

原因はこのwww.nofuture.tvじゃなくて、バーチャルホストで提供しているuracciさんとことsilverrecipeのとこに謎の大量のアクセスがきてて、 それをtDiaryがさばききれずoom-killer発動させてた! てことはRLimit兄弟での制限が有効ってことだな。

今から外に出なきゃいけないから帰ってきてから対策をしよう。

_ OSC2008の関西Debian勉強会ブースでTシャツ売るよ

納期の問題も解決したので、OSC2008の関西Debianメンバー用と販売するためのTシャツの発注したよん。

_ oom-killerはパイロットまで放り出す

ひょえー。飛行機を維持するためには容赦なくパイロットまで放り出すですか。

_ apacheのリソースを適切に設定するには?

ググってみた限りでは大体で設定して、あとはトライアンドエラーで探し出すしかないのか。 なんかバシっと見つけ出す方法ってないのかな?

_ rtパッチが当たったカーネル用にaufsをコンパイルする方法がわからない

ホント悩んでます。

aufsにはrtパッチの当たったカーネルに対応させるためのrt-compat.patchというものが付属していて、これの冒頭にこんな事が書いてあります。

Checking RT patch for linux-2.6.23, I found,
- lock_list_first_entry() and lock_list_next_entry() were changed from
  'static inline'-ed function to 'global un-inlined'-ed function, and
  moved from lock_list.h to lock_list.c. They are not exported to kernel
  modules.
- lock_list_splice_init() was newly introduced, and it is not exported
  either.

Finally, you should,,,
- link aufs statically
- or, ask Ingo Molar to export them.

Cがわかんないので、書いている意味がわかんない。orz

スタティックインライン関数って? グローバルのインラインではない関数って??

ググったら同じ悩みのメールがMLに投稿されていたんだけど、できましたとだけで解決方法書いてないし、 パッチもそのままじゃ当たらないから手パッチで当てなきゃいけないし、あー、ホントわかんない!

これでどうだろう

ググってたらこんなの見つけてパッチ当ててみたけど大丈夫っぽい。 Open Source Automation Development Lab (OSADL)というサイトのRealtime Kernel Live CDのリポジトリに置いてあったみたい。

Subversionのリポジトリが見られないので、Googleのキャッシュと、kernel 2.6.24.7-rt14のパッチ。

  • http://www.google.com/search?q=cache:TVDaUGOUmK0J:www.osadl.org/cgi-bin/viewvc.cgi/trunk/compat_patches/kernel/rt_export_lock_list.diff&hl=ja&strip=1

    *** lib/lock_list.c.orig Sat Jun 28 01:41:07 2008 --- lib/lock_list.c Sat Jun 28 01:46:43 2008


    * 15,20 ** --- 15,21 ---- */

    include <linux/lock_list.h>

    • include <linux/module.h>

      void lock_list_add(struct lock_list_head new, struct lock_list_head list)


      * 25,30 ** --- 26,32 ---- spin_unlock(&list->lock); spin_unlock(&new->lock); }

    • EXPORT_SYMBOL(lock_list_add);

      static spinlock_t __lock_list(struct lock_list_head entry) {


      * 118,123 ** --- 120,126 ---- spin_unlock(lock); rcu_read_unlock(); }

    • EXPORT_SYMBOL(lock_list_del_init);

      void lock_list_splice_init(struct lock_list_head list, struct lock_list_head head)


      * 137,142 ** --- 140,146 ---- spin_unlock(lock); rcu_read_unlock(); }

    • EXPORT_SYMBOL(lock_list_splice_init);

      struct lock_list_head lock_list_next_entry(struct lock_list_head list, struct lock_list_head *entry)


      * 152,161 ** spin_unlock(&entry->lock); return next; }

      struct lock_list_head lock_list_first_entry(struct lock_list_head list) { spin_lock(&list->lock); return lock_list_next_entry(list, list); } ! --- 156,166 ---- spin_unlock(&entry->lock); return next; }

    • EXPORT_SYMBOL(lock_list_next_entry);

      struct lock_list_head lock_list_first_entry(struct lock_list_head list) { spin_lock(&list->lock); return lock_list_next_entry(list, list); } ! EXPORT_SYMBOL(lock_list_first_entry);