peko鯖の稼動によりボトルネックの一つである事がより明らかになった
bbs.cgi作り直しプロジェクトです。
【開発環境の工事現場】
また挑戦。@2ch掲示板 http://dso.2ch.net/myanmar/
また挑戦2。@2ch掲示板 http://dso.2ch.net/yangon/
関連スレなどは >>2-5 くらい
探検
bbs.cgi再開発プロジェクト6
■ このスレッドは過去ログ倉庫に格納されています
2005/04/10(日) 16:15:47ID:a6rtBqIi0
486476
2005/06/09(木) 20:08:30ID:NnR04xax0 >>485
それだとエラーが出ますね。例えば、
"ワ[a]"
だと「ワ」は2バイト目も8bitが立っているので検索がスキップされますよね。
で、2バイト目と3バイト目の組み合わせをShift_JISの「充」と間違えて開き角括弧
「 [ 」をエスケープしてしまいます。
それだとエラーが出ますね。例えば、
"ワ[a]"
だと「ワ」は2バイト目も8bitが立っているので検索がスキップされますよね。
で、2バイト目と3バイト目の組み合わせをShift_JISの「充」と間違えて開き角括弧
「 [ 」をエスケープしてしまいます。
2005/06/09(木) 20:50:47ID:b8qRY6Z90
>>486
おお、そうだ。
おお、そうだ。
2005/06/09(木) 23:45:12ID:b8qRY6Z90
もしかしてこうすればいいのか?(未テスト)
s/([\x81-\x9F\xE0-\xFC])([\[\\\]\^\{\|\}\x81-\x9F\xE0-\xFC])/$1\\$2/g
s/([\x81-\x9F\xE0-\xFC])([\[\\\]\^\{\|\}\x81-\x9F\xE0-\xFC])/$1\\$2/g
489476
2005/06/10(金) 00:51:10ID:C8+6ZCy40 >>488
30秒考えた限りでは問題なさそう。ただ、ベンチ取った結果、quotemetaとほとんど
コスト同じなんだよね。2、3回やってみたけど誤差前後1秒以内。
with_reg1: 146 wallclock secs (144.33 usr + 0.05 sys = 144.38 CPU) @ 6.93/s (n=1000)
with_reg2: 145 wallclock secs (144.18 usr + 0.05 sys = 144.23 CPU) @ 6.93/s (n=1000)
となるとquotemetaの方が安全かなとは思う(自分贔屓ですんません)。
30秒考えた限りでは問題なさそう。ただ、ベンチ取った結果、quotemetaとほとんど
コスト同じなんだよね。2、3回やってみたけど誤差前後1秒以内。
with_reg1: 146 wallclock secs (144.33 usr + 0.05 sys = 144.38 CPU) @ 6.93/s (n=1000)
with_reg2: 145 wallclock secs (144.18 usr + 0.05 sys = 144.23 CPU) @ 6.93/s (n=1000)
となるとquotemetaの方が安全かなとは思う(自分贔屓ですんません)。
2005/06/10(金) 01:11:38ID:Mm/OM+6u0
491タソキ@妄想系統 1/10 ☆ ◆Ver7J.....
2005/06/10(金) 08:39:08ID:klkomdbB0 >>483ナイスゥ
中の人が呑み屋さんに繰り出しちゃわないようにまとめてみます。
Shift_JIS の場合、エスケープする必要あり。
エスケープしておくと、リストの編集がはげしくめんどい。
解決方法
1、encodingプラグマでエンコードする
2、Shift_JIS文字列だけquotemetaする (エンコードよりはコストが安いはず)
後者のほうが処理コストが安い。
中の人が呑み屋さんに繰り出しちゃわないようにまとめてみます。
Shift_JIS の場合、エスケープする必要あり。
エスケープしておくと、リストの編集がはげしくめんどい。
解決方法
1、encodingプラグマでエンコードする
2、Shift_JIS文字列だけquotemetaする (エンコードよりはコストが安いはず)
後者のほうが処理コストが安い。
492476
2005/06/10(金) 11:20:46ID:C8+6ZCy40 >>484
ご愁傷さまです。早い復活を祈ってます。
>>480
あと若干ソースを変更。空文字チェックは直前の方がより安全ってのと、evalの結果の代入は
必要ないかと。
foreach my $NG_word_ref (@FOX_Ro54){
my $NG_word = $NG_word_ref->[0]; # エスケープしたままじゃ他で使えないのでコピー
$NG_word =~ s/((?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])+)/quotemeta($1)/geo;
next unless $NG_word; # 空文字列ならスキップ
eval{$main::In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。
# 不正 NG ワードがあったり引っかからなければスキップ
}
ご愁傷さまです。早い復活を祈ってます。
>>480
あと若干ソースを変更。空文字チェックは直前の方がより安全ってのと、evalの結果の代入は
必要ないかと。
foreach my $NG_word_ref (@FOX_Ro54){
my $NG_word = $NG_word_ref->[0]; # エスケープしたままじゃ他で使えないのでコピー
$NG_word =~ s/((?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])+)/quotemeta($1)/geo;
next unless $NG_word; # 空文字列ならスキップ
eval{$main::In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。
# 不正 NG ワードがあったり引っかからなければスキップ
}
493476
2005/06/10(金) 11:23:23ID:C8+6ZCy40 × eval{$main::In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。
○ eval{$In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。
失礼。
○ eval{$In_Strings =~ /$NG_word/} and return $NG_word_ref; # 合致したらリファレンスを返す。
失礼。
496476
2005/06/11(土) 01:23:50ID:VA/kMcZN0 >>494
お疲れ様です。とりあえず、
next unless $NG_word; # 空文字列ならスキップ
これはevalの直前に入れた方がいいと思うです。evalと同じくfail safeってことで。
極端な話、use strictしてないんだったら、quotemetaをtypoしただけで
NG_wordが全部空文字列(投稿が全部エラー)になるわけで。
お疲れ様です。とりあえず、
next unless $NG_word; # 空文字列ならスキップ
これはevalの直前に入れた方がいいと思うです。evalと同じくfail safeってことで。
極端な話、use strictしてないんだったら、quotemetaをtypoしただけで
NG_wordが全部空文字列(投稿が全部エラー)になるわけで。
s/([\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])(?<!\\[^$\$\(\)\*\+\-\.\?\[\|\]\^\{\|\}])/quotemeta $1/ego;
が、今のところいー感じです♪
が、今のところいー感じです♪
klistに不具合がでていたその要因がわかりました。
IsKoukouの中にある、、、
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { return $NG_word_ref } # 合致したらリファレンスを返す。
を、、、
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { $NG_word_ref->[0] = $&; return $NG_word_ref; } # 合致したらNGワード部分の摘出とリファレンスを返す。
のように$&を返すようにしていただけるとありがたいですm(_ _)m
IsKoukouの中にある、、、
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { return $NG_word_ref } # 合致したらリファレンスを返す。
を、、、
if (my $matched = eval{$In_Strings =~ m<$NG_word>}) { $NG_word_ref->[0] = $&; return $NG_word_ref; } # 合致したらNGワード部分の摘出とリファレンスを返す。
のように$&を返すようにしていただけるとありがたいですm(_ _)m
2005/06/12(日) 17:28:29ID:/I3kxr/A0
【Project peko】2ch特化型サーバ・ロケーション構築作戦 Part18
http://qb5.2ch.net/test/read.cgi/operate/1115133136/741 より
741 名前:root▲ ★[sage] 投稿日:2005/06/12(日) 17:17:42 ID:???0 BE:3831067-##
bbs.cgi 暴走対策として、RLimitCPU を 10 から 5 に変更。
どうも、スレ立てに暴走へと繋がる爆弾がひそんでいるような気がするですね。
だそうですが。
http://qb5.2ch.net/test/read.cgi/operate/1115133136/741 より
741 名前:root▲ ★[sage] 投稿日:2005/06/12(日) 17:17:42 ID:???0 BE:3831067-##
bbs.cgi 暴走対策として、RLimitCPU を 10 から 5 に変更。
どうも、スレ立てに暴走へと繋がる爆弾がひそんでいるような気がするですね。
だそうですが。
503▲ ◆cZfSunOs.U
2005/06/12(日) 18:07:45ID:uT21qpVz0 今は subject.txt や index.html の更新時にロックしてないらしいので,
競合した時に意図せぬ動作につながっている,とかも考えられなくもないですね.
subject.txt のレス数について,単純にインクリメントするだけだとずれてくので
dat 中のレス数を毎回数え直さないといけないってのも,ロックしてない故の
競合によって起きてるような気もします.
で,対策ですが,まず考えられるのはきちんとロックするということですね.
それ以外の方法としては,message queue を利用して,bbs.cgi からは
subject.txt 等の更新要求を mq に放り込んで,別途走らせておく
更新用デーモンが mq から要求を取り出して処理する,って感じでしょうか.
mq を利用する方法なら,ロックしなくても処理がシリアライズされますし,
その更新用デーモンを C で書いて subject の並べ替えを例えば mmap() して
memmove() するような処理にすれば,今の Perl の処理よりも軽くできると思います.
競合した時に意図せぬ動作につながっている,とかも考えられなくもないですね.
subject.txt のレス数について,単純にインクリメントするだけだとずれてくので
dat 中のレス数を毎回数え直さないといけないってのも,ロックしてない故の
競合によって起きてるような気もします.
で,対策ですが,まず考えられるのはきちんとロックするということですね.
それ以外の方法としては,message queue を利用して,bbs.cgi からは
subject.txt 等の更新要求を mq に放り込んで,別途走らせておく
更新用デーモンが mq から要求を取り出して処理する,って感じでしょうか.
mq を利用する方法なら,ロックしなくても処理がシリアライズされますし,
その更新用デーモンを C で書いて subject の並べ替えを例えば mmap() して
memmove() するような処理にすれば,今の Perl の処理よりも軽くできると思います.
506root▲ ★
NGNG むこうで聞いてみるか。
507root▲ ★
NGNG さて、どうも配布用DBがこわれてるっぽいと。
で、配布用DBを作っているやつがおかしくなったらしいと。
質問・雑談スレ174@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1118562549/625-646
で、配布用DBを作っているやつがおかしくなったらしいと。
質問・雑談スレ174@運用情報板
http://qb5.2ch.net/test/read.cgi/operate/1118562549/625-646
508root▲ ★
NGNG ということで、この問題は後で別途ということに。
>>501
if (my $matched = eval{$In_Strings =~ m<$NG_word> ? return $& : return undef}) {
$NG_word_ref->[0] = $matched; return $NG_word_ref
} # 合致したらNGワード部分の摘出とリファレンスを返す。
もしかするとこうかもしれませんですm(_ _)m深謝
if (my $matched = eval{$In_Strings =~ m<$NG_word> ? return $& : return undef}) {
$NG_word_ref->[0] = $matched; return $NG_word_ref
} # 合致したらNGワード部分の摘出とリファレンスを返す。
もしかするとこうかもしれませんですm(_ _)m深謝
>>509
訂正前に送信しちゃってごめんなさいです。
if (my $matched = eval{ return $In_Strings =~ m<$NG_word> ? $& : undef }) {
$NG_word_ref->[0] = $matched; return $NG_word_ref
} # 合致したらNGワード部分の摘出とリファレンスを返す。
ですm(_ _)m深謝
訂正前に送信しちゃってごめんなさいです。
if (my $matched = eval{ return $In_Strings =~ m<$NG_word> ? $& : undef }) {
$NG_word_ref->[0] = $matched; return $NG_word_ref
} # 合致したらNGワード部分の摘出とリファレンスを返す。
ですm(_ _)m深謝
512root▲ ★
NGNG if (my $matched = eval{ return $In_Strings =~ m<$NG_word> ? $& : undef }) {
$NG_word_ref->[0] = $matched; return $NG_word_ref;
} # 合致したらNGワード部分の摘出とリファレンスを返す。
これを配布しました。
$NG_word_ref->[0] = $matched; return $NG_word_ref;
} # 合致したらNGワード部分の摘出とリファレンスを返す。
これを配布しました。
514stream ◆ap/yuix/tw
NGNG 名前欄に山崎渉が入ってるとfusianaになる機能とか、
そんな感じのいろんな過去の遺物を取り払ったら負荷が減ったりしないかな
そんな感じのいろんな過去の遺物を取り払ったら負荷が減ったりしないかな
516root▲ ★
NGNG ちなみに某京ぽんから「む山崎渉」って名前欄に入れているので、
この機能なくなると、ちょっと困っちゃったりして(w。
この機能なくなると、ちょっと困っちゃったりして(w。
517讃岐フォアンフォアン▲ ◆MylTDX..QI
NGNG fusianasanじゃないのかw
2005/06/15(水) 13:16:52ID:XFl23xTO0
だったら
fusianasanでリモホ表示を無くし、
もっと簡単な文字でリモホ表示ができるようになれば良いじゃないか、とか思った。
誰も使わんような文字とかで、被害が出ない程度に。
fusianasanでリモホ表示を無くし、
もっと簡単な文字でリモホ表示ができるようになれば良いじゃないか、とか思った。
誰も使わんような文字とかで、被害が出ない程度に。
2005/06/15(水) 21:00:21ID:u+DtC+Eo0
>>518
> fusianasanでリモホ表示を無くし、
それをやった場合、
・メリット = もしかしたら軽くなるかもしれないが、不明
・デメリット = もしかしたら何が起きるか、不明
最低限でもメリットがデメリットを下回らないことが確実であることが
開発の条件だと思うです。
> fusianasanでリモホ表示を無くし、
それをやった場合、
・メリット = もしかしたら軽くなるかもしれないが、不明
・デメリット = もしかしたら何が起きるか、不明
最低限でもメリットがデメリットを下回らないことが確実であることが
開発の条件だと思うです。
2005/06/16(木) 01:15:09ID:/BCKYOVZ0
>>518
・デメリット = たくさん考えられたフューザネイザン等のコピペが意味を成さなくなる。
・デメリット = たくさん考えられたフューザネイザン等のコピペが意味を成さなくなる。
2005/06/16(木) 14:39:21ID:X1yfjbM90
>>520
それは過去の遺物として残ったりして良いんじゃないのかな・・・?
それは過去の遺物として残ったりして良いんじゃないのかな・・・?
522root▲ ★
NGNG Perlのできない私が(りゃ。
とりあえず、LAとれそうなことはわかった。
#! /usr/local/bin/perl
use strict;
sub mumumuGetLA
{
use Sys::CpuLoad;
my ($GB) = @_;
my @load;
@load = Sys::CpuLoad::load();
$GB->{LOADAVG} = $load[0];
}
my $GBX = {};
$GBX->{LOADAVG} = 0.0;
mumumuGetLA($GBX);
print $GBX->{LOADAVG}, "\n";
exit 0;
とりあえず、LAとれそうなことはわかった。
#! /usr/local/bin/perl
use strict;
sub mumumuGetLA
{
use Sys::CpuLoad;
my ($GB) = @_;
my @load;
@load = Sys::CpuLoad::load();
$GB->{LOADAVG} = $load[0];
}
my $GBX = {};
$GBX->{LOADAVG} = 0.0;
mumumuGetLA($GBX);
print $GBX->{LOADAVG}, "\n";
exit 0;
523root▲ ★
NGNG #! /usr/local/bin/perl
use strict;
sub mumumuGetMaxLA
{
my ($GB) = @_;
my $servertype = "";
if($servertype = /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype = /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype = /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
}
sub mumumuGetServerType
{
use Sys::Hostname;
my $hostname = "";
$hostname = hostname();
if($hostname =~ /cobra/ ||
$hostname =~ /oyster/) { return "cobra"; }
elsif($hostname =~ /tiger/) { return "tiger"; }
elsif($hostname =~ /banana/) { return "banana"; }
else { return "unknown"; }
}
# main
my $GBX = {};
$GBX->{MAXLOADAVG} = 0.0;
&mumumuGetMaxLA($GBX);
print $GBX->{MAXLOADAVG}, "\n";
exit 0;
use strict;
sub mumumuGetMaxLA
{
my ($GB) = @_;
my $servertype = "";
if($servertype = /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype = /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype = /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
}
sub mumumuGetServerType
{
use Sys::Hostname;
my $hostname = "";
$hostname = hostname();
if($hostname =~ /cobra/ ||
$hostname =~ /oyster/) { return "cobra"; }
elsif($hostname =~ /tiger/) { return "tiger"; }
elsif($hostname =~ /banana/) { return "banana"; }
else { return "unknown"; }
}
# main
my $GBX = {};
$GBX->{MAXLOADAVG} = 0.0;
&mumumuGetMaxLA($GBX);
print $GBX->{MAXLOADAVG}, "\n";
exit 0;
524root▲ ★
NGNG あ、呼ぶところを入れてないね。
525root▲ ★
NGNG こんな感じか。
サーバタイプとってくるところは、外出ししといたほうがよさそうだから、
ちょっと冗長だけど、こうしておこう。
#! /usr/local/bin/perl
use strict;
sub mumumuGetMaxLA
{
my ($GB) = @_;
my $servertype = "";
$servertype = &mumumuGetServerType;
if($servertype =~ /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype =~ /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype =~ /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
}
sub mumumuGetServerType
{
use Sys::Hostname;
my $hostname = "";
$hostname = hostname();
if($hostname =~ /cobra/ ||
$hostname =~ /oyster/) { return "cobra"; }
elsif($hostname =~ /tiger/) { return "tiger"; }
elsif($hostname =~ /banana/) { return "banana"; }
else { return "unknown"; }
}
# main
my $GBX = {};
$GBX->{MAXLOADAVG} = 0.0;
&mumumuGetMaxLA($GBX);
print $GBX->{MAXLOADAVG}, "\n";
exit 0;
サーバタイプとってくるところは、外出ししといたほうがよさそうだから、
ちょっと冗長だけど、こうしておこう。
#! /usr/local/bin/perl
use strict;
sub mumumuGetMaxLA
{
my ($GB) = @_;
my $servertype = "";
$servertype = &mumumuGetServerType;
if($servertype =~ /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype =~ /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype =~ /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
}
sub mumumuGetServerType
{
use Sys::Hostname;
my $hostname = "";
$hostname = hostname();
if($hostname =~ /cobra/ ||
$hostname =~ /oyster/) { return "cobra"; }
elsif($hostname =~ /tiger/) { return "tiger"; }
elsif($hostname =~ /banana/) { return "banana"; }
else { return "unknown"; }
}
# main
my $GBX = {};
$GBX->{MAXLOADAVG} = 0.0;
&mumumuGetMaxLA($GBX);
print $GBX->{MAXLOADAVG}, "\n";
exit 0;
2005/06/17(金) 16:35:12ID:DURZUdCm0
>>525
乙です。
全体に言えることなんだけど、$GBみたいなグローバル変数的な参照変数を
あちこちの関数で持ちまわるよりも、関数はLoadAve. だけ返すようにして、
呼び出し元で明示的に$GB->[MAXLOADAVG]などに格納してやる方が
トレースはしやすいかと思います。
&mumumuGetMaxLA($GBX);
だと、$GBXのどこをどういじられたのか見当つかないわけでして、
$GBX->[MAXLOADAVG] = &mumumuGetMaxLA();
の方が明示的かな、と。それから
if($servertype =~ /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype =~ /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype =~ /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
おせっかいだとは思うんだけど、こういう書き方はタイプミスで泣きやすいです。
連想配列のキーの場合、綴りが間違っていてもwarningが出ないので。
perl5であることが前提だけど、理想的には$GBのようなものは用途別に分けて
それぞれblessしてやって、getMaxLAのような関連関数はパッケージに全部突っ込んで、
new関数でイニシャル時にガツガツ値を入れていく方がすっきりするとは思うんだけど、
1から作り直しになるやね。んでもそろそろClassの概念を入れる時期には来てるかと。あと
mumumuGetMaxLA
mumumuGetServerType
mumumuGetLA
こういう命名規則に頼るならpackage宣言しちゃった方が早いんではないかと思います。
乙です。
全体に言えることなんだけど、$GBみたいなグローバル変数的な参照変数を
あちこちの関数で持ちまわるよりも、関数はLoadAve. だけ返すようにして、
呼び出し元で明示的に$GB->[MAXLOADAVG]などに格納してやる方が
トレースはしやすいかと思います。
&mumumuGetMaxLA($GBX);
だと、$GBXのどこをどういじられたのか見当つかないわけでして、
$GBX->[MAXLOADAVG] = &mumumuGetMaxLA();
の方が明示的かな、と。それから
if($servertype =~ /cobra/) { $GB->{MAXLOADAVG} = 30.0; } # cobra
elsif($servertype =~ /tiger/) { $GB->{MAXLOADAVG} = 20.0; } # tiger
elsif($servertype =~ /banana/) { $GB->{MAXLOADAVG} = 4.0; } # banana
else { $GB->{MAXLOADAVG} = 4.0; } # unknown
おせっかいだとは思うんだけど、こういう書き方はタイプミスで泣きやすいです。
連想配列のキーの場合、綴りが間違っていてもwarningが出ないので。
perl5であることが前提だけど、理想的には$GBのようなものは用途別に分けて
それぞれblessしてやって、getMaxLAのような関連関数はパッケージに全部突っ込んで、
new関数でイニシャル時にガツガツ値を入れていく方がすっきりするとは思うんだけど、
1から作り直しになるやね。んでもそろそろClassの概念を入れる時期には来てるかと。あと
mumumuGetMaxLA
mumumuGetServerType
mumumuGetLA
こういう命名規則に頼るならpackage宣言しちゃった方が早いんではないかと思います。
527root▲ ★
NGNG MAXLOADAVGは1回だけ調べればいいので、ぐろーばるー(FOX)のほうに入れよう。
2005/06/17(金) 16:41:23ID:xq5cod4F0
>>528
つか、場合によってはshでも十分でしょう・・・
つか、場合によってはshでも十分でしょう・・・
2005/06/17(金) 16:47:02ID:DURZUdCm0
>>528
Perlの前はawk使いだったのでshは苦手ですw
参加できるのか分からないけど、できることがあればやりますよ。言い出しっぺの法則ですし。
全体のソースは見てないのですが、グローバル変数をあちこちに引きずる方式で
拡張を続けるといずれ破綻するような気がします。
Perlの前はawk使いだったのでshは苦手ですw
参加できるのか分からないけど、できることがあればやりますよ。言い出しっぺの法則ですし。
全体のソースは見てないのですが、グローバル変数をあちこちに引きずる方式で
拡張を続けるといずれ破綻するような気がします。
531root▲ ★
NGNG $FOX->{MAXLOADAVG} = &mumumuGetMaxLA();
にしました。
これは、船が出港する時に1回だけ実行。
で、$GB->{LOADAVG} (こっちは毎回調査)と $FOX->{MAXLOADAVG} を比較して、
$GB->{LOADAVG} 以上だったら、特殊処理っていうかんじで。
にしました。
これは、船が出港する時に1回だけ実行。
で、$GB->{LOADAVG} (こっちは毎回調査)と $FOX->{MAXLOADAVG} を比較して、
$GB->{LOADAVG} 以上だったら、特殊処理っていうかんじで。
532root▲ ★
NGNG で、
$GBX->{LOADAVG} = &mumumuGetLA();
にした。
確かにこのほうが、わかりやすいですね。
$GBX->{LOADAVG} = &mumumuGetLA();
にした。
確かにこのほうが、わかりやすいですね。
533root▲ ★
NGNG で、mumumuMaxLACheckを作った。
sub mumumuMaxLACheck
{
my ($GB) = @_;
if($GB->{LOADAVG} ge $FOX->{MAXLOADAVG}) { return 1; }
else { return 0; }
}
これで、処理部分からこれを呼んでチェック。
sub mumumuMaxLACheck
{
my ($GB) = @_;
if($GB->{LOADAVG} ge $FOX->{MAXLOADAVG}) { return 1; }
else { return 0; }
}
これで、処理部分からこれを呼んでチェック。
534root▲ ★
NGNG 基本的に、$FOX が船が出航する時に1度だけ作られて、
$GB が船に乗る客ごとに作られているようです。
何せ、ドキュメントも仕様書も何にもないので(そういうもんらしいです)、
ソースからおじさんの心を、読み取っていくしかないわけで。
$GB が船に乗る客ごとに作られているようです。
何せ、ドキュメントも仕様書も何にもないので(そういうもんらしいです)、
ソースからおじさんの心を、読み取っていくしかないわけで。
2005/06/17(金) 17:56:52ID:DURZUdCm0
536root▲ ★
NGNG537毒さぼ
2005/06/17(金) 18:37:31ID:JW+0RdvC0 geだと文字列比較になるね。(>=が一般の数字比較)
例えば、$aaaが'100'、$bbbが'25' だとしたら、
($aaa >= $bbb) は真になる(100のほうが25より大きい)けど、
($aaa ge $bbb) は偽になっちゃう。('1'より'2'のほうが辞書で後に出てくる)
例えば、$aaaが'100'、$bbbが'25' だとしたら、
($aaa >= $bbb) は真になる(100のほうが25より大きい)けど、
($aaa ge $bbb) は偽になっちゃう。('1'より'2'のほうが辞書で後に出てくる)
2005/06/17(金) 18:43:35ID:xq5cod4F0
>>536
というより、クリティカルなところは公表しないほうが無難かと
というより、クリティカルなところは公表しないほうが無難かと
2005/06/17(金) 18:53:11ID:MsktfovF0
むぎゅ。
>>530
ふむ。
ふむ。
2005/06/17(金) 19:29:32ID:Oo+hRM1L0
マミ… クリィミーマミ…
yasuさんか
yasuさんか
2005/06/17(金) 20:51:21ID:DURZUdCm0
>>548
携帯用c.2chのphpを解読中でーす。
携帯用c.2chのphpを解読中でーす。
2005/06/17(金) 23:18:54ID:DURZUdCm0
2005/06/17(金) 23:28:12ID:Oo+hRM1L0
聡明期からか
すげえな
すげえな
2005/06/17(金) 23:44:30ID:g+uG/BcP0
perlerさん並の理解力と柔軟性を期待
2005/06/17(金) 23:57:14ID:DURZUdCm0
2005/06/18(土) 01:18:32ID:P97ComF00
KヨNTさんとかRes9ueとかですよねぇ。。。@グロ引きずりまわして破綻
この辺の改造依頼は基本的には断っていたりしてして(苦笑)
さてと、そろそろ林檎機がくるのでまずは基地の修繕かなぁ。。。
(SweepさんとBBRさんがごきげんななめ@coreをエレエレ中)
この辺の改造依頼は基本的には断っていたりしてして(苦笑)
さてと、そろそろ林檎機がくるのでまずは基地の修繕かなぁ。。。
(SweepさんとBBRさんがごきげんななめ@coreをエレエレ中)
558555
2005/06/18(土) 09:59:40ID:FstfHQuj0 >>558
再構築おつです。
人の書いたPerlの保守って、Cとかと比較してもなんか相当大変みたいですね。
(「みたい」っていうのは、感覚では理解しているが単に自分が体験していないってことです)
本業方面の知り合いのところに約10年近く「つぎはぎんぐ」されてきた
約37,000行のPerlとかありますが、もう、すごい状態みたいです。
ブログにも少し書きましたが、もう「神の領域」ってやつらしく。
そのPerlは主に書いたやつ(二人)が現役だそうで、
今でもきちんとメンテされてるみたいですが、
その二人がいなくなると(以下略。
再構築おつです。
人の書いたPerlの保守って、Cとかと比較してもなんか相当大変みたいですね。
(「みたい」っていうのは、感覚では理解しているが単に自分が体験していないってことです)
本業方面の知り合いのところに約10年近く「つぎはぎんぐ」されてきた
約37,000行のPerlとかありますが、もう、すごい状態みたいです。
ブログにも少し書きましたが、もう「神の領域」ってやつらしく。
そのPerlは主に書いたやつ(二人)が現役だそうで、
今でもきちんとメンテされてるみたいですが、
その二人がいなくなると(以下略。
2005/06/18(土) 15:24:40ID:AVxh77pL0
・LAが基準値以上なら、IsKoukokuを船が死ぬまでスルーにした。
・animeサーバは、subject.txt/subback.htmlさぼりを発動させるレベルを
他のtigerサーバよりやや低めにした(基準値に対する率が違う)
・animeサーバは、subject.txt/subback.htmlさぼりを発動させるレベルを
他のtigerサーバよりやや低めにした(基準値に対する率が違う)
2005/06/18(土) 20:03:56ID:FstfHQuj0
>>559
> 人の書いたPerlの保守って、Cとかと比較してもなんか相当大変みたいですね。
CはCで大変だと思うけどね。C書く人ってPerlに比べてトリッキーなコード好む人多いし。
> 約37,000行のPerlとかありますが、もう、すごい状態みたいです。
すごいっちゃーすごいけど、その前になんとかならなかったのかなあ……。
しかし今目の前にある「破綻しちゃった」大量のコードを読んでると、多分どうにもならなかったんだろうなあ
という空気が伝わってきたり。
>>561
乙です。ここじゃスレ違いだとは思うんだけど、Apacheのセッションタイムアウトって
やたら長いけどこれ攻撃に使われたりしない?あるいはブラウザの誤動作でゾンビコネクションで
MAX_CONNECTが埋まっちゃったりとか。
さっきqb5.2ch.netに繋いだまま放置プレイ食らわせたら7分50秒も回線あけて待っててくれたよ。
> 人の書いたPerlの保守って、Cとかと比較してもなんか相当大変みたいですね。
CはCで大変だと思うけどね。C書く人ってPerlに比べてトリッキーなコード好む人多いし。
> 約37,000行のPerlとかありますが、もう、すごい状態みたいです。
すごいっちゃーすごいけど、その前になんとかならなかったのかなあ……。
しかし今目の前にある「破綻しちゃった」大量のコードを読んでると、多分どうにもならなかったんだろうなあ
という空気が伝わってきたり。
>>561
乙です。ここじゃスレ違いだとは思うんだけど、Apacheのセッションタイムアウトって
やたら長いけどこれ攻撃に使われたりしない?あるいはブラウザの誤動作でゾンビコネクションで
MAX_CONNECTが埋まっちゃったりとか。
さっきqb5.2ch.netに繋いだまま放置プレイ食らわせたら7分50秒も回線あけて待っててくれたよ。
2005/06/18(土) 20:16:09ID:mpr8OfG00
>>551
いへいへ私のことです(照)
いへいへ私のことです(照)
565だんしゃくねこ
2005/06/18(土) 22:35:00ID:ApFHTIkz0 │_A
│・−・) なんかローカルルールのリンク変更をしても、
↓ ⊂) livenhkのindex.htmlがちっとも更新されないんだけど(head.txtは更新されてる)
LAが高い時にindex.htmlも更新されないようになってますか?
(この時間のlive16のLAはそんなに高くない気もするけど)
ちなみにdomeも微妙にしばらくindexが更新されてなかったっす。
│・−・) なんかローカルルールのリンク変更をしても、
↓ ⊂) livenhkのindex.htmlがちっとも更新されないんだけど(head.txtは更新されてる)
LAが高い時にindex.htmlも更新されないようになってますか?
(この時間のlive16のLAはそんなに高くない気もするけど)
ちなみにdomeも微妙にしばらくindexが更新されてなかったっす。
2005/06/18(土) 22:40:11ID:ixn9Ucb10
2005/06/18(土) 23:44:03ID:P97ComF00
>>565
これ?
http://qb5.2ch.net/test/read.cgi/operate/1103495887/843
843 :FOX ★ [sage] :2005/03/23(水) 03:46:03 ID:???0
index.html subback.html の更新をたまにサボるようにした。
subject.txt は従来どおり更新してます
対象サーバ
ex10 live20 live16 live15
これ?
http://qb5.2ch.net/test/read.cgi/operate/1103495887/843
843 :FOX ★ [sage] :2005/03/23(水) 03:46:03 ID:???0
index.html subback.html の更新をたまにサボるようにした。
subject.txt は従来どおり更新してます
対象サーバ
ex10 live20 live16 live15
568だんしゃくねこ
2005/06/19(日) 00:11:28ID:7GiTNm0Z0 >>567
│_A
│・−・) うん、、まぁ、本当はそのルーチンを流用してると思うんだけど、
↓ ⊂) subback.htmlとsubject.txtって書いてあるし、
なんかLAがそんなに高くなさそうなのにそうなったのが気になって、
│_A
│・−・) うん、、まぁ、本当はそのルーチンを流用してると思うんだけど、
↓ ⊂) subback.htmlとsubject.txtって書いてあるし、
なんかLAがそんなに高くなさそうなのにそうなったのが気になって、
2005/06/19(日) 00:20:42ID:HonutV4K0
570root▲ ★
NGNG571root▲ ★
NGNG で、subject.txt / subback.html ではなく index.html / subback.html なので、
bbs.cgi の私が書いたコメントを直しておいたです。
なにせ、Perl も bbs.cgi も、未知の世界がたくさん。
bbs.cgi の私が書いたコメントを直しておいたです。
なにせ、Perl も bbs.cgi も、未知の世界がたくさん。
572だんしゃくねこ
2005/06/19(日) 20:00:38ID:7GiTNm0Z0573SweetRock ★
2005/06/19(日) 23:51:07ID:???02005/06/20(月) 05:32:32ID:idSWnAhx0
575root▲ ★
NGNG live系は、pidをある一定数で割った余りが0の時だけindex.html/subback.htmlを書き換える、
という実装になっているようです。
>>573
わたし的にはシステム負荷以外に特に止めておく理由はないので、
今夜あたりに復活してみるかも。
という実装になっているようです。
>>573
わたし的にはシステム負荷以外に特に止めておく理由はないので、
今夜あたりに復活してみるかも。
576root▲ ★
NGNG tmp5のIsKoukokuを復活しました。
山田ウイルスを撃退した、おじさんに感謝で。
山田ウイルスを撃退した、おじさんに感謝で。
577だんしゃくねこ
2005/06/21(火) 00:39:06ID:dkib8z350578root▲ ★
NGNG >>577
なるほど。
でもLAは所詮リアルタイムじゃないんで、
こっち(index.html / subback.html)は、あまりこれではやりたくなかったり。
(そもそもlive20等はIsKoukokuチェックなし)
なるほど。
でもLAは所詮リアルタイムじゃないんで、
こっち(index.html / subback.html)は、あまりこれではやりたくなかったり。
(そもそもlive20等はIsKoukokuチェックなし)
2005/06/21(火) 15:26:54ID:x2Bt2xzo0
そういえばやっているかもでしょうけど、
スレ立てやdat落ちのタイミングとindex/subback更新を同期にできませんかね?
・sageなしスレ立てまたはdat落ちがあったらindex/subback更新
・sageスレ立てしたらsubbackのみ更新
・sageレス投稿時に更新しない
スレ立てやdat落ちのタイミングとindex/subback更新を同期にできませんかね?
・sageなしスレ立てまたはdat落ちがあったらindex/subback更新
・sageスレ立てしたらsubbackのみ更新
・sageレス投稿時に更新しない
580root▲ ★
NGNG スレ立てはふつうに同期になっているはず。
sageレス投稿時更新しないというのは、cha2でやってるんでしたっけか。
dat落ちは別の人(f22)がやっているからなぁ。
sageレス投稿時更新しないというのは、cha2でやってるんでしたっけか。
dat落ちは別の人(f22)がやっているからなぁ。
581root▲ ★
NGNG 同じ●で1時間あたりに1サーバに立てられる最大スレッド数を制限できる機能を
qb6のbbs.cgiに実装してみたんですが、これって需要ありますかね。
主に、●でのスレ立て荒らし対策の一つになるかなと。
ちなみに、★(φ ★含む)とIsKoukokuを切っている状態
(live系/ex11や負荷が高い時)の場合、この処理はスキップ。
スレ立てでも●じゃない時や、スレ立てじゃない時は従来通り。
qb6のbbs.cgiに実装してみたんですが、これって需要ありますかね。
主に、●でのスレ立て荒らし対策の一つになるかなと。
ちなみに、★(φ ★含む)とIsKoukokuを切っている状態
(live系/ex11や負荷が高い時)の場合、この処理はスキップ。
スレ立てでも●じゃない時や、スレ立てじゃない時は従来通り。
582root▲ ★
NGNG 最大数は可変ですが、とりあえずデフォルトは10(1時間に10個まで立てられる)ぐらいかしら。
583root▲ ★
NGNG おじさんと若者へ(馴れ合いごめん):
・Sambaのアレと同じ場所にカウントのファイルを作るです。
・ファイル名に使うときに、/ は _ に変えているです。
・先頭に "." つけているので、あれを数えているところには影響しないはずです。
・Sambaのアレと同じ場所にカウントのファイルを作るです。
・ファイル名に使うときに、/ は _ に変えているです。
・先頭に "." つけているので、あれを数えているところには影響しないはずです。
2005/06/22(水) 02:41:18ID:BLJmkowo0
鯖単位だよね? 10個どころか5個くらいでもあんまり困る人はいないような。
そもそもスレってそんなに短時間にたくさん立てるもんじゃないと思うですよ。
荒らし以外で1時間に5本以上同一鯖内でスレが立てられなくて困る人なんて
●を使ってスレ立て代行をやっている人くらいしか思いつかない。★はスルー
だから記者とかは関係ないわけだし。
そもそもスレってそんなに短時間にたくさん立てるもんじゃないと思うですよ。
荒らし以外で1時間に5本以上同一鯖内でスレが立てられなくて困る人なんて
●を使ってスレ立て代行をやっている人くらいしか思いつかない。★はスルー
だから記者とかは関係ないわけだし。
585root▲ ★
NGNG 例えば、●荒らしが横行しているらしい(あまり確認していないのでよくわかりません)
news だけ5個にするとかも技術的にはできなくはないわけですが、さて。
れふぃさんとかの意見が、聞きたいかも。
news だけ5個にするとかも技術的にはできなくはないわけですが、さて。
れふぃさんとかの意見が、聞きたいかも。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【ホリエモン】堀江貴文氏「俺本気になって暴露するなら文春とか霞むくらいの情報持ってるよ」と告白し反響 元フジ長谷川豊氏と対談 ★2 [Ailuropoda melanoleuca★]
- 【八潮市道路陥没】運転手の救出活動を再開…作業用スロープが完成し重機でがれきの撤去始める ★9 [Ailuropoda melanoleuca★]
- 【八潮市道路陥没】運転手の救出活動を再開…作業用スロープが完成し重機でがれきの撤去始める ★10 [Ailuropoda melanoleuca★]
- イオンのフードコートの飲食店が全て撤退で飲食できない現象…なぜ発生? (西川立一氏他) [少考さん★]
- すぐに火葬できず平均4~5日の火葬待ち 精神的負担、安置費用5日20万円…「死亡者数が例年になく多い」 [おっさん友の会★]
- 【北九州】カツカレーと親子丼セットを”無銭飲食” 無職78歳男を現行犯逮捕 所持品はマスク1枚 [煮卵★]
- トランプ『物価高はバイデンのせいだ』⇒関税で更に上がってしまう🥺 [118990258]
- 少し前の愛国者、人口減少高齢化は問題ない、経済と国防とインフラと社会保障と治安が崩壊するだけ! [819729701]
- ラーメン屋で大盛り無料に釣られて頼むと絶対後悔する
- 【悲報】今の共通テスト、完全に生まれながらの知能検査になっていることが判明する…
- 【節分】今日は日本国民みんなが恵方巻を食べる日です😤 [583597859]
- この世で一番美味い魚は鯖だろ