X



★負荷軽減対策委員会(Perl、PHP)★

0001ジークハルト ◆VUxx/EwNXI
垢版 |
02/10/15 10:33ID:ifgLRUyb
サーバ上にPerlやPHPを置く場合、何よりも重視しなければ
ならないのはサーバへの「負荷」。
負荷の高いCGIの使用は削除対象となるのが目に見えてます。
負荷を軽減させるにはどうすればいいか?
どういう書き方をすればいいか?
そんな委員会を開設しました。
0465nobodyさん
垢版 |
03/08/25 14:55ID:JfnblB1o
>>464
今は知らないけど、今までのVerでは思いっきり空読みしてるよ。
↓以前のread.cgi空読み部分。

else
{
if(nn_st && lineNo < nn_st) continue ;
if(nn_to && lineNo > nn_to) continue ;
if(nn_ls && line < lineMax - nn_ls) continue ;
}


ファイルのオープンってI/Oの負荷がでかいから、
ファイルポインタを記録/読出しするのも結構な負荷になる。
あぼーんの処理も面倒になるし1000行空読みの負荷がたいしたこと
ない(実際やってみ)事を考えると、大してメリットはないと思われる。

ちなみに2chは固定長フォーマットではないし、板のトップは書き込み時
に更新されるだけだから、read.cgiより呼び出される回数は圧倒的に少なく
それほど問題にならない気が。
0467nobodyさん
垢版 |
03/08/27 01:27ID:???
useって宣言した場所によって読み込まれる時期が違うの?
それならJcodeなんかは先頭でuseせずに
送られてきたデータのチェック済ませてから読み込ませた方が良いのかな。
#チェックにJcode使うなら別だけど
0470nobodyさん
垢版 |
03/09/05 00:46ID:???
SpeedyCGIでどうやったら、負荷が高いときのエラーが無くなるんだろう。
もう訳がわからん。
0472nobodyさん
垢版 |
03/09/06 18:14ID:???
>>471
負荷を軽減させるために、>>470がspeedyCGIを入れたんだろ。
ここは、負荷軽減の為のスレだよ。
0474nobodyさん
垢版 |
03/09/17 21:25ID:Rf3lCYFV
PHPの掲示板なんですができるだけ負荷がかからないログの読み込み方法ってどんなのがありますか?
今は書き込みや読み込みの時にfile()で全部取得しているんですがログが増えると負荷が大きくなりそうな気がするので。
0476nobodyさん
垢版 |
03/09/17 22:15ID:Rf3lCYFV
DB使う以外にうまいやり方無いですか?
0477nobodyさん
垢版 |
03/09/17 22:24ID:???
>476
ないですね!
逆に、なんでDB使うのいやなんですか?!
0479nobodyさん
垢版 |
03/09/17 22:55ID:???
>478
474が悩み事の矛盾に気がつかないからだよ!
0480nobodyさん
垢版 |
03/09/17 22:59ID:???
>>477
2ちゃん程度の規模でもDBなぞ使ってないんだが。
ていうか、逆に2ちゃんをDBで書き直したらえらい事になると思うが・・・。

普通のBBSって書き込みはFIFOだし、読み出しはシリアルだから
逆にDB使うほうが負荷が大きくなる。
0481474
垢版 |
03/09/18 00:06ID:???
DB使うのが嫌っていうか使ったことないので
DB使わずにfile()以外のやり方ないかと思ったんですが
0482
垢版 |
03/09/18 00:52ID:???
>481
スレ読めよ。
0485483
垢版 |
03/09/18 07:46ID:???
「スレ読めよ」か。「スレタイ読めよ」と勘違いした。
0486nobodyさん
垢版 |
03/09/18 09:35ID:???
>474

データ構造を固定長にしてバイナリファイルに格納しておき
fseek fread fwrite などを使えば部分処理が出来るから負荷は
減ると思うよ
0487nobodyさん
垢版 |
03/09/18 15:34ID:???
SpeedyCGIでエラーが頻発したので、PerlからCに移植した。
えらく辛かったが、めちゃくちゃ速くなった。
0488nobodyさん
垢版 |
03/09/24 13:10ID:???
apacheの軽量化が威力あると言うが、
具体的にどういったモジュールを消せば良いのだろう。
0490nobodyさん
垢版 |
03/09/24 13:56ID:???
>488

とりあえずスレ違いと思われ

スクリプト上で解決可能な話題が主題かと思う
0493nobodyさん
垢版 |
03/09/25 07:19ID:???
人よりちょっと知識の多い香具師が少ない香具師を馬鹿にするスレはここですね。
0494nobodyさん
垢版 |
03/09/25 10:11ID:???
>>490
apacheもスクリプトも両方チューニングして、
「負荷軽減対策委員会」と呼べるような気がするのだが…
0495nobodyさん
垢版 |
03/09/25 10:39ID:???
>>1を見る限りそうとは思えないけどな
方針変更という事で・・・
0496nobodyさん
垢版 |
03/09/25 16:05ID:???
Apacheのチューニングはスクリプトの有無や出来とは関係なく
できることだし、別問題じゃないか?
0498nobodyさん
垢版 |
03/09/25 18:44ID:???
ループは負荷が増えるので禁止
0499nobodyさん
垢版 |
03/09/26 05:39ID:???
足りない?
mod_mime_magic,mod_dir,mod_auth,mod_access,mod_cgi,mod_log_config,(mod_env)
(mod_perl)
0500500
垢版 |
03/09/26 12:46ID:???
500
0502nobodyさん
垢版 |
03/09/29 13:04ID:???
>>501
速度重視ならDSOを使わな方が良いという話で良い?
0503とおりすがり
垢版 |
03/09/29 17:18ID:???
>>502
そういうこったな(w

>>501
「あぱちのmoduleとして動作させると」とか
書いとけばつっこまれなかったのにな
0504nobodyさん
垢版 |
03/09/30 17:47ID:???
素直に専用鯖借りてmod_perlとgzip圧縮でも使いなさい。
0509nobodyさん
垢版 |
03/10/18 19:58ID:???
変数より定数使ったほうがやっぱ軽いのかなぁ・・・

あとは定数と直接数値を書き込むのはどっちが軽いのだろうか
0510nobodyさん
垢版 |
03/10/19 00:18ID:???
>>509
ぐだぐだいう前にベンチしろ、このヴォケが
0511nobodyさん
垢版 |
03/10/29 01:38ID:???
ね、みんなローカルでPerlをテストする時、何のソフト使ってるの?
0512nobodyさん
垢版 |
03/10/29 01:46ID:???
何のソフトとは?エディタ?ブラウザ?
0513nobodyさん
垢版 |
03/10/29 01:48ID:???
私はペギーパッド使ってます
0514nobodyさん
垢版 |
03/10/29 01:55ID:???
Winで簡単なPerlだったらプロンプトで十分だけど。
Perlを始めよう、ならエディタから直接プロンプト起動できるし良い。
俺はtxt,HTML,Perl,PHP,SQL,C,Java,XMLなど全部ひとつのエディタで
やりたいからEmEditor3を使ってる。
0515511
垢版 |
03/10/29 13:34ID:???
ね、みんなローカルでPerlをテストする時、何のソフト使ってるの??

自分は
エディタ・・・秀丸
ブラウザ・・・アパッチ
0516nobodyさん
垢版 |
03/10/29 13:46ID:???
特に深いことは考えてない。
エディタ:QX(慣れてる&コマンドラインに渡せるから)
サーバー:ANHTTPD(既に入れてたから)
なんだけど、やっぱ、アパッチの方がいいかね?

……スレ違いだけど、この話題続けていいもんかね。
0517nobodyさん
垢版 |
03/10/29 15:06ID:???
負荷軽減にはあまり関係ない。

エディタはPerlエディタスレ、サーバ話は何処が良いんだ。
無難に初心者質問スレでも薦めておくか。

ところでブラウザがアパッチって凄いな。
0518511
垢版 |
03/10/29 16:10ID:???
あ、ごめん、サーバの間違え
>>512がブラウザ?って・・・
0520nobodyさん
垢版 |
03/10/30 00:48ID:???
美少女が変態では何の価値もない
0521nobodyさん
垢版 |
03/10/30 10:59ID:???
テストサーバーで、JAVAみたいに「;がありません。」など、
エラーの内容を出力してくれるサーバーって無いの?
0522nobodyさん
垢版 |
03/10/30 12:01ID:???
>>521
例えばCGIでエラーを標準出力に表示するのは?
0523nobodyさん
垢版 |
03/10/30 13:00ID:???
>>522
え?そんなのあるの?知らなかった・・・・
やり方は?
0524nobodyさん
垢版 |
03/10/30 13:34ID:???
>>523
言語にもよるけど、rubyならこんなかんじで

begin
# 例外が発生する可能性がある処理
rescue 例外
puts "#{$!} (#{$!.type})"
puts $@.join("\n")
end

perlはよく知らないけどこれでできるかな?

eval 'なんかの処理';
print $@ if($@);
0526nobodyさん
垢版 |
03/11/06 16:02ID:4b5YfiKA
巷に出回る perl CGI って、
1. グローバル変数多し、my レキシカル変数使わず
2. 関数分割せず、ベタ書き
3. ヒアドキュメントを使わず、print '' の嵐
なものが多い。こんな手法が負荷軽減に貢献すんのか?
意見求む。
0527nobodyさん
垢版 |
03/11/06 16:18ID:???
誰でも負荷軽減を考えているわけではないから
0528nobodyさん
垢版 |
03/11/06 21:45ID:???
>>526
> 2. 関数分割せず、ベタ書き
について負荷軽減との関連性についてのご教授お願いします。
0529ぺるにゃん
垢版 |
03/11/06 22:21ID:???
軽減はしますよ。

でも、HTML を軽くするために、すべての改行を取り払ってサイズを小さくしよう的な
アプローチですにゃ。そこまで必死な人は、すればいいにゃ。
0530nobodyさん
垢版 |
03/11/06 22:26ID:???
ベタ書きのほうが負荷はかからないのは言うまでも・・・
0531nobodyさん
垢版 |
03/11/07 00:48ID:???
ブラウザゲーム作るならやっぱりphpのほうがええかな?
0532ぺるにゃん
垢版 |
03/11/07 01:30ID:???
>>531
負荷を考えれば、そうだけど。
普及を考えれば、どうかにゃあ。
0533nobodyさん
垢版 |
03/11/07 02:57ID:???
ヒアドキュメントってprint"と変わらないんじゃなかったっけか?
0534ぺるにゃん
垢版 |
03/11/07 03:40ID:???
ケース1:print 文の嵐
print '<HTML>';
print .........
print '</HTML>';


ケース2:print 文いっかいだけ
print '<HTML>
.......
</HTML>';


ケース3:ヒアドキュメントで print 文いっかいだけ
print <<'END of HTML';
<HTML>
.........
</HTML>
END of HTML

こういうのを比べてるってこと?
0535ぺるにゃん
垢版 |
03/11/07 03:43ID:???
ヒアドキュメントかどうかは関係がないと思うけど。

ケース2とケース3は、(ヒアドキュメントの末尾の改行を除けば)等価でしょ?
じゃなかったら首つるです。
違いが出てくるとすれば、パース・・構文解析にかかる時間。
それも有意差は出ないでしょう。

異論ありますかにゃ?
0536nobodyさん
垢版 |
03/11/07 05:18ID:???
もういいから。わからないやつは黙っておけ。
0538nobodyさん
垢版 |
03/11/07 07:00ID:H74hevQp
>>537
へー結構差があるんだね。
0541nobodyさん
垢版 |
03/11/07 19:01ID:???
>>540
PHPA、だいぶというかかなり違うようですが。
0544nobodyさん
垢版 |
03/11/11 02:37ID:???
>526
my 変数の方が速いの?
速度とか関係無しにstrict通るようにした方が良いだろうって話は置いといて。
0545nobodyさん
垢版 |
03/11/11 03:02ID:???
そりゃあ速いさ
シンボルテーブルに登録されないし
0547nobodyさん
垢版 |
03/11/11 20:21ID:???
メモリにかかる負荷を測定するってことは出来ますかね。
0548nobodyさん
垢版 |
03/11/11 21:35ID:???
ああ俺もそれ調べたい。
と言うかメモリ使用量とかどうやって調べてるんだろ…。
測定用のモジュールとかあるのかな?
0549nobodyさん
垢版 |
03/11/11 21:57ID:???
>>547-548
OS に依る。Linux や *BSD なら vmstat(8) とか top(1) で
別ターミナルから測定。
0550nobodyさん
垢版 |
03/11/11 22:06ID:???
Winは無理っすか。
タスクマネージャみたいな監視ツール作ってログ取るようにすれば良いんかな…俺にゃ無理だけど…。
0551nobodyさん
垢版 |
03/11/12 20:29ID:???
掲示板とかのスクリプトでHTMLを吐き出してそれにアクセスさせるってあるけど
ログファイル自体をHTMLにするって効率悪いよねぇ。
0552nobodyさん
垢版 |
03/11/12 22:06ID:???
>>551
変換するのは1回だがアクセスされるのは何度もあるからいいのよ
0553nobodyさん
垢版 |
03/11/13 00:24ID:???
逆にアクセス解析とかカウンターとかは変換するだけ無意味って言うか
ログなんて管理人しか見らんし。
0556nobodyさん
垢版 |
03/11/16 09:50ID:+X9Lai7L
久しぶりに見たら。このスレまだ生きてたんだー
0557nobodyさん
垢版 |
03/11/17 01:02ID:???
今日、会社休みます。。。

会社の負荷を減らすためにネ!
0558nobodyさん
垢版 |
03/11/17 01:47ID:???
1日だけとは言わずに毎日休んだらどうっすかね?
0559nobodyさん
垢版 |
03/11/17 01:52ID:???
人類のお荷物を減らすために?
0561nobodyさん
垢版 |
03/11/27 00:12ID:fPk+Wuzv
堕スレ化したの?
でも、結局負荷軽減ってアルゴリズム考えた方が、
myがどーの、ヒアドキュメントがどーの、言うより意味あるよね。
言語選択ではある程度答え出てるし、このスレの意義って。。。
0562nobodyさん
垢版 |
03/11/27 02:12ID:???
ちょっとした負荷を減らすために非常に参考になりました
レスを投稿する


ニューススポーツなんでも実況