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
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サーバよりやや低めにした(基準値に対する率が違う)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 元フジ・笠井信輔アナ、古巣のやり直し会見に「最初にこれをやっていれば…」「相談役の動向に注目しているなと」…再生願う★2 [jinjin★]
- 1時間働いてビッグマック2.2個 「スマイル」も安い日本 [蚤の市★]
- 【八潮市道路陥没】運転手の救出活動を再開…作業用スロープが完成し重機でがれきの撤去始める ★8 [Ailuropoda melanoleuca★]
- 小学校「除籍」されたクルド人女児が復学…さいたま市教委が対応の誤り認め謝罪 [少考さん★]
- バイクとクルマの“いいとこ取り”車検なしで保険も税金も安価な250ccのトライクが登場 [おっさん友の会★]
- 【ラジオ】ほんこん 自民・松川るい議員の〝誹謗中傷大国ニッポン〟に私見 [少考さん★]
- 【悲報】愛知県さん、公務員試験で女性受験者だけ試験の点数を減点させていたことが判明して大炎上。そりゃ女性も逃げ出すわ [786648259]
- 【悲報】👩女性「キラキラ!キラキラ!」 女性の流入で東京の人口がさらに増える [312375913]
- キムタクさん、長谷川豊砲によりまたもや評価を上げてしまう・・・ [782460143]
- 神社の屋根裏から出征兵の絵馬3500枚が見つかる。焼却処分 [122319879]
- インバウンドによるマナーの悪い外国人が話題だけど、その程度の外国人が訪日できるよう日本円の価値を毀損した自民党が叩かれない理由 [472617201]
- 12年間剣道をやった俺が「結論」を言う