X


2ch特化型サーバ・ロケーション構築作戦 Part19

■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
垢版 |
NGNG
2ch特化型サーバ・ロケーション構築作戦のスレッドです。

・2ちゃんねるのサーバロケーション、PIEに関する関連作業・調整事項
・DNS登録・変更まわりの関連作業・調整事項
・2ちゃんねるのサーバで採用しているOS、FreeBSDに関する情報・調整事項
・各種作戦・プロジェクトとの連携、プロジェクト間の連携

等を取り扱います。

現在、複数サーバによる連携により、
サーバ能力のさらなるスケールアップをめざすための「雪だるま作戦」が進行中です。
雪だるま作戦は、現在以下のスレで雑談しながら進行中です。

<主な関連スレッド>
【しらたま】雪だるま作戦に思いを馳せながら雑談するスレッド Part11
http://aa5.2ch.net/test/read.cgi/nanmin/1121875871/

<主な関連リンク>
ブレーメンメーター: http://mumumu.mu/bremen/
MRTGによる統計情報: http://mumumu.mu/mrtg/
2ちゃんねる サーバ負荷監視所: http://ch2.ath.cx/load/
2ch 鯖監視係。: http://sv2ch.baila6.jp/
2ch CGI 軽量化: http://sunos.saita.ma/2ch-cgi-lw.html
627ピロリ
垢版 |
2005/12/25(日) 01:53:44ID:fD9qTbEU0
修正の方向で、
628root▲ ★
垢版 |
NGNG
>>626
> もっとも,DNS の逆引きがどうあれ gethostname() が
> stigerXXX.maido3.com を返すのなら大丈夫でしょうけど.

のはずですね。
サーバごとの臨界LAを定めているところがありますが、
あそこはSys::Hostname を使っていたはず。
629root▲ ★
垢版 |
NGNG
>>627
了解です。
630root▲ ★
垢版 |
NGNG
虫を踏んだか。
類似例とか、あるのかしら。

【ブリ大根】負荷監視所_20051214
http://live14.2ch.net/test/read.cgi/liveplus/1134552855/523

523 名前: ◆MUMUMUhnYI [sage] 投稿日:2005/12/25(日) 02:51:36 ID:tGhMF0WE0 ?
クラッシュダンプを収容中。(savecore)

vm_thread_new: kstack allocation failed

スタックを、使い切ったっぽい。
2005/12/25(日) 04:31:01ID:kC90C2xX0
http://www.monkey.org/freebsd/archive/freebsd-current/200505/msg00063.html
スレッド数が猛烈に増えるとカーネルメモリを食い尽くすってことですかね.
worker MPM で接続可能クライアント数を増やしたのもありますし(>>601-602).
そのカーネルメモリ領域を増やすとかできないんですかね......
632root▲ ★
垢版 |
NGNG
>>631
in sys/vm/vm_glue.c:

/*
* Get a kernel virtual address for this thread's kstack.
*/
ks = kmem_alloc_nofault(kernel_map,
(pages + KSTACK_GUARD_PAGES) * PAGE_SIZE);
if (ks == 0)
panic("vm_thread_new: kstack allocation failed");
if (KSTACK_GUARD_PAGES != 0) {
pmap_qremove(ks, KSTACK_GUARD_PAGES);
ks += KSTACK_GUARD_PAGES * PAGE_SIZE;
}
td->td_kstack = ks;

となっているのか。
633root▲ ★
垢版 |
NGNG
で、in vm/vm_kern.c:

/*
* kmem_alloc_nofault:
*
* Allocate a virtual address range with no underlying object and
* no initial mapping to physical memory. Any mapping from this
* range to physical memory must be explicitly created prior to
* its use, typically with pmap_qenter(). Any attempt to create
* a mapping on demand through vm_fault() will result in a panic.
*/
vm_offset_t
kmem_alloc_nofault(map, size)
vm_map_t map;
vm_size_t size;
{
vm_offset_t addr;
int result;

size = round_page(size);
addr = vm_map_min(map);
result = vm_map_find(map, NULL, 0,
&addr, size, TRUE, VM_PROT_ALL, VM_PROT_ALL, MAP_NOFAULT);
if (result != KERN_SUCCESS) {
return (0);
}
return (addr);
}
634root▲ ★
垢版 |
NGNG
#ifndef KSTACK_MAX_PAGES
#define KSTACK_MAX_PAGES 32
#endif

って、なってるですね。(in vm/vm_glue.c)
635root▲ ★
垢版 |
NGNG
で、

/*
* Create the kernel stack (including pcb for i386) for a new thread.
* This routine directly affects the fork perf for a process and
* create performance for a thread.
*/
void
vm_thread_new(struct thread *td, int pages)

となっているですね。うむむ。
636root▲ ★
垢版 |
NGNG
Googleしてみると、こんな記述が。
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/performance/2005-08/0004.html

Hrm... I'll suggest one tunable:

options KSTACK_MAX_PAGES=32 # Maximum pages to give the kernel stack

Don't crank it up too far, but 64 seems to be a decent number in my
experience. I'd pimp more settings, but given that tuning is still
closer to an art than a science (it wouldn't be if someone catalogued
settings for various applications and hardware combinations, but I
digress), I'll suggest having you take a peak at the various NOTES
files and some of the headers, such as: src/sys/amd64/include/param.h.
I've divulged more in the archives, too. -sc
637root▲ ★
垢版 |
NGNG
…でかくしてもよさそうな気がするけど、
よく調べてからでないと、ちと、こわいかも。
638root▲ ★
垢版 |
NGNG
さらに。

int kstack_pages = KSTACK_PAGES;
SYSCTL_INT(_kern, OID_AUTO, kstack_pages, CTLFLAG_RD, &kstack_pages, 0, "");

sysctl tunableか。
i386では2、amd64では4の模様。

(live22)
%sysctl -a | grep kstack
kern.kstack_pages: 2

(ex14)
%sysctl -a | grep kstack
kern.kstack_pages: 4
639root▲ ★
垢版 |
NGNG
で、さらっとカーネルソースに目を通してみたところでは、
>>636 は、どうも埋め込みのようかん。
つまり、カーネルの再構築が必要と。

とりあえず今日は、こんなところで。
640root▲ ★
垢版 |
NGNG
あと、bbsd ですが、そんなわけで -n 24 に減らしましたが、
もっと小さな値でも、いいのかも、かも。
2005/12/25(日) 12:48:31ID:ssnhnbTl0
>>637
KSTACK_MAX_PAGESはkernel stack一つ当たりのサイズを
制限するものだから、今回のようなkernel stackの数が増え過ぎのときに
増やすのは逆効果では?
642root▲ ★
垢版 |
NGNG
>>641
…とすると、httpdの数とか(今のところまだ相当余裕あり)を
もっと減らした方がいいかもしれんと。
2005/12/25(日) 16:35:56ID:kC90C2xX0
全プロセストータルでのスレッド数が増えすぎないようにということでは,
MaxClients の引き下げとかいうあたりですかね.

# こういうのは,カーネルパニックじゃなくシステムコールのエラーリターンのように
# もっと graceful なやり方にできんものか,とも思ったりもしますが......
644root▲ ★
垢版 |
2005/12/25(日) 17:15:19ID:???0
>>643
<IfModule worker.c>
StartServers 144
MinSpareThreads 768
MaxSpareThreads 4608
Serverlimit 216
ThreadLimit 32
ThreadsPerChild 32
MaxClients 6912
MaxRequestsPerChild 32000000
MaxMemFree 64000
</IfModule>

<IfModule worker.c>
StartServers 96
MinSpareThreads 512
MaxSpareThreads 3072
Serverlimit 144
ThreadLimit 32
ThreadsPerChild 32
MaxClients 4608
MaxRequestsPerChild 32000000
MaxMemFree 64000
</IfModule>

に変更してみた。@ live22
645root▲ ★
垢版 |
2005/12/25(日) 21:07:01ID:???0
【ブリ大根】負荷監視所_20051214
http://live14.2ch.net/test/read.cgi/liveplus/1134552855/709

カーネルパニックする前に救い出した。
bbsdが凍り付いて、LAがどんどん上がっている状態だった。

とりあえず、-n 24 を -n 8 にして、
httpdとbbsdをリスタートして、再開。
2005/12/25(日) 21:31:46ID:ssnhnbTl0
>>630
よく考えたら、panicの直接の原因はkstack allocation failedだけど、
別の何かが大量にメモリを掴んでいることが真の問題とかいうことも考えられますよね。
# vmstat -mz -M /var/crash/vmcore.1
とかして、何か変わったところとかはありますか?
647root▲ ★
垢版 |
2005/12/25(日) 21:40:03ID:???0
>>646
http://live22.2ch.net/_service/vmstat-20051225.txt

で、実行時に、
vmstat: not implemented

と、出るです。
648ピロリ
垢版 |
2005/12/25(日) 23:19:29ID:1xXeGuLF0
>>625
done
649root▲ ★
垢版 |
NGNG
>>648
逆引きが stiger10[012345].maido3.com になったのを確認しました。
2005/12/26(月) 01:11:40ID:o2brHKko0
>>645
>カーネルパニックする前に救い出した。
>bbsdが凍り付いて、LAがどんどん上がっている状態だった。

う〜む......その凍り付いてる時にどんな状態だかがわかればってとこですが......<bbsd
しかし

http://aa5.2ch.net/test/read.cgi/nanmin/1135352063/164
>[GDB will not be able to debug user-mode threads: /usr/lib/libthread_db.so: Undefined symbol "ps_pglobal_lookup"]

なんですよね...... でも,

http://live14.2ch.net/test/read.cgi/liveplus/1134552855/709
>(killでも死なない、kill -9で死んだ)。

ってことはメインスレッドも凍ってたってことでしょうから,
メインスレッドの状態だけでもわかれば手がかりになるかも......
2005/12/26(月) 01:50:02ID:9cjQ9jL80
rootさん、こんばんはーヾ('-')ノ
652root▲ ★
垢版 |
NGNG
>>650
次回再発したら、精査してみるです。

# /proc を mount しておかないと。
653root▲ ★
垢版 |
NGNG
>>651
おひさしぶりです。
2005/12/26(月) 10:13:19ID:f+3Ce4xM0
むさんいつぞやはお世話になりましたー。
本業も一息つきそうなので、手伝えることがないか
このスレに参加させてもらいますー。
2005/12/26(月) 13:04:26ID:T39eMwpp0
pthread_cond_signal(), pthread_cond_broadcast(), pthread_cond_wait()
pthread_mutex_lock(), pthread_mutex_unlock()
pthread_rwlock_rdlock(), pthread_rwlock_wrlock(), pthread_rwlock_unlock()

これらがエラーになったら abort() するようにしてみますた<bbsd, matd
通常ならこれらがエラーになるのは考えられないんですが,
その考えられないことが発生してるかも知れないので......
で,abort() すると /tmp に core dump します(setuid プロセスになったりしていなければ).
656root▲ ★
垢版 |
2005/12/26(月) 14:26:06ID:???0
>>655
おぉ、入れ替えます。

daemontools的にsetuidgidしていますが、coreは吐くはず、、、。
で、abortしたらdaemontoolsが自動的に立ち上げ直すことになると。
2005/12/26(月) 20:56:00ID:9cjQ9jL80
最近は鯖さんが氏んでも即復帰する体制作りやってるんですか?ヾ('-')ノ
658root▲ ★
垢版 |
2005/12/26(月) 23:17:59ID:???0
>>654
こことか、nanminを「雪だるま」で検索してみるとか。

>>657
いろいろですね。
そのへんも、微妙にやっていたり。
NGNG
「絶対繋がる2ちゃんねる」への道
NGNG
(´-`).。oO(毎分ping撃って、10回連続して返事がなかったらリモートコンソールをリモートで動かしてゴニョゴニョ)
661root▲ ★
垢版 |
2005/12/27(火) 14:51:22ID:???0
…ということで、DNS登録依頼をするです。
雪だるまシステム開発用になります。

以下の登録をよろしくお願いします。

(新規登録)
+snow.2ch.net:206.223.152.30
662ピロリ
垢版 |
2005/12/27(火) 15:20:28ID:fnvv7pXz0
>>661
done
2005/12/27(火) 15:22:14ID:CPOpJNp90
snow.2ch.net建設予定地見えました。
2005/12/27(火) 15:45:27ID:zlg8K/ms0
やほーでsnow.2ch.net見えますた
2005/12/27(火) 16:17:18ID:k/hYTpBl0
>>662
いつもはえーですな
2005/12/27(火) 16:57:14ID:YplRGJUj0
>>rootタン
何のことかよくわかりませんが、いつもお世話になっております
これからも頑張ってください
NGNG
そして、実験用新板が生まれた…
http://snow.2ch.net/alaska/
668動け動けウゴウゴ2ちゃんねる
垢版 |
2005/12/28(水) 12:37:07ID:Pk1X6/2M0
>>936
ttp://qb5.2ch.net/test/read.cgi/operate/1121886018/255-256
ってことで対応してるみたい。
669root▲ ★
垢版 |
NGNG
>>668
これ、まだやってないわけですが、さて。

やらないままに突入すると、どうなるのか。
670root▲ ★
垢版 |
NGNG
UNIX timeは別に関係ないから(だって所詮は単なる数値)、
dateコマンドとかローカルタイムにする(zoneinfo読む系)ところで、1秒ずれるのかな。
で、ずっとずれ続けると。

FreeBSDだと、
確か5.4R以降じゃないと2006年の閏秒は入ってないから、
そういうやつ(ほとんどのbanana、かなりのtiger)は、何かしないといけないのかな。

ちょっと調べてまとめて、必要ならmaido3.comの中の人にも作業お願いしようっと。
671root▲ ★
垢版 |
NGNG
いろいろ調べ中。

結論からいうと、

FreeBSDでは、デフォルトでは閏秒はシステムに入っていない状態なので、
「デフォルト状態で」「NTPでUTCに対して時間を合わせている限り」、
今回の閏秒挿入に関して、何らかのアクションを起こす必要はない。
つまり、我々は何もする必要がない。

になります。

TAIに合わせている場合(例えばclockspeedとかを使っている場合など)は、
FreeBSDでは最初にそもそも対応が必要だったはずで、
その対応と同じことを、ファイルを更新したうえで、再度やる必要がある。

ことになるはず。
672root▲ ★
垢版 |
NGNG
重要なFAQ:

ネットワ−クによる時刻情報提供サービス(NTPサ−ビス)のうるう秒対応
http://jjy.nict.go.jp/news/leaps.html#l4

NTPの取り扱う時刻は1900年1月1日を起点とした時系ですが、
過去のうるう秒を積算していません。積算秒数をお知らせします。
日本標準時で1月1日8時59分60秒(UTCでは12月31日23時59分60秒)と
9時0分0秒(UTCでは1月1日0時0分0秒)は9時0分0秒に相当する
同じ積算秒数をカウントします。

すなわち、60秒と0秒は、同じ時刻を2度カウントすることになります。
673root▲ ★
垢版 |
NGNG
こんなページが。djbか。
ほんとに、同じ時刻を2度カウントするのね。すごいな。

http://cr.yp.to/proto/utctai.html

1997-06-30 23:59:59.7 UTC -> 867715199.7 xntpd
1997-06-30 23:59:59.8 UTC -> 867715199.8 xntpd
1997-06-30 23:59:59.9 UTC -> 867715199.9 xntpd
1997-06-30 23:59:60.0 UTC -> 867715200.0 xntpd
1997-06-30 23:59:60.1 UTC -> 867715200.1 xntpd
1997-06-30 23:59:60.2 UTC -> 867715200.2 xntpd
1997-06-30 23:59:60.3 UTC -> 867715200.3 xntpd
1997-06-30 23:59:60.4 UTC -> 867715200.4 xntpd
1997-06-30 23:59:60.5 UTC -> 867715200.5 xntpd
1997-06-30 23:59:60.6 UTC -> 867715200.6 xntpd
1997-06-30 23:59:60.7 UTC -> 867715200.7 xntpd
1997-06-30 23:59:60.8 UTC -> 867715200.8 xntpd
1997-06-30 23:59:60.9 UTC -> 867715200.9 xntpd
1997-07-01 00:00:00.0 UTC -> 867715200.0 xntpd
1997-07-01 00:00:00.1 UTC -> 867715200.1 xntpd
1997-07-01 00:00:00.2 UTC -> 867715200.2 xntpd
674root▲ ★
垢版 |
NGNG
ということで、今回の件をまとめると、

0) NTPで時刻あわせをしているシステムでは、
今回何の対応もしなくてよい。
つまり、私もmaido3.comの中の人も、何も作業しなくてよい。

1) ntpdは増える閏秒が発生した場合、
同じ秒を2回繰り返すことにより、つじつま合わせをしている。

2) 結果として今回、1136073600 というUNIX timeな時間が、
2ちゃんねる内において1秒間ではなく、2秒間存在することになる。

3) その際のlocaltime()ライブラリによる時間表示は、
Sun Jan 1 09:00:00 JST 2006 となる。

4) つまり、2006/01/01(日) 08:59:60 という表示が
2ちゃんねるにおいて 投稿日: のところに現れることはなく、
2006/01/01(日) 09:00:00 という表示が、2秒間発生することになる。

ということになるのかなと。
2005/12/28(水) 16:39:00ID:GSlwE4iB0
つまり、記念カキコしても無駄ですよと
それはそれで寂しいな
NGNG
if( time == 1136073600 and $$ % 10 == 0){ $FOX->{なんたら} =~ s/\b09:00:00/08:59:60/ }
wktk
2005/12/28(水) 17:01:05ID:7YQ9faMd0
1/1はX:YY:XX.aaにしてみるとか

無駄かな?
2005/12/28(水) 17:01:37ID:txPabSy90
ログが2個できて壊れる可能性があると?特にVIP
679root▲ ★
垢版 |
NGNG
>>676
どひー。

>>677
面白いかも。

>>678
ある瞬間の1秒が2秒に伸びるだけのはずなので、
それは起こらないはず。
680root▲ ★
垢版 |
NGNG
qb6には、Time::HiRes が入ってないのね。

必要なのは一部サーバだけだろうから、
live22xとex14あたりだけ入れてみるとかかなと。
2005/12/28(水) 18:19:59ID:txPabSy90
あっち行ったりこっち行ったり大変そうですが頑張ってください。
NGNG
>>680
http://search.cpan.org/~jhi/BSD-Resource-1.24/Resource.pm
こっちの方が何かと使えたりするかも?
NGNG
>>682
あ、使えないか、、、λ.....
2005/12/28(水) 21:13:17ID:k/jEkinS0
http://www.bsddiary.net/doc/ntpd-leapseconds.html
># cd /usr/src/share/zoneinfo/
># vi leapseconds
>Leap 1998 の行の下に、以下の行を挿入する。
>Leap 2005 Dec 31 23:59:60 + S
>
># make clean
># make LEAPSECONDS=yes install
># cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

これで「60秒」が出現するのかな......
2005/12/29(木) 01:03:05ID:vxoxULLv0
祭りたいのか?祭りたいんだなw
686root▲ ★
垢版 |
2005/12/29(木) 01:42:25ID:???0
>>684
FreeBSD 5.4R以降では、最初から2005年12月31日のエントリが入っているです。

で、時刻合わせをTAIでやってやれば、できなくはないのかな。
clockspeedとか使ってみるかんじか。
687root▲ ★
垢版 |
NGNG
1/100秒対応:

通らないところで、use したものがない場合エラーになるようなので、
syscallで代用。

# 一部サーバではマイクロ秒もとる
if($ENV{SERVER_NAME} =~ /snow|ex14|live22/)
{
# 本当はこっちの方が普通だが、、、
#use Time::HiRes qw( gettimeofday );
#
#($GBX->{NOWTIME}, $GBX->{NOWMICROTIME}) = gettimeofday;
#
# FreeBSD 5.2.1Rなbananaサーバのperlには
# Time::HiResが入っていないので、
# 替わりにsyscallを使うことにする

my $tv = pack("L!L!", ()); # 2つのpackしたlong型変数

require 'sys/syscall.ph';
syscall(&main::SYS_gettimeofday, $tv, undef);

($GBX->{NOWTIME}, $GBX->{NOWMICROTIME}) = unpack("L!L!", $tv);
}
else
{
$GBX->{NOWTIME} = time ; #現在時刻
}
688root▲ ★
垢版 |
NGNG
ほいで、

# マイクロ秒の情報がある場合、1/100秒まで表示する
if(defined($GB->{NOWMICROTIME}))
{
my $csec = sprintf("%02d", int($GB->{NOWMICROTIME} / 10000));
$GB->{DATE} .= '.' . $csec;
}
2005/12/29(木) 07:01:11ID:ArqA66li0
ex11も入れてみたりしない?
NGNG
eval "use Time::HiRes";
if ($@) {
# Time::HiResが無かったときの処理
$GBX->{NOWMICROTIME} = 1;
}
else {
# Time::HiResがあったときの処理
$GBX->{NOWMICROTIME} = undef;
}
# $GBX->{NOWMICROTIME} = $@ ? 1 : undef; # 1行にしてみるテスト
でもって、、、

$GBX->{NOWTIME} = &getNowTime(鯖名、板名、とかとか♪);
こんな式にしておいて・・・

sub getNowTime{
# 一部サーバではマイクロ秒もとる
return time unless $ENV{SERVER_NAME} =~ /^snow|^ex14|^live22/;
ナンタラカンタラ・・・
}
で値を返してあげるとかとか♪
691root▲ ★
垢版 |
NGNG
>>689
入れてみるですかね。

>>690
おぉ、evalすればいいと。
692root▲ ★
垢版 |
NGNG
だめっぽいような。

#! /usr/local/bin/perl -w

use strict;
use warnings;

my $seconds = 0;
my $microseconds = 0;
my $centiseconds = 0;

#use Time::HiRes;
eval "use Time::HiRes";

if(!@$)
{
($seconds, $microseconds) = Time::HiRes::gettimeofday;
$centiseconds = sprintf("%02d", int($microseconds / 10000));
};

print $centiseconds;

exit;

で、これを実行すると、
693root▲ ★
垢版 |
NGNG
./xx.pl
Bareword "Time::HiRes::gettimeofday" not allowed while "strict subs" in use at ./xx.pl line 15.
Execution of ./xx.pl aborted due to compilation errors.

こうなるですね。

# のところを普通のuseにすれば、動くみたい。
2005/12/29(木) 18:59:34ID:SUwPIZhK0
>>693 Time::HiRes::gettimeofday も eval 中に入れたらどうでしょうか.
というか......Time::HiRes が入ってない鯖ではホームディレクトリに
Time::HiRes を入れておいて use lib するとか......
2005/12/29(木) 19:07:21ID:ArqA66li0
ヒント:$@

ですね
696root▲ ★
垢版 |
NGNG
>>694
なるほどです。

>>695
おはずかしい、、、。
NGNG
うぅむ、、、
こうなったら全鯖perl5.8.xにしてもらおう!
698root▲ ★
垢版 |
NGNG
ええと、ひとつ質問です、、、。

いわゆるprefork(シングルスレッド・複数プロセス)な状態でbbsdを動かすことって、
できるんでしたっけか。
699root▲ ★
垢版 |
NGNG
さすがに -n 8 は微妙な感じなので、
-n 12 にしてみた。< live22
2005/12/31(土) 21:05:07ID:gkdQzfB/0
>>698 シングルスレッド・シングルプロセスなら可能ですが,複数プロセスは
残念ですが対応してません......複数プロセスだと排他制御が大変になるし
(インタープロセスな mutex だとどれかプロセスが死んだ場合の考慮を
しなければならないが,それに必要な pthread_mutexattr_setrobust_np()
が FreeBSD にはない模様,一方 flock() などでやるとなると昔の bbs.cgi と同じ),
subject バッファも共有メモリを使うとかいうことになって,それも大変なので......

まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
動かす形になりますかね.その場合,UDP ソケットのキューイング機能によって処理が
シリアライズされることになります.コンカレンシーはなくなりますが,実際上待ち行列に
入ってもそれほど長時間待たされるということもないかと思いますし......
701root▲ ★
垢版 |
NGNG
>>700
> シングルスレッド・シングルプロセスなら可能ですが,複数プロセスは
> 残念ですが対応してません......

やはりそうですか。
理由も含めて納得したです。

> まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
> 動かす形になりますかね.

そですね。
それでどこまでいけるか、ってかんじですか。
702root▲ ★
垢版 |
NGNG
そういえば、例のおかしくなっていた時のApache statusって、
L (ログファイル書き込み中)、ばっかりだったんですよね。
普段はほとんど見かけないのですが。

ひょっとしてひょっとすると、mpsafevfs周りに微妙に虫がいるのかも。
703root▲ ★
垢版 |
2005/12/31(土) 21:44:28ID:???0
calcru: runcalcru: runtime went backwards from 1435168 usec to 1434623 usec for pid 10326 (httpd)
time went backwards from 1380652 usec to 1380546 usec for pid 10327 (httpd)
pid 98776 (httpd), uid 2001: exited on signal 10
pid 10286 (httpd), uid 2001: exited on signal 10
pid 98685 (httpd), uid 2001: exited on signal 10
pid 75181 (httpd), uid 2001: exited on signal 10
pid 10326 (httpd), uid 2001: exited on signal 10
pid 75156 (httpd), uid 2001: exited on signal 10
pid 75165 (httpd), uid 2001: exited on signal 10

さっきと同じか。< 症状
で、LAが急上昇。
704root▲ ★
垢版 |
2005/12/31(土) 21:48:11ID:???0
もう少し「リアルタイムで」現場を見ないと何とも言えないけど、
直感では、mpsafevfsまわりの虫くさいような気がしないでもない。
2005/12/31(土) 21:49:19ID:gkdQzfB/0
書き込み側だけじゃなく読み込み側もドバっと来ると虫がうごめき出すようですね.
mod_cache でバック側からの読み出しを減らせれば虫が冬眠から目覚めにくくなるかも......?
706root▲ ★
垢版 |
2005/12/31(土) 21:52:54ID:???0
>>705
やはり、Apache 2.2化が急務ですか。
2005/12/31(土) 21:55:48ID:gkdQzfB/0
>>706 まぁ OS 側の虫駆除ができればそれはそれでいいんでしょうけど,
それのめどが立たなければ打てる手はそのあたりかと......
708root▲ ★
垢版 |
NGNG
# XXX
debug.mpsafevfs=0

/boot/loader.confに追加してリブートした。

さっきはhttpdとかperl(F15)とかが全部、ufsと言って止まっていた。
かなり高い確率で、mpsafevfsの虫だと思われ。
709root▲ ★
垢版 |
NGNG
>>708 を入れる前と、様子が変わったですね。
bbsdがCPUを速いタイミングから、食うようになったです。

前は、半日も動かしてないとbbsdがtopの上位プロセスに出てこなかったのが、
早くから出てくるようになった。

ファイルシステムががGiant lockで動く(5.xまでと同じ)から、
そういうもんなのかなと。
2005/12/31(土) 22:49:53ID:gkdQzfB/0
>>709 なるほど......

bbsd のログ見てたら,20:50から20:51の間に落ちて再立ち上げされてたようですね.
abort() なのか SIGSEGV かそのあたりか......となると core 吐いてるかな......?

Sat Dec 31 20:50:00 JST 2005
user CPU time = 0:32:21.009, system CPU time = 0:50:51.806
elapsed time = 126:21:01.139, CPU load = 1.10%

Sat Dec 31 20:51:00 JST 2005
user CPU time = 0:00:00.290, system CPU time = 0:00:00.397
elapsed time = 0:00:17.162, CPU load = 4.00%
711root▲ ★
垢版 |
NGNG
この目で見たです。
原因はhttpdか。
712root▲ ★
垢版 |
NGNG
>>710
手でやったかも。
/tmp 見てきます。
NGNG
>>712
一応聞いときますが,楽しいですカー?
714root▲ ★
垢版 |
NGNG
live22のhttpdをpreforkに戻した。
今日はこれで動かす予定。
715root▲ ★
垢版 |
NGNG
>>713
いやぁ、リンクが遅くて。

セッティング出している時が、一番楽しいですよ。
例えそれが、虫との戦いであっても。
NGNG
>>715
なればおk
体も家庭も無理せんようにねーノシ
717root▲ ★
垢版 |
NGNG
mpsafevfs は原因切り分けのため、明日の昼間にでも元に戻そうかなと。

しかし、超ヘビーにアクセスがあるとworker MPMがおかしくなるというのは、
ありそうな話では、あるのかも。
2005/12/31(土) 23:36:04ID:gkdQzfB/0
まぁ,worker MPM の 32 threads / process ってのは bbsd でいえば
-n256 (32-256) と同じようなもんですからね.livejupiter で最速1000
やってた時も,そのぐらいのスレッド数だと bbsd もおかしくなってましたし......
719root▲ ★
垢版 |
NGNG
preforkにするにあたり、php4のモジュールを切ってメモリを空け、
httpdの応答数を前と同じ(フロントの2倍まで受けつけ)にした。< live22

とりあえず、なんとかなるかなと。
720root▲ ★
垢版 |
NGNG
>>718
ありえるですね。

1プロセス4スレッドとか、8スレッドとかぐらいがいいのかなぁ(それでも有用ではある)。

このへん、あんまり情報がないんですよね。
探し方が悪いだけなのかもしれないですが。

でもまずは、とりあえずpreforkで動かして、他が安定したら再度考えるです。
mpsafevfsとかを元に戻して、しばらく動かしてみてからで。
721root▲ ★
垢版 |
NGNG
morningcoffeeの設定を戻して、、、。
あとは、live22のmpsafevfsを戻すのか。

これは、落ち着いてからやるか。
722root▲ ★
垢版 |
NGNG
PHPを止められないとわかったので(p2/2ちゃんねるプロバイダからの過去ログ参照で使用)、
復活させて、そのぶんサーバ数を減らした。

現在の設定。 @ live22

<IfModule prefork.c>
StartServers 2048
MinSpareServers 256
MaxSpareServers 2048
ServerLimit 4608
MaxClients 4608
MaxRequestsPerChild 1000000
MaxMemFree 2000
</IfModule>
723root▲ ★
垢版 |
NGNG
>>722
…って書いた直後に、既にこれはフロント参照にしてあって、
私のかんちがいだったことが判明。
(だって、offlawと一緒じゃん。スロー同期でOK)。

明日、mpsafevfsと一緒に、元に戻そう(PHPはずそう)。
724root▲ ★
垢版 |
NGNG
ということで、明日これに変える予定。 @ live22

2304 = フロントひとつ分の最大値
4608 はその倍ということで。

<IfModule prefork.c>
StartServers 2304
MinSpareServers 256
MaxSpareServers 2304
ServerLimit 4608
MaxClients 4608
MaxRequestsPerChild 1000000
MaxMemFree 2000
</IfModule>
725ピロリ
垢版 |
2006/01/01(日) 04:12:58ID:Wg/XmQVJ0
そねそね
バックは何もしなくていいはず、、、
726root▲ ★
垢版 |
NGNG
>>725
過去ログを読む部分は、既に完全にフロント化できたです。
(そういうわけで、上記はかんちがいでした)

bbs.cgiやread.cgiはフロント化でき、
Samba24とかtimecount/timecloseも別サーバに移動でき、
あとは、ライブなdatを触るとか、subject.txtをごにょごにょするとか、
そのへんですね。

ようは、各種呪文系と。

で、SETTING.TXTをいじるとか、キャップを編集するとかは、
バックに対して唱えることになるです。
あと、過去ログ削除の呪文とかも、そういうことになるのかな。

このへんの整理整頓ができたら、
呪文を唱えた時点で、「こっちで唱えてください」みたいなのを、
表示するかんじにまとめて、呪文そのものは同じやつを配布すればOKにしようなと、
思っていたりするです。
727ピロリ
垢版 |
2006/01/01(日) 04:25:51ID:Wg/XmQVJ0
芋ほりは単に =~ s/live22x/live22/ したっす。
先のことは考えていないコードですけど、
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。