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
NGNG
>>589
どもです。

でも、こっちがいいかも。

【かぼちゃ】負荷監視所_20051123
http://live14.2ch.net/test/read.cgi/liveplus/1132747514/
2005/12/12(月) 17:46:42ID:MXlgwhaVO
>>588
ちょwwwwwwヒドスwwwwwwwww
NGNG
workerを利用して、
バックエンド(live22)の処理受付可能数を、>>566 の倍にしてみたつもり。

<IfModule worker.c>
StartServers 96
MinSpareThreads 512
MaxSpareThreads 3072
Serverlimit 144
ThreadLimit 32
ThreadsPerChild 32
MaxClients 4608
MaxRequestsPerChild 32000000
MaxMemFree 64000
</IfModule>
2005/12/12(月) 21:22:40ID:bHUmkslz0
FreeBSD5.3Rでworkerがうまく動かないのってこれじゃないんですか?

■新春特別企画「雪だるま作戦」liveサーバの飛躍なるか!? Part1
http://qb5.2ch.net/operate/kako/1105/11050/1105035540.html

188 ◆cZfSunOs.U [sage] 05/03/10 20:55:04 ID:geHPxiLU0
http://www.mail-archive.com/dev@httpd.apache.org/msg24903.html
* FreeBSD, threads, and worker MPM. All seems to work fine
if you only have one worker process with many threads. Add
a second worker process and the accept lock seems to be
lost. This might be an APR issue with how it deals with
the child_init hook (i.e. the fcntl lock needs to be resynced).
More examination and analysis is required.
Status: Works with FreeBSD 5.3. Does not work in previous versions.
This has also been reported on Cygwin.

189 動け動けウゴウゴ2ちゃんねる [sage] 05/03/10 21:13:47 ID:KUErTDVR0
ほう。
つまり、1プロセスならば問題なさそう、という事ですね。
むしろ願ったりな状況なのかも。
594root▲ ★
垢版 |
NGNG
>>593
かもしんないすね。

で、live22x2のworker MPMは何ら問題なかったようなので、
live22x[13]も、worker MPMにしてくるです。
595root▲ ★
垢版 |
NGNG
done. >>594
596root▲ ★
垢版 |
NGNG
news19, ex14, live22系でworker MPM(with -lpthread)を動かしてみた結果:

Apacheはどれも2.0.55を使用。

news19 (FreeBSD 5.3R):
・httpd落ちまくり、最終的には外部からのアクセス不能に、あわてて戻す

ex11 (FreeBSD 5.4R):
・概ね問題なし、ただしhttpdの数が減らない設定にしているはずなのに減っていく現象が発生
・アクセスが多くなればちゃんと増える

live22系 (FreeBSD 6.0R)
・現時点まで全く問題なし

ということでread.cgiのようなプログラムもさることながら、
OSそのものやスレッドライブラリの出来の違いも、大きいみたい。

昨日管理人から「worker MPMが普通にちゃんと動いたっていうの、初めて聞きましたー」
って言われたです。確かに、そうかも。
597root▲ ★
垢版 |
NGNG
>>596
たぶん、これか。

FreeBSD/i386 5.4-RELEASE Release Notes
http://www.freebsd.org/releases/5.4R/relnotes-i386.html

> A number of bugfixes for libpthread have been merged from HEAD.
2005/12/13(火) 20:00:14ID:6UEXQNB00
>> 586
今年はもう受付嬢の実験はないようですが、
CNAMEをlive22y.peko.2ch.netにしておけば、
maido3の中のひとがいなくても、rootさんだけで
実験できるかも。
2005/12/13(火) 23:33:11ID:pxLkBcfF0
worker MPM は,とりあえず順調なようですね.

>>571
>ThreadLimit = ThreadsPerChildより多くする、当面同じで

worker MPM では1プロセスあたりのスレッド数は固定なので,
ThreadLimit > ThreadsPerChild の状態にしてもメリットはなく,
むしろスレッド管理データ領域を必要以上に確保してメモリの無駄遣いになっちゃいます......
2005/12/14(水) 02:07:57ID:LE2aS7aP0
FreeBSD 6.0R Apache2.2 + worker MPM
という人柱も海外にはチラホラ出現しているね。
601root▲ ★
垢版 |
2005/12/14(水) 02:34:09ID:???0
>>598
確かに。
でも、ゾーン外CNAMEを使うとDNSキャッシュサーバがその分仕事しなければいけないんで、
あんまり、使いたくない部分があるです。

>>599
なるほどです。

で、明日はかなり来るということなので、負荷テストを兼ねて
live22の設定を以下にしてみました。
これで、live22xNの3倍の接続を受け付けるので、
全フロントエンドがフルスロットになるまでは、いくはず。
(先日の中山のくじできびしくなったのは、たぶんここが足りなかった、というか
増やしにくかった)

>>600
今の2段階ぐらい先のフェーズで、やってみたいかなと。
602root▲ ★
垢版 |
2005/12/14(水) 02:34:38ID:???0
>>601
<IfModule worker.c>
StartServers 144
MinSpareThreads 768
MaxSpareThreads 4608
Serverlimit 216
ThreadLimit 32
ThreadsPerChild 32
MaxClients 6912
MaxRequestsPerChild 32000000
MaxMemFree 64000
</IfModule>
603root▲ ★
垢版 |
NGNG
ex14(FreeBSD 6.0R/amd64)もworker MPMに移行した。
問題ない模様。
2005/12/17(土) 22:13:14ID:8BhW9cSP0
http://live22.2ch.net/_service/bbsd-20051217.txt
で、2回ばかり、
> total worker threads = 4, idle worker threads = 1

があったので、
-n 32 => -n 48 にしてみた。@ bbsd
2005/12/18(日) 00:53:38ID:wzveF3mu0
>>604 PC 故障中乙です......

まぁ,現在の bbsd はスレッド数可変式なので足りなくなったら増えますけどね.
-n32 なら 4-32,-n48 なら 6-48 の範囲でスレッド数は変化します.
606root▲ ★
垢版 |
NGNG
>>605
なんと、そういう動きですか。

んじゃ、32のままでもいいかもですが、
実害はあまりないかなと。
607root▲ ★
垢版 |
NGNG
来年の予定。

HEADS UP: Release schedule for 2006
http://lists.freebsd.org/pipermail/freebsd-stable/2005-December/020744.html

Jan 30: Freeze RELENG_5 and RELENG_6
Mar 20: Release FreeBSD 6.1
Apr 3: Release FreeBSD 5.5
Jun 12: Freeze RELENG_6
Jul 31: Release FreeBSD 6.2
Oct 23: Freeze RELENG_6
Dec 11: Release FreeBSD 6.3

5系は5.5Rでおしまい。
6系をがんがって3回出すと言っているけど、さて、どうなることやら。
NGNG
>>607
さっそく、FreeBSB 6.0R-p1になりました。

20051219: p1 FreeBSD-EN-05:04.nfs
Correct a locking issue in nfs_lookup() where a call to vrele()
might be made while holding the vnode mutex, which resulted
in kernel panics under certain load patterns.
609root▲ ★
垢版 |
2005/12/22(木) 02:14:23ID:???0
>>608
…ですね。
今日からstiger10[0-5]をもみ始めましたが、
その時に気がついたです。

NFSの虫取りですか。
vreleっていうぐらいで、mpsafevfsまわりでもあるのかな。
NGNG
NFSちゃんと動けば、サーバのdat共用が出来てうれしいんだけど、まだ無理なんだろうな。

先週、6.0R-p0の状態で、NFS試したけど駄目だったw
611root▲ ★
垢版 |
2005/12/22(木) 02:35:40ID:???0
*BSDのNFSでまともに動くのって、経験したことがないです。
2chでも大敗だったのは、記憶に新しいところ。

NFSをまじめに使いたいなら、Solarisしかないかなと。
rpc.lockdとか、ぼろいみたい。
2005/12/22(木) 07:47:05ID:dsgDEabi0
>*BSDのNFSでまともに動くのって、経験したことがないです。
Linuxはさらにダメぽ。

つまりroot★氏のいうとおりSolarisだけか……
2005/12/22(木) 10:49:16ID:rVVGEGh20
Linux の NFS は論外として、*BSD の NFS はそこそこ
というか、かなりよくなってきてると思うけど、
どの辺がダメぽなの?
614root▲ ★
垢版 |
2005/12/22(木) 12:05:16ID:???0
>>613
確かに昔よりは、相当いいかんじですね。それは認めるです。
NFS越しにfindを繰り返すとそのまま逝ってしまうとかいうことは、
なくなってきました。

・雪だるまで使った時は、ヘビーに読むと(read only mount)
I/O待ちになったまま、カーネル内でささる状況を観測
(psで見るとDの状態のままになる)
(FreeBSD 5.4R)

あと何より、

・NFS越しのロック機構(rpc.lockd)が相当しょぼい

これに尽きるかなと。

Solarisですら、rpc.lockdのパッチは相当出ていたように記憶しているです。
615root▲ ★
垢版 |
NGNG
めもめも。

HEADS UP: MFC of local_startup changes to rc.d complete
http://lists.freebsd.org/pipermail/freebsd-stable/2005-December/020931.html
616root▲ ★
垢版 |
NGNG
べっかんこ作戦関連のDNS登録依頼をします。
既に登録があるようなので、変更依頼になるはずです。

以下の設定変更をお願いします。
ログインアカウント情報等は、別途出します。

(現在)
+u.la:206.223.151.180
+www.u.la:206.223.151.180

(変更後)
+u.la:206.223.157.7
+www.u.la:206.223.157.7
617root▲ ★
垢版 |
NGNG
続いて、第二弾のDNS登録依頼いきます。

(新規追加)
+same.u.la:206.223.157.12
+chirasi.u.la:206.223.157.17
+bbm.u.la:206.223.157.32
618ピロリ
垢版 |
2005/12/24(土) 16:51:20ID:5ceyGHA+0
>>616 done
>>617 done
NGNG
逆引きはセテーイされていないのですね。@*.u.la
620ピロリ
垢版 |
2005/12/24(土) 19:04:30ID:5ceyGHA+0
ありゃりゃ?
621ピロリ
垢版 |
2005/12/24(土) 19:05:26ID:5ceyGHA+0
誰が設定すれば良いのでしたっけ?
622root▲ ★
垢版 |
NGNG
>>621
ns[12].maido3.com で設定すればいいはずですね。

%dig -t ns 0.157.223.206.in-addr.arpa.

; <<>> DiG 9.3.1 <<>> -t ns 0.157.223.206.in-addr.arpa.
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55384
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;0.157.223.206.in-addr.arpa. IN NS

;; ANSWER SECTION:
0.157.223.206.in-addr.arpa. 769 IN NS ns2.maido3.com.
0.157.223.206.in-addr.arpa. 769 IN NS ns1.maido3.com.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Dec 24 02:22:28 2005
;; MSG SIZE rcvd: 90
623ピロリ
垢版 |
2005/12/24(土) 20:54:08ID:5ceyGHA+0
はいー
624ピロリ
垢版 |
2005/12/24(土) 23:30:04ID:5ceyGHA+0
206.223.157.7 u.la
206.223.157.12 same.u.la
206.223.157.17 chirasi.u.la
206.223.157.32 bbm.u.la

DNS逆引き設定を登録しました。
625root▲ ★
垢版 |
NGNG
>>624
確認しました。
stigerXXX.maido3.comではなく、u.laな名前で登録したですか。
2005/12/25(日) 01:45:36ID:kC90C2xX0
bbs.cgi とかで hostname によって処理を振り分けてる部分とかなかったでしたっけ.
load avg. に応じた処理変更とか.もっとも,DNS の逆引きがどうあれ gethostname() が
stigerXXX.maido3.com を返すのなら大丈夫でしょうけど.
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/;
ナンタラカンタラ・・・
}
で値を返してあげるとかとか♪
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。