peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。
【開発環境の工事現場】
また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/
関連スレなどは >>2-5 くらい
bbs.cgi再開発プロジェクト5
■ このスレッドは過去ログ倉庫に格納されています
04/12/20 07:38:07ID:KYFJjC4V
154root▲ ★
04/12/25 04:48:46ID:??? >>153
サザンさんバージョンですね。
この手法が使えないとすると、、、。
どうやるんだろう。
$SIG{ALRM} = \&timeout;
のところの指定を、SpeedyCGI 流にしないといかんのだろうか。
わたしは斜めにしか理解してないけど、例のグローバルバリュー問題とか。
まとはずれだったらごめんなさい。
サザンさんバージョンですね。
この手法が使えないとすると、、、。
どうやるんだろう。
$SIG{ALRM} = \&timeout;
のところの指定を、SpeedyCGI 流にしないといかんのだろうか。
わたしは斜めにしか理解してないけど、例のグローバルバリュー問題とか。
まとはずれだったらごめんなさい。
155FOX ★
04/12/25 05:00:45ID:??? IO::POll はいわゆるハンドルだったら使えるみたい
たとえば IO::Socket で作ったオブジェクトのハンドル
もちろん IO::File で作ったファイルハンドル
IO::Socket でオブジェクト作って getHostbyName と等価なことできないのかしらん?
たとえば IO::Socket で作ったオブジェクトのハンドル
もちろん IO::File で作ったファイルハンドル
IO::Socket でオブジェクト作って getHostbyName と等価なことできないのかしらん?
156root▲ ★
04/12/25 05:01:54ID:??? Net::DNS がよいと思います。
157FOX ★
04/12/25 05:02:40ID:??? >>154
たぶんシグナルは発生するんだと思うけど、、、
SpeedyCGI配下では伝わってこないんだと思う(推測)
よって捕まえることはできない、、
もしくは eval がどのようにコンパイルされているのかとか、
たぶんシグナルは発生するんだと思うけど、、、
SpeedyCGI配下では伝わってこないんだと思う(推測)
よって捕まえることはできない、、
もしくは eval がどのようにコンパイルされているのかとか、
158root▲ ★
04/12/25 05:06:49ID:??? http://www.net-dns.org/docs/
http://www.net-dns.org/docs/Net/DNS.html
で、該当名のAレコードがあるかどうかというのが、
gethostbyname() と等価ですね。
tigerには入れてあるけど、bananaはどうかな。
ちょっとみてきます。
http://www.net-dns.org/docs/Net/DNS.html
で、該当名のAレコードがあるかどうかというのが、
gethostbyname() と等価ですね。
tigerには入れてあるけど、bananaはどうかな。
ちょっとみてきます。
159root▲ ★
04/12/25 05:07:54ID:??? qb6には入ってますね。
たぶん、全banana/tiger/cobraで使えるでしょう。< Net::DNS
たぶん、全banana/tiger/cobraで使えるでしょう。< Net::DNS
160FOX ★
04/12/25 05:08:07ID:??? Net::DNS あたりは
あらかじめタイムアウトの設定が入っているのかな?
そんな気がするが、
あらかじめタイムアウトの設定が入っているのかな?
そんな気がするが、
161root▲ ★
04/12/25 05:10:06ID:??? で、、、Net::DNS って、いわゆる Dynamic update にも対応してるから、
クライアント側からサーバ側へのダイナミックな登録
(例えばbbs.cgiからのダイナミックなDNS DBへの登録)とかも、できるはずですね。
もちろんその場合、サーバ側がDynamic Updateに対応している必要があります。
クライアント側からサーバ側へのダイナミックな登録
(例えばbbs.cgiからのダイナミックなDNS DBへの登録)とかも、できるはずですね。
もちろんその場合、サーバ側がDynamic Updateに対応している必要があります。
162root▲ ★
04/12/25 05:11:36ID:??? ここのサンプル見ると、入っているように見えますね。
http://www.net-dns.org/docs/Net/DNS.html
つか、まさにこれ?
Send a background query and use select to determine when the answer has arrived.
use Net::DNS;
use IO::Select;
my $timeout = 5;
my $res = Net::DNS::Resolver->new;
my $bgsock = $res->bgsend("host.example.com");
my $sel = IO::Select->new($bgsock);
# Add more sockets to $sel if desired.
my @ready = $sel->can_read($timeout);
if (@ready) {
foreach my $sock (@ready) {
if ($sock == $bgsock) {
my $packet = $res->bgread($bgsock);
$packet->print;
$bgsock = undef;
}
# Check for the other sockets.
$sel->remove($sock);
$sock = undef;
}
} else {
warn "timed out after $timeout seconds\n";
}
http://www.net-dns.org/docs/Net/DNS.html
つか、まさにこれ?
Send a background query and use select to determine when the answer has arrived.
use Net::DNS;
use IO::Select;
my $timeout = 5;
my $res = Net::DNS::Resolver->new;
my $bgsock = $res->bgsend("host.example.com");
my $sel = IO::Select->new($bgsock);
# Add more sockets to $sel if desired.
my @ready = $sel->can_read($timeout);
if (@ready) {
foreach my $sock (@ready) {
if ($sock == $bgsock) {
my $packet = $res->bgread($bgsock);
$packet->print;
$bgsock = undef;
}
# Check for the other sockets.
$sel->remove($sock);
$sock = undef;
}
} else {
warn "timed out after $timeout seconds\n";
}
163root▲ ★
04/12/25 05:13:46ID:??? もう、わたし限界っす。
Net::DNS使う方針なら、たぶんかなりエレガントに書けるですね。
あとはマニュアル・ドキュメントを読んでいただけると、うれしいっす。
というか、こういうモジュールを柔軟に使えるのも、PIEに移ったおかげかもですね。
Net::DNS使う方針なら、たぶんかなりエレガントに書けるですね。
あとはマニュアル・ドキュメントを読んでいただけると、うれしいっす。
というか、こういうモジュールを柔軟に使えるのも、PIEに移ったおかげかもですね。
164FOX ★
04/12/25 05:14:28ID:??? tcp_timeout
print 'TCP timeout: ', $res->tcp_timeout, "\n";
$res->tcp_timeout(10);
Get or set the TCP timeout in seconds. A timeout of undef means indefinite. The default is 120 seconds (2 minutes).
udp_timeout
print 'TCP timeout: ', $res->tcp_timeout, "\n";
$res->tcp_timeout(10);
Get or set the TCP timeout in seconds. A timeout of undef means indefinite. The default is 120 seconds (2 minutes).
udp_timeout
166FOX ★
04/12/25 05:15:29ID:???167root▲ ★
04/12/25 05:16:15ID:???168root▲ ★
04/12/25 05:18:47ID:??? >>166
はい、了解です。
でもなんか、糸口がつかめそうな予感。
banana238ですが、
live8 に激しく来た時もバッファ溢れしなかったし、
思い切ってバッファでかくしたのは、効果あったかも。
なにせCPUもディスクも遊んでいるから、もうちょっとあがいてみたいなと。
はい、了解です。
でもなんか、糸口がつかめそうな予感。
banana238ですが、
live8 に激しく来た時もバッファ溢れしなかったし、
思い切ってバッファでかくしたのは、効果あったかも。
なにせCPUもディスクも遊んでいるから、もうちょっとあがいてみたいなと。
169FOX ★
04/12/25 05:29:45ID:??? ccc
170FOX ★
04/12/25 05:38:03ID:??? その1
これでうまく行った
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
my $ans = $res->query($BHOST);
tcp/udp の timeout をそれぞれ 1(sec) にした。
0だとどうかなと思ってやってみたら、だめだった。
もっと短くする方法は無いものか
これでうまく行った
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
my $ans = $res->query($BHOST);
tcp/udp の timeout をそれぞれ 1(sec) にした。
0だとどうかなと思ってやってみたら、だめだった。
もっと短くする方法は無いものか
171FOX ★
04/12/25 05:52:16ID:???172FOX ★
04/12/25 05:52:49ID:??? 専用のサブルーチンを作った
sub foxDNSquery
{
my ($host) = @_;
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $ans = $res->query($host);
#we don't need answer.
}
sub foxDNSquery
{
my ($host) = @_;
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $ans = $res->query($host);
#we don't need answer.
}
173FOX ★
04/12/25 05:53:26ID:??? 新スレ立ったとき
my $AHOST = "$GB->{NEWTHREAD}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bby.2ch.net.";
&foxDNSquery($AHOST);
my $AHOST = "$GB->{NEWTHREAD}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bby.2ch.net.";
&foxDNSquery($AHOST);
174FOX ★
04/12/25 05:53:56ID:??? 全ての投稿(成功時)
my $BYTES = length($GB->{FORM}->{'MESSAGE'});
#my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.timeout.peko.2ch.net.";
my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.bbs.2ch.net.";
&foxDNSquery($BHOST);
my $BYTES = length($GB->{FORM}->{'MESSAGE'});
#my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.timeout.peko.2ch.net.";
my $BHOST = "$GB->{NOWTIME}.$$.$ENV{'REMOTE_ADDR'}.$GB->{NEWTHREAD}.$BYTES.$GB->{FORM}->{'key'}.$GB->{FORM}->{'bbs'}.$ENV{'SERVER_NAME'}.bbs.bbs.2ch.net.";
&foxDNSquery($BHOST);
175FOX ★
04/12/25 05:58:35ID:??? ここまでを全サーバに配布ー
176FOX ★
04/12/25 06:00:13ID:??? 配布完了。
とくに苦情が無ければ BBS , BBY を落として
ちゃんとタイムアウトするかの実験が可能でーす > root ★さん
とくに苦情が無ければ BBS , BBY を落として
ちゃんとタイムアウトするかの実験が可能でーす > root ★さん
177root▲ ★
04/12/25 06:00:16ID:??? おふろ入ったら、ちょっと目がさめちゃった。
でももうねるる。
>>170
$res->bgsend って、どうなんだろう。
http://www.net-dns.org/docs/Net/DNS/Resolver.html
でももうねるる。
>>170
$res->bgsend って、どうなんだろう。
http://www.net-dns.org/docs/Net/DNS/Resolver.html
178root▲ ★
04/12/25 06:00:46ID:??? うわ、すごいー。
今、1秒バージョンですか。
今、1秒バージョンですか。
179FOX ★
04/12/25 06:00:59ID:??? どなんですかね、
ぼちぼち研究してみるです
ぼちぼち研究してみるです
180root▲ ★
04/12/25 06:01:44ID:??? まずは、DNS queryがちゃんと出てるか、サーバのほうを見てきます(w。
181root▲ ★
04/12/25 06:05:21ID:??? BBS/BBYにはquery来ている模様です。
BBQとBBMはまだ元の状態ですか。
BBQとBBMはまだ元の状態ですか。
182root▲ ★
04/12/25 06:07:42ID:??? んじゃ、BBSを落としてみるかな。
これ書いたら、BBS止めます。
これ書いたら、BBS止めます。
183root▲ ★
04/12/25 06:08:07ID:??? 今、止まっています。
184root▲ ★
04/12/25 06:08:18ID:??? おぉ、いいかんじ。
185root▲ ★
04/12/25 06:08:54ID:??? 6:10 まで止めておいてみよう。
187root▲ ★
04/12/25 06:10:53ID:???188root▲ ★
04/12/25 06:11:08ID:??? んじゃ、BBS戻します。
189FOX ★
04/12/25 06:11:30ID:??? 一回タイムアウト検出したら
その船からは二度と聞きに行かないという実装もありかもかも
その船からは二度と聞きに行かないという実装もありかもかも
190root▲ ★
04/12/25 06:11:51ID:??? 戻しました。また、ひとつ進歩したですね。
191FOX ★
04/12/25 06:12:08ID:??? ですね、
192root▲ ★
04/12/25 06:12:44ID:???193FOX ★
04/12/25 06:12:58ID:??? #we don't need any answer.
だったっすね、
だったっすね、
196root▲ ★
04/12/25 06:27:26ID:??? #! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('2ch.net');
@answer = $ans->answer;
print "address = ", $answer[0]->address, "\n";
BBQやBBMは、このパターンでOKかと。
というか、Perlぜんぜんわかんないんで、超みようみまね。
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('2ch.net');
@answer = $ans->answer;
print "address = ", $answer[0]->address, "\n";
BBQやBBMは、このパターンでOKかと。
というか、Perlぜんぜんわかんないんで、超みようみまね。
197root▲ ★
04/12/25 06:30:08ID:??? で、undefだったらBBQやBBMにはひっかかってなくて、
127.0.0.1だったらひっかかってる、って判定すればいいはず。
127.0.0.1だったらひっかかってる、って判定すればいいはず。
198root▲ ★
04/12/25 06:33:00ID:??? 127.0.0.2 だった。
199FOX ★
04/12/25 06:33:20ID:??? はいはーい
明日以降挑戦してみるです、
それにしてもPerlの達人が居ればねぇ
明日以降挑戦してみるです、
それにしてもPerlの達人が居ればねぇ
200root▲ ★
04/12/25 06:39:53ID:??? たしかに、、、。
で、DNSのことは少しは知っているので、ちょっとやってみた。
なるほど、数はこうやってとればいいのね。
(c.2ch.netはアドレス2つ)
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('c.2ch.net');
@answer = $ans->answer;
print "count = ", $ans->header->ancount, "\n";
print "address = ", $answer[0]->address, "\n";
print "address = ", $answer[1]->address, "\n";
で、DNSのことは少しは知っているので、ちょっとやってみた。
なるほど、数はこうやってとればいいのね。
(c.2ch.netはアドレス2つ)
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->query('c.2ch.net');
@answer = $ans->answer;
print "count = ", $ans->header->ancount, "\n";
print "address = ", $answer[0]->address, "\n";
print "address = ", $answer[1]->address, "\n";
201root▲ ★
04/12/25 06:42:59ID:??? ということで、
undefになった場合 または undefじゃなくても、ans->header->ancountが0の場合
は、BBQ/BBMにひっかかってないとみなし、
ans->header->ancountが1以上で、配列の中身が127.0.0.2なら
BBQ/BBMにひっかかっているとみなせばいいのか。
ここまでわかれば、あとはFOXさんならすぐできるんじゃないかなと思います。
んでは、あとは明日にでも。
undefになった場合 または undefじゃなくても、ans->header->ancountが0の場合
は、BBQ/BBMにひっかかってないとみなし、
ans->header->ancountが1以上で、配列の中身が127.0.0.2なら
BBQ/BBMにひっかかっているとみなせばいいのか。
ここまでわかれば、あとはFOXさんならすぐできるんじゃないかなと思います。
んでは、あとは明日にでも。
202未承諾広告※ ◆TWARamEjuA
04/12/25 09:14:43ID:zOyY3ofo すごく乗り遅れ?(泪)
では風呂入りますm(_ _)m
では風呂入りますm(_ _)m
現在こんな感じ
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
my $adr = "ANS =";
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
}
else
{
return "127.0.0.0";
}
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
my $adr = "ANS =";
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
}
else
{
return "127.0.0.0";
}
my $query = $res->query($host);
の答えは Net::DNS::Packet でその中のanserが配列になっている模様。
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
これは一個しかないという決めうちでコード書いたらまずい?
複数個あるならどれを見ればいいの?
の答えは Net::DNS::Packet でその中のanserが配列になっている模様。
my @ans = $query->answer;
foreach(@ans)
{
$adr .= $_->address;
}
これは一個しかないという決めうちでコード書いたらまずい?
複数個あるならどれを見ればいいの?
205root▲ ★
04/12/25 18:54:57ID:??? よさげな気がするです。
で、127.0.0.2なら焼かれてて、127.0.0.0なら焼かれてないってかんじですか。
で、127.0.0.2なら焼かれてて、127.0.0.0なら焼かれてないってかんじですか。
206root▲ ★
04/12/25 18:55:59ID:???212root▲ ★
04/12/25 19:09:57ID:??? BBXも1個しかAないので、同じ仕様でいいはずです。
で、みゃんまーでやればいいのかしら。
まず、
・正しく効くか
・配布してみてから→落としてみて、ブロックしないか
でいいのかな。
で、みゃんまーでやればいいのかしら。
まず、
・正しく効くか
・配布してみてから→落としてみて、ブロックしないか
でいいのかな。
215root▲ ★
04/12/25 19:23:31ID:??? BBXはちゃんと動いてるですね。< みゃんまー
BBMは、どうすべ。
BBMは、どうすべ。
今日の深夜
全サーバにこのbbs.cgiを配布してみよう、
そして BBQ/BBM/BBX 止めてテスト
今後は、さらにタイムアウトを縮めることへの挑戦か?
現在は
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
で、たぶん一秒は待つ予感。
どうやったら縮められるの?
全サーバにこのbbs.cgiを配布してみよう、
そして BBQ/BBM/BBX 止めてテスト
今後は、さらにタイムアウトを縮めることへの挑戦か?
現在は
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
で、たぶん一秒は待つ予感。
どうやったら縮められるの?
217未承諾広告※ ◆TWARamEjuA
04/12/26 00:22:38ID:cz8VUXP+ 回り回ってselect(2)を呼んでいるみたいなので小数が使えないのかな?@timoutの値
モジュールを追っていくと、、、
Net::DNS
↓
IO::Socket
↓
IO::Select
↓
select(2)
ですので・・・
モジュールを追っていくと、、、
Net::DNS
↓
IO::Socket
↓
IO::Select
↓
select(2)
ですので・・・
218FOX ★
04/12/26 00:40:58ID:??? BBM/BBQ/BBX/BBY/BBS ともに一回タイムアウトしたら
そのプロセスが常駐している間(最大10分)は、DNSクエリ処理をスキップするようにした。
そのプロセスが常駐している間(最大10分)は、DNSクエリ処理をスキップするようにした。
220FOX ★
04/12/26 01:23:58ID:??? BBS/BBY って何が帰ってくるのかしら?
無条件に 127.0.0.2 ?
無条件に 127.0.0.2 ?
222FOX ★
04/12/26 01:50:57ID:??? うっ
なるほど
my $query = $res->query($host);
if($query)
でタイムアウトと区別するにはどうしたらいいのかしら?
なるほど
my $query = $res->query($host);
if($query)
でタイムアウトと区別するにはどうしたらいいのかしら?
223FOX ★
04/12/26 02:03:05ID:??? BBS は my $query = $res->query($host);
したとき
1) タイムアウト時
2) 正常終了時
ともに $query が無いようです。
んで区別がつかないのだ。
したとき
1) タイムアウト時
2) 正常終了時
ともに $query が無いようです。
んで区別がつかないのだ。
225FOX ★
04/12/26 03:10:06ID:??? $query がないから
$query->answer; が見れない予感
$query->answer; が見れない予感
226root▲ ★
04/12/26 03:12:06ID:??? なるほど。
なら、エラーコードみりゃいいはず。
なら、エラーコードみりゃいいはず。
227FOX ★
04/12/26 03:15:56ID:??? おっ
$res->errorstring に qyery timed out または MXDOMAIN だかが入っている
$res->errorstring に qyery timed out または MXDOMAIN だかが入っている
228FOX ★
04/12/26 03:17:02ID:??? NXDOMAIN だった
229root▲ ★
04/12/26 03:20:02ID:??? res_queryはだめだけど、res_sendつかえばOKですね。
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->send('2ch.net');
print "rcode = ", $ans->header->rcode, "\n";
my $ans = $res->send('notexist.2ch.net');
print "rcode = ", $ans->header->rcode, "\n";
#! /usr/bin/perl
use Net::DNS;
my $res = Net::DNS::Resolver->new;
my $ans = $res->send('2ch.net');
print "rcode = ", $ans->header->rcode, "\n";
my $ans = $res->send('notexist.2ch.net');
print "rcode = ", $ans->header->rcode, "\n";
231FOX ★
04/12/26 03:21:56ID:??? 改修
sub foxDNSquery
{
my ($host) = @_;
$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($res->errorstring eq 'query timed out') {return 0;}
return 1;
}
sub foxDNSquery
{
my ($host) = @_;
$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($res->errorstring eq 'query timed out') {return 0;}
return 1;
}
232FOX ★
04/12/26 03:22:32ID:??? 呼び出し側
if($FOX->{BBS}){$FOX->{BBS} = &foxDNSquery($BHOST);}
if($FOX->{BBS}){$FOX->{BBS} = &foxDNSquery($BHOST);}
233FOX ★
04/12/26 03:23:49ID:??? んじゃ ex7でちとテスト
235FOX ★
04/12/26 03:24:48ID:??? そでーす
236FOX ★
04/12/26 03:25:08ID:??? $FOX->{BBS} の初期値は 1 で
237FOX ★
04/12/26 03:32:46ID:???238root▲ ★
04/12/26 03:37:22ID:???239root▲ ★
04/12/26 03:38:28ID:??? 例の「不存在」と「タイムアウト」問題っすね。
不存在はBBQ的には「登録なし」ってやつなんで。
不存在はBBQ的には「登録なし」ってやつなんで。
240FOX ★
04/12/26 03:38:47ID:??? ぬおっ
BBQ は何返すんですか?
BBQ は何返すんですか?
241root▲ ★
04/12/26 03:38:58ID:??? たぶん、BBMも同じかと。
242root▲ ★
04/12/26 03:40:07ID:??? 127.0.0.2 登録あり(焼かれてる)
NXDOMAIN 登録なし(焼かれてない)
タイムアウト
の3つですね。BBM/BBXも同じ。
NXDOMAIN 登録なし(焼かれてない)
タイムアウト
の3つですね。BBM/BBXも同じ。
243FOX ★
04/12/26 03:41:46ID:??? 改修
sub foxDNSquery2
{
my ($host) = @_;
#$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
return $_->address;
}
}
if($res->errorstring eq 'query timed out') {return "127.0.0.0";}
return "127.0.0.1";
}
sub foxDNSquery2
{
my ($host) = @_;
#$host .= "bbs.timeout.peko.2ch.net.";
use Net::DNS;
my $res = Net::DNS::Resolver->new;
$res->tcp_timeout(1);
$res->udp_timeout(1);
$res->retry(1);
my $query = $res->query($host);
if($query)
{
my @ans = $query->answer;
foreach(@ans)
{
return $_->address;
}
}
if($res->errorstring eq 'query timed out') {return "127.0.0.0";}
return "127.0.0.1";
}
244FOX ★
04/12/26 03:42:47ID:??? if($SPAM eq "127.0.0.0"){$FOX->{BBQ} = 0;}
こんなコード呼び出し側に入っています
こんなコード呼び出し側に入っています
245root▲ ★
04/12/26 03:47:15ID:???246FOX ★
04/12/26 03:48:32ID:??? そーですー
呼び出し側では
127.0.0.2
127.0.0.0
だけしか見ていません
呼び出し側では
127.0.0.2
127.0.0.0
だけしか見ていません
247root▲ ★
04/12/26 03:51:25ID:??? >>246
127.0.0.2 => BB{Q,X,M} 登録済み
127.0.0.0 => 各DNSに異常発生
というかんじですか。
で、BB{Q,X,M}はそれぞれ別のDNSサーバなので、bbs.cgi側では、
例えばBBQの異常を検知したら、BBQ*だけ*10分停止、
というのがよさげです。
127.0.0.2 => BB{Q,X,M} 登録済み
127.0.0.0 => 各DNSに異常発生
というかんじですか。
で、BB{Q,X,M}はそれぞれ別のDNSサーバなので、bbs.cgi側では、
例えばBBQの異常を検知したら、BBQ*だけ*10分停止、
というのがよさげです。
248FOX ★
04/12/26 03:52:46ID:??? そのようになっています。
$FOX->{BBM} = 1;
$FOX->{BBQ} = 1;
$FOX->{BBX} = 1;
$FOX->{BBY} = 1;
$FOX->{BBS} = 1;
$FOX->{BBM} = 1;
$FOX->{BBQ} = 1;
$FOX->{BBX} = 1;
$FOX->{BBY} = 1;
$FOX->{BBS} = 1;
249root▲ ★
04/12/26 03:55:10ID:??? 了解です。
最悪はdnscacheがあぼーんすることですが、
そのときは、、、gethostbyaddr() が詰まっちゃうのか。
最悪はdnscacheがあぼーんすることですが、
そのときは、、、gethostbyaddr() が詰まっちゃうのか。
252FOX ★
04/12/26 03:56:53ID:??? というか、そこは実装しないで
dnscacheをことん強化が本筋かと、
dnscacheをことん強化が本筋かと、
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【経済】日本のテレビ市場で中国メーカー台頭、既にシェア約5割…識者「安さだけでなく、画面技術や各種サービス対応で優位に」 [デビルゾア★]
- 道路陥没事故、原因は“技術者をないがしろにしたツケ”か 日本に必要な政策は「工業高校の設備科を増やすこと」 ★4 [お断り★]
- 【芸能】『統合失調症』公表のハウス加賀谷 参加費3000円納得できず前日にイベント参加キャンセル 「無料で行われると思っていた」 [冬月記者★]
- 石破首相「対米投資1兆ドル」 トランプ氏「日本守る」 ★3 [蚤の市★]
- 今田耕司、アップルウォッチが「一番便利」「買い物できる、電車乗れる…」高級時計は「時間しか見られへん。何百万払うても」 [muffin★]
- 【サッカー】佐野海舟が「いい人すぎる」 能登半島地震に100万円寄付「復興が進んでいないと…」 [冬月記者★]