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
2ch特化型サーバ・ロケーション構築作戦 Part19
■ このスレッドは過去ログ倉庫に格納されています
1root▲ ★
NGNG628root▲ ★
NGNG >>626
> もっとも,DNS の逆引きがどうあれ gethostname() が
> stigerXXX.maido3.com を返すのなら大丈夫でしょうけど.
のはずですね。
サーバごとの臨界LAを定めているところがありますが、
あそこはSys::Hostname を使っていたはず。
> もっとも,DNS の逆引きがどうあれ gethostname() が
> stigerXXX.maido3.com を返すのなら大丈夫でしょうけど.
のはずですね。
サーバごとの臨界LAを定めているところがありますが、
あそこはSys::Hostname を使っていたはず。
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
スタックを、使い切ったっぽい。
類似例とか、あるのかしら。
【ブリ大根】負荷監視所_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
スタックを、使い切ったっぽい。
631▲ ◆cZfSunOs.U
2005/12/25(日) 04:31:01ID:kC90C2xX0 http://www.monkey.org/freebsd/archive/freebsd-current/200505/msg00063.html
スレッド数が猛烈に増えるとカーネルメモリを食い尽くすってことですかね.
worker MPM で接続可能クライアント数を増やしたのもありますし(>>601-602).
そのカーネルメモリ領域を増やすとかできないんですかね......
スレッド数が猛烈に増えるとカーネルメモリを食い尽くすってことですかね.
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;
となっているのか。
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);
}
/*
* 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)
#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)
となっているですね。うむむ。
/*
* 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
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
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▲ ★
NGNG640root▲ ★
NGNG あと、bbsd ですが、そんなわけで -n 24 に減らしましたが、
もっと小さな値でも、いいのかも、かも。
もっと小さな値でも、いいのかも、かも。
2005/12/25(日) 12:48:31ID:ssnhnbTl0
643▲ ◆cZfSunOs.U
2005/12/25(日) 16:35:56ID:kC90C2xX0 全プロセストータルでのスレッド数が増えすぎないようにということでは,
MaxClients の引き下げとかいうあたりですかね.
# こういうのは,カーネルパニックじゃなくシステムコールのエラーリターンのように
# もっと graceful なやり方にできんものか,とも思ったりもしますが......
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
<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をリスタートして、再開。
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
とかして、何か変わったところとかはありますか?
よく考えたら、panicの直接の原因はkstack allocation failedだけど、
別の何かが大量にメモリを掴んでいることが真の問題とかいうことも考えられますよね。
# vmstat -mz -M /var/crash/vmcore.1
とかして、何か変わったところとかはありますか?
647root▲ ★
2005/12/25(日) 21:40:03ID:???0650▲ ◆cZfSunOs.U
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で死んだ)。
ってことはメインスレッドも凍ってたってことでしょうから,
メインスレッドの状態だけでもわかれば手がかりになるかも......
>カーネルパニックする前に救い出した。
>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さん、こんばんはーヾ('-')ノ
2005/12/26(月) 10:13:19ID:f+3Ce4xM0
むさんいつぞやはお世話になりましたー。
本業も一息つきそうなので、手伝えることがないか
このスレに参加させてもらいますー。
本業も一息つきそうなので、手伝えることがないか
このスレに参加させてもらいますー。
655▲ ◆cZfSunOs.U
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 プロセスになったりしていなければ).
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:???02005/12/26(月) 20:56:00ID:9cjQ9jL80
最近は鯖さんが氏んでも即復帰する体制作りやってるんですか?ヾ('-')ノ
658root▲ ★
2005/12/26(月) 23:17:59ID:???0NGNG
「絶対繋がる2ちゃんねる」への道
661root▲ ★
2005/12/27(火) 14:51:22ID:???0 …ということで、DNS登録依頼をするです。
雪だるまシステム開発用になります。
以下の登録をよろしくお願いします。
(新規登録)
+snow.2ch.net:206.223.152.30
雪だるまシステム開発用になります。
以下の登録をよろしくお願いします。
(新規登録)
+snow.2ch.net:206.223.152.30
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/
http://snow.2ch.net/alaska/
668動け動けウゴウゴ2ちゃんねる
2005/12/28(水) 12:37:07ID:Pk1X6/2M0669root▲ ★
NGNG670root▲ ★
NGNG UNIX timeは別に関係ないから(だって所詮は単なる数値)、
dateコマンドとかローカルタイムにする(zoneinfo読む系)ところで、1秒ずれるのかな。
で、ずっとずれ続けると。
FreeBSDだと、
確か5.4R以降じゃないと2006年の閏秒は入ってないから、
そういうやつ(ほとんどのbanana、かなりのtiger)は、何かしないといけないのかな。
ちょっと調べてまとめて、必要ならmaido3.comの中の人にも作業お願いしようっと。
dateコマンドとかローカルタイムにする(zoneinfo読む系)ところで、1秒ずれるのかな。
で、ずっとずれ続けると。
FreeBSDだと、
確か5.4R以降じゃないと2006年の閏秒は入ってないから、
そういうやつ(ほとんどのbanana、かなりのtiger)は、何かしないといけないのかな。
ちょっと調べてまとめて、必要ならmaido3.comの中の人にも作業お願いしようっと。
671root▲ ★
NGNG いろいろ調べ中。
結論からいうと、
FreeBSDでは、デフォルトでは閏秒はシステムに入っていない状態なので、
「デフォルト状態で」「NTPでUTCに対して時間を合わせている限り」、
今回の閏秒挿入に関して、何らかのアクションを起こす必要はない。
つまり、我々は何もする必要がない。
になります。
TAIに合わせている場合(例えばclockspeedとかを使っている場合など)は、
FreeBSDでは最初にそもそも対応が必要だったはずで、
その対応と同じことを、ファイルを更新したうえで、再度やる必要がある。
ことになるはず。
結論からいうと、
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度カウントすることになります。
ネットワ−クによる時刻情報提供サービス(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
ほんとに、同じ時刻を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秒間発生することになる。
ということになるのかなと。
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
つまり、記念カキコしても無駄ですよと
それはそれで寂しいな
それはそれで寂しいな
if( time == 1136073600 and $$ % 10 == 0){ $FOX->{なんたら} =~ s/\b09:00:00/08:59:60/ }
wktk
wktk
2005/12/28(水) 17:01:05ID:7YQ9faMd0
1/1はX:YY:XX.aaにしてみるとか
無駄かな?
無駄かな?
2005/12/28(水) 17:01:37ID:txPabSy90
ログが2個できて壊れる可能性があると?特にVIP
680root▲ ★
NGNG qb6には、Time::HiRes が入ってないのね。
必要なのは一部サーバだけだろうから、
live22xとex14あたりだけ入れてみるとかかなと。
必要なのは一部サーバだけだろうから、
live22xとex14あたりだけ入れてみるとかかなと。
2005/12/28(水) 18:19:59ID:txPabSy90
あっち行ったりこっち行ったり大変そうですが頑張ってください。
>>682
あ、使えないか、、、λ.....
あ、使えないか、、、λ.....
684▲ ◆cZfSunOs.U
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秒」が出現するのかな......
># 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とか使ってみるかんじか。
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 ; #現在時刻
}
通らないところで、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;
}
# マイクロ秒の情報がある場合、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も入れてみたりしない?
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/;
ナンタラカンタラ・・・
}
で値を返してあげるとかとか♪
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/;
ナンタラカンタラ・・・
}
で値を返してあげるとかとか♪
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;
で、これを実行すると、
#! /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にすれば、動くみたい。
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にすれば、動くみたい。
694▲ ◆cZfSunOs.U
2005/12/29(木) 18:59:34ID:SUwPIZhK0 >>693 Time::HiRes::gettimeofday も eval 中に入れたらどうでしょうか.
というか......Time::HiRes が入ってない鯖ではホームディレクトリに
Time::HiRes を入れておいて use lib するとか......
というか......Time::HiRes が入ってない鯖ではホームディレクトリに
Time::HiRes を入れておいて use lib するとか......
2005/12/29(木) 19:07:21ID:ArqA66li0
ヒント:$@
ですね
ですね
698root▲ ★
NGNG ええと、ひとつ質問です、、、。
いわゆるprefork(シングルスレッド・複数プロセス)な状態でbbsdを動かすことって、
できるんでしたっけか。
いわゆるprefork(シングルスレッド・複数プロセス)な状態でbbsdを動かすことって、
できるんでしたっけか。
699root▲ ★
NGNG さすがに -n 8 は微妙な感じなので、
-n 12 にしてみた。< live22
-n 12 にしてみた。< live22
700▲ ◆cZfSunOs.U
2005/12/31(土) 21:05:07ID:gkdQzfB/0 >>698 シングルスレッド・シングルプロセスなら可能ですが,複数プロセスは
残念ですが対応してません......複数プロセスだと排他制御が大変になるし
(インタープロセスな mutex だとどれかプロセスが死んだ場合の考慮を
しなければならないが,それに必要な pthread_mutexattr_setrobust_np()
が FreeBSD にはない模様,一方 flock() などでやるとなると昔の bbs.cgi と同じ),
subject バッファも共有メモリを使うとかいうことになって,それも大変なので......
まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
動かす形になりますかね.その場合,UDP ソケットのキューイング機能によって処理が
シリアライズされることになります.コンカレンシーはなくなりますが,実際上待ち行列に
入ってもそれほど長時間待たされるということもないかと思いますし......
残念ですが対応してません......複数プロセスだと排他制御が大変になるし
(インタープロセスな mutex だとどれかプロセスが死んだ場合の考慮を
しなければならないが,それに必要な pthread_mutexattr_setrobust_np()
が FreeBSD にはない模様,一方 flock() などでやるとなると昔の bbs.cgi と同じ),
subject バッファも共有メモリを使うとかいうことになって,それも大変なので......
まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
動かす形になりますかね.その場合,UDP ソケットのキューイング機能によって処理が
シリアライズされることになります.コンカレンシーはなくなりますが,実際上待ち行列に
入ってもそれほど長時間待たされるということもないかと思いますし......
701root▲ ★
NGNG >>700
> シングルスレッド・シングルプロセスなら可能ですが,複数プロセスは
> 残念ですが対応してません......
やはりそうですか。
理由も含めて納得したです。
> まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
> 動かす形になりますかね.
そですね。
それでどこまでいけるか、ってかんじですか。
> シングルスレッド・シングルプロセスなら可能ですが,複数プロセスは
> 残念ですが対応してません......
やはりそうですか。
理由も含めて納得したです。
> まぁ,安全策ならシングルスレッド・シングルプロセス(-DUSE_THREADS なしでビルド)で
> 動かす形になりますかね.
そですね。
それでどこまでいけるか、ってかんじですか。
702root▲ ★
NGNG そういえば、例のおかしくなっていた時のApache statusって、
L (ログファイル書き込み中)、ばっかりだったんですよね。
普段はほとんど見かけないのですが。
ひょっとしてひょっとすると、mpsafevfs周りに微妙に虫がいるのかも。
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が急上昇。
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まわりの虫くさいような気がしないでもない。
直感では、mpsafevfsまわりの虫くさいような気がしないでもない。
705▲ ◆cZfSunOs.U
2005/12/31(土) 21:49:19ID:gkdQzfB/0 書き込み側だけじゃなく読み込み側もドバっと来ると虫がうごめき出すようですね.
mod_cache でバック側からの読み出しを減らせれば虫が冬眠から目覚めにくくなるかも......?
mod_cache でバック側からの読み出しを減らせれば虫が冬眠から目覚めにくくなるかも......?
707▲ ◆cZfSunOs.U
2005/12/31(土) 21:55:48ID:gkdQzfB/0 >>706 まぁ OS 側の虫駆除ができればそれはそれでいいんでしょうけど,
それのめどが立たなければ打てる手はそのあたりかと......
それのめどが立たなければ打てる手はそのあたりかと......
708root▲ ★
NGNG # XXX
debug.mpsafevfs=0
/boot/loader.confに追加してリブートした。
さっきはhttpdとかperl(F15)とかが全部、ufsと言って止まっていた。
かなり高い確率で、mpsafevfsの虫だと思われ。
debug.mpsafevfs=0
/boot/loader.confに追加してリブートした。
さっきはhttpdとかperl(F15)とかが全部、ufsと言って止まっていた。
かなり高い確率で、mpsafevfsの虫だと思われ。
709root▲ ★
NGNG >>708 を入れる前と、様子が変わったですね。
bbsdがCPUを速いタイミングから、食うようになったです。
前は、半日も動かしてないとbbsdがtopの上位プロセスに出てこなかったのが、
早くから出てくるようになった。
ファイルシステムががGiant lockで動く(5.xまでと同じ)から、
そういうもんなのかなと。
bbsdがCPUを速いタイミングから、食うようになったです。
前は、半日も動かしてないとbbsdがtopの上位プロセスに出てこなかったのが、
早くから出てくるようになった。
ファイルシステムががGiant lockで動く(5.xまでと同じ)から、
そういうもんなのかなと。
710▲ ◆cZfSunOs.U
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%
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か。
原因はhttpdか。
714root▲ ★
NGNG live22のhttpdをpreforkに戻した。
今日はこれで動かす予定。
今日はこれで動かす予定。
717root▲ ★
NGNG mpsafevfs は原因切り分けのため、明日の昼間にでも元に戻そうかなと。
しかし、超ヘビーにアクセスがあるとworker MPMがおかしくなるというのは、
ありそうな話では、あるのかも。
しかし、超ヘビーにアクセスがあるとworker MPMがおかしくなるというのは、
ありそうな話では、あるのかも。
718▲ ◆cZfSunOs.U
2005/12/31(土) 23:36:04ID:gkdQzfB/0 まぁ,worker MPM の 32 threads / process ってのは bbsd でいえば
-n256 (32-256) と同じようなもんですからね.livejupiter で最速1000
やってた時も,そのぐらいのスレッド数だと bbsd もおかしくなってましたし......
-n256 (32-256) と同じようなもんですからね.livejupiter で最速1000
やってた時も,そのぐらいのスレッド数だと bbsd もおかしくなってましたし......
719root▲ ★
NGNG preforkにするにあたり、php4のモジュールを切ってメモリを空け、
httpdの応答数を前と同じ(フロントの2倍まで受けつけ)にした。< live22
とりあえず、なんとかなるかなと。
httpdの応答数を前と同じ(フロントの2倍まで受けつけ)にした。< live22
とりあえず、なんとかなるかなと。
720root▲ ★
NGNG >>718
ありえるですね。
1プロセス4スレッドとか、8スレッドとかぐらいがいいのかなぁ(それでも有用ではある)。
このへん、あんまり情報がないんですよね。
探し方が悪いだけなのかもしれないですが。
でもまずは、とりあえずpreforkで動かして、他が安定したら再度考えるです。
mpsafevfsとかを元に戻して、しばらく動かしてみてからで。
ありえるですね。
1プロセス4スレッドとか、8スレッドとかぐらいがいいのかなぁ(それでも有用ではある)。
このへん、あんまり情報がないんですよね。
探し方が悪いだけなのかもしれないですが。
でもまずは、とりあえずpreforkで動かして、他が安定したら再度考えるです。
mpsafevfsとかを元に戻して、しばらく動かしてみてからで。
721root▲ ★
NGNG morningcoffeeの設定を戻して、、、。
あとは、live22のmpsafevfsを戻すのか。
これは、落ち着いてからやるか。
あとは、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>
復活させて、そのぶんサーバ数を減らした。
現在の設定。 @ 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はずそう)。
…って書いた直後に、既にこれはフロント参照にしてあって、
私のかんちがいだったことが判明。
(だって、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>
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にしようなと、
思っていたりするです。
過去ログを読む部分は、既に完全にフロント化できたです。
(そういうわけで、上記はかんちがいでした)
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/ したっす。
先のことは考えていないコードですけど、
先のことは考えていないコードですけど、
■ このスレッドは過去ログ倉庫に格納されています