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
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をことん強化が本筋かと、
253FOX ★
04/12/26 03:58:54ID:??? ∩
( ゚∀゚)彡 じっけん!じっけん!
⊂彡
( ゚∀゚)彡 じっけん!じっけん!
⊂彡
254root▲ ★
04/12/26 03:59:12ID:???256FOX ★
04/12/26 04:01:26ID:??? dnscache が timeout だったら書けないという仕様にするです bbs.cgi
qb5&★ だけ書ける様にして
qb5&★ だけ書ける様にして
258root▲ ★
04/12/26 04:05:18ID:??? BBQを止める実験、やってみますか。
で、うまくいくなら、続いてBBSを止める実験。
BBYはスレ立てしないといけないので、みゃんまーで。
BBMは携帯で書かないとだめだから、FOXさんに携帯で書いてもらおう。
(私H"とPALDIOしか持ってないです)
BBXは例によって、禁止フレーズをみゃんまーで。
では、順番にいきます。
で、うまくいくなら、続いてBBSを止める実験。
BBYはスレ立てしないといけないので、みゃんまーで。
BBMは携帯で書かないとだめだから、FOXさんに携帯で書いてもらおう。
(私H"とPALDIOしか持ってないです)
BBXは例によって、禁止フレーズをみゃんまーで。
では、順番にいきます。
259root▲ ★
04/12/26 04:07:26ID:??? BBQ止めました。
260root▲ ★
04/12/26 04:07:48ID:??? お、いいかんじ。
261root▲ ★
04/12/26 04:08:51ID:??? BBQ動かして、BBS止めました。
262root▲ ★
04/12/26 04:09:47ID:??? いいかんじ。
これからBBS動かして、BBY止めます。
これからBBS動かして、BBY止めます。
263root▲ ★
04/12/26 04:11:21ID:??? BBY止めました。みゃんまーに行ってきます。
264FOX ★
04/12/26 04:11:39ID:???265root▲ ★
04/12/26 04:13:47ID:??? できました。
BBYを止めてもスレ立てできるのかテスト
http://dso.2ch.net/test/read.cgi/myanmar/1104001957/
これからBBY動かして、BBXとめます。
BBYを止めてもスレ立てできるのかテスト
http://dso.2ch.net/test/read.cgi/myanmar/1104001957/
これからBBY動かして、BBXとめます。
266root▲ ★
04/12/26 04:19:23ID:??? BBX止めました。
禁止フレーズは、、、。
禁止フレーズは、、、。
267root▲ ★
04/12/26 04:28:40ID:??? いいNGワード、何かありますかね。
269root▲ ★
04/12/26 04:30:52ID:??? でもまだBBM止めてないのに、BBMが止まってるってたまに出るなぁ。
270root▲ ★
04/12/26 04:33:59ID:??? BBX確認できました。元に戻します。
271FOX ★
04/12/26 04:34:52ID:??? ほんとに timeout 検出しているとか、、、
272root▲ ★
04/12/26 04:35:45ID:??? うへー。例のバッファフルがいっぱい。
BBSと同じ対策打ってきます。< BBM
%netstat -s -p udp
udp:
15773031 datagrams received
0 with incomplete header
0 with bad data length field
0 with bad checksum
1 with no checksum
50 dropped due to no socket
2 broadcast/multicast datagrams dropped due to no socket
126085 dropped due to full socket buffers
0 not for hashed pcb
15646894 delivered
15647283 datagrams output
BBSと同じ対策打ってきます。< BBM
%netstat -s -p udp
udp:
15773031 datagrams received
0 with incomplete header
0 with bad data length field
0 with bad checksum
1 with no checksum
50 dropped due to no socket
2 broadcast/multicast datagrams dropped due to no socket
126085 dropped due to full socket buffers
0 not for hashed pcb
15646894 delivered
15647283 datagrams output
273root▲ ★
04/12/26 04:38:43ID:??? 対策打ちました(対策後は今日のラッシュ時もBBSのバッファフルなし)。
あとはBBMか。これからとめます。とめたらおしらせします。
あとはBBMか。これからとめます。とめたらおしらせします。
274root▲ ★
04/12/26 04:39:41ID:??? BBMとめました。
携帯からどなたかカキコしていただけると。
携帯からどなたかカキコしていただけると。
275FOX ★
04/12/26 04:44:10ID:??? よさげ
276root▲ ★
04/12/26 04:45:58ID:??? dnscacheのログみた。BBMにはqueryはそれなりに出てるみたい。
ブロックしてないかの確認ができれば、OKですが、、、。
ブロックしてないかの確認ができれば、OKですが、、、。
278root▲ ★
04/12/26 04:48:46ID:??? morningcoffeeの板トップ見てると、たまに止まってないのに「止まっています」って出ることがあるですね。
1秒だと、短すぎ?
それともたまにリトライしてる?
でもブロックはしたくないから、もろはの刃なのかな。
1秒だと、短すぎ?
それともたまにリトライしてる?
でもブロックはしたくないから、もろはの刃なのかな。
279root▲ ★
04/12/26 04:49:11ID:??? で、BBM元に戻しました。
全部元に戻ったはず。
全部元に戻ったはず。
282root▲ ★
04/12/26 04:54:20ID:??? ex7のspeedy_backendをいったん全部killした。
そしたら、BBMが止まっています、は消えたです。
そしたら、BBMが止まっています、は消えたです。
283root▲ ★
04/12/26 04:55:33ID:??? これで、BB?系のDNS側の実験は終了しました。
また一歩、進歩したですね。すばらしいっす。
また一歩、進歩したですね。すばらしいっす。
284FOX ★
04/12/26 04:56:03ID:??? #!/usr/local/bin/speedy -- -M32 -b1048576
に -t600 っていれたら 10分?
#!/usr/local/bin/speedy -- -M32 -b1048576 -t600
に -t600 っていれたら 10分?
#!/usr/local/bin/speedy -- -M32 -b1048576 -t600
286FOX ★
04/12/26 05:00:06ID:??? また今度実験してミルです < -t option の効果&弊害
287root▲ ★
04/12/26 05:00:07ID:??? デフォルトでは500回リクエストを受け取ると、自爆します。
(-r500)
-tは3600がデフォルトですね。
つまり、
・500回人を乗せた
・1時間誰も乗らなかった
場合に、自爆すると。
(-r500)
-tは3600がデフォルトですね。
つまり、
・500回人を乗せた
・1時間誰も乗らなかった
場合に、自爆すると。
288root▲ ★
04/12/26 05:09:37ID:??? もう知っているかもですが、Perl内から自爆命令を出すこともできます。
・shutdown_now
perlインタープリタを即座にシャットダウンします。この関数は戻ってきません。
$sp->shutdown_now
・shutdown_next_time
perlインタープリタを、このリクエストが終了したらすぐにシャットダウンします。
$sp->shutdown_next_time
・shutdown_now
perlインタープリタを即座にシャットダウンします。この関数は戻ってきません。
$sp->shutdown_now
・shutdown_next_time
perlインタープリタを、このリクエストが終了したらすぐにシャットダウンします。
$sp->shutdown_next_time
289FOX ★
04/12/26 06:03:14ID:??? 10分で組み込んであります
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 『フジの社員は“文春ひどい”と騒いでいる』 フジテレビの窮地に「菅田将暉もドラマ出演を断った」「CMが全く売れていない」 [冬月記者★]
- 【クルマ】「軽自動車しか買えない」年収400万円時代の高すぎる自動車価格★4 [七波羅探題★]
- 日銀総裁、食料品値上がりを懸念 衆院委員会で「一時的でない」 ★3 [蚤の市★]
- 妻の暴言「お前はATMだ」 男性のDV被害相談が最多 男女平等意識高まりで顕在化 [ぐれ★]
- あぼーん
- 【女子サッカー】19歳谷川萌々子がバイエルンで初ゴール!スーパーミドルに加え、圧巻のドリブル突破からアシスト [久太郎★]
- 【飛行機】国内線初めて乗るんだけど半年前から座席予約するって変?普通どのくらい前からチケット買うの? [149414661]
- 統一教会雑誌 ハナダにデヴィ夫人登場(画像あり)
- 【岸田悲報】報道記者「USAIDで騒いでる連中は陰謀論者を煮詰めた残りカスの地獄、まともな知能を持っている大人は近付いてはいけない」 [357222248]
- メルチュに強制捜査 折田楓さんは取り調べに「落ちた」模様 [462175752]
- この国は終わってるよ…〈年金月10万円〉〈時給1,280円〉週5のバイトで食いつなぐ79歳男性 [481941988]
- 🏡