★負荷軽減対策委員会(Perl、PHP)★
■ このスレッドは過去ログ倉庫に格納されています
0001ジークハルト ◆VUxx/EwNXI
02/10/15 10:33ID:ifgLRUybならないのはサーバへの「負荷」。
負荷の高いCGIの使用は削除対象となるのが目に見えてます。
負荷を軽減させるにはどうすればいいか?
どういう書き方をすればいいか?
そんな委員会を開設しました。
0409404NOTFOUND
03/07/02 20:09ID:???>mod_phpも同じだ。
PHP可を謳っている鯖屋はmod_php可という意味で、CGI可(※)を謳っている鯖屋は、
CGI/Perl可という意味で謳っていると思うのだがどうだろうか?
CGI可に比べてPHP可の鯖屋が少ないのは事実だが、mod_Perlを使える
鯖屋を見た事がないのは、漏れの調べ方が甘いからなのか・・・
※)一般的にCGI=Perlという認識があるのでこのような書き方をあえてしたが・・・
つまり何が言いたいかと言うと、mod_php使える鯖がそんなに非一般的では
ないんではないかという事だ。
0410nobodyさん
03/07/02 21:32ID:???cgi版じゃない普通(というか一般的というか)のphpってこと?
0411nobodyさん
03/07/02 21:52ID:???適当な拡張子をApache::Registry上で
動くようにする事自体はむずかしくないんだけど
ユーザーのモジュールの名前空間に制限がかけれないので
userAが
use lib (/home/userA/lib/);
use myPackage;
としる状態で
userBが
use lib (/home/userB/lib/);
use myPackage;
とかしてくれちゃうと、動作がめちゃくちゃになってしまうので
ユーザーにmod_perlな環境を提供できません(´Д`;)
>>410
mod_phpでない場合(サーバー組み込みで無い場合)
「php対応(ただしコマンドライン版)」という表記をみかけます
0414nobodyさん
03/07/03 09:14ID:???ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
まだmsがやったベンチ結果のほうがdqnぽくない
PHP5のケース別ベンチやってくれんかな
個人では実験環境が作れないしzendの情報だけでは激しく不安だし、、
話は変わって、itboostのtips「効率的な処理」に、phpのループ構造は遅いから、
コールバック関数を繰り返し呼び出すとphpではなくcレベルでループが走ってくれるて
いいよってネタがあるけど、これはどうなん?
(あれはcountを一度にすれば大差ないような気もしつつ、、。
個人で実行速度を計測するといえば、ループ処理のことだと言ってもいいかと
おもうんだけど、これってphp特有の問題?
0416411
03/07/06 09:05ID:???ハンドラ好きにさせるのはもってのほかなので
Apache::RegistryかApache::PerlRunを提供するしかないと
おもうのですが、前述の問題があり、自分の知識内では
不可能と判断しています。
(他に良い方法がないか探してるのですが...)
>>414
FastCGIも、共有サーバだとデーモンプロセス上がりまくりで
現実的では無いような気がしますが^^;
0417nobodyさん
03/07/06 09:07ID:???>ああいう非現実的な試行環境に統一して対照されても参考にできないよね、、
どこのサイトを見てるんですか?
0418nobodyさん
03/07/06 13:26ID:???有名なサイトだよ。35の言語の25のベンチマークによる比較。
http://www.bagley.org/%7Edoug/shootout/
0419nobodyさん
03/07/06 13:33ID:???http://www.linc.or.jp/~takaaki/Family/takaaki/Labo/dynamic_page.shtml
0421nobodyさん
03/07/08 03:40ID:???http://member.nifty.ne.jp/hippo2000/perltips/javaperl.htm
このあたりかな?とか思ってました
0422山崎 渉
03/07/15 11:10ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0423nobodyさん
03/07/24 09:32ID:???0424nobodyさん
03/07/25 23:36ID:???0425nobodyさん
03/07/26 17:01ID:????>
<html><head><title><?=$title=></title></head>
<?php
と
echo << end
<html><head><title>$title</title></head>
end;
はどっちが軽いんだろうね・・・
0426nobodyさん
03/07/26 17:02ID:???0427nobodyさん
03/07/27 01:37ID:???0430nobodyさん
03/07/28 05:31ID:???明示的にする前者がやっぱ速いかな?特に変数が多いほど。
でも、PHPモードに入ったり抜けたりする負荷(と言えるかな?)を考えると前者のような気もする…
0431nobodyさん
03/07/28 11:41ID:???<html><head><title>'.$title.'</title></head>
';
これでいいべ
0432nobodyさん
03/07/28 16:40ID:???長い場合、echoを大量に書くわけにもいかんでしょ
HTMLのフッタ部分は定型に近いから?><?phpを使ってるんだけど
さほど変わらないのかなぁ・・・
0433nobodyさん
03/07/31 10:25ID:???http://www.php.net/manual/ja/language.basic-syntax.php
にもあるとーり結局内部的には echo で処理されてるから
あとは可読性の問題じゃないかねぇ。
0434山崎 渉
03/08/02 02:24ID:???( ^^ )< ぬるぽ(^^)
0435ぼるじょあ ◆ySd1dMH5Gk
03/08/02 04:52ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0436nobodyさん
03/08/08 18:33ID:???遅いときはイライラするぐらい遅い。
普通こんなにバラツキがあるものなのですか?
0437あぼーん
NGNG0438nobodyさん
03/08/15 12:34ID:???新しいhttpdの子プロセス上がった時とかキャッシュがないからでは?
重そうなモジュールは起動時に読み込むようにするとかして
コンパイル時間短くしたら?
0439nobodyさん
03/08/20 12:11ID:???私の書き方が間違っているだけなんですかね?
0440nobodyさん
03/08/20 12:21ID:???mod_perl1.2使ってたとき、モジュールのキャッシュ無視して、別空間にロードされる場合も。
最近のバージョンで改善されているかどうかは不明ですが。
0442440
03/08/21 18:44ID:???初回にロードした時間を記録するクラス作って、何度かリロードして確かめた記憶が。
他にも、子プロセス関係で何かしたと思ったけど、忘れた。
%INC消さなくても、ロードされる時はされてましたよ。
ライブラリモジュールに限らず、同一ファイル、同一パッケージ名の空間も
複数のキャッシュが存在してしまうこともしばしば。
それ知って以来、mod_perlは一切使ってませんが。
で、最近のバージョンはどうなんでしょう?
0443nobodyさん
03/08/22 04:06ID:???webDBで、mod_perlを導入したが、遅い。
まだSpeedyCGIの方がパフォーマンスが良い。
ただ、>>439 の言う通り負荷が高くなると不安定なんだよなぁ。
なんか回避方があったら、教えて欲しいよ。
0444nobodyさん
03/08/22 13:11ID:???私もWebとPostgresqlで組んでいるのですが、
mod_perlだと、速度のバラツキが尋常でなくて採用を辞めましたよ。
SpeedyCGIが安定さえしてくれれば、何も心配ないのですけどね。
0445nobodyさん
03/08/22 15:05ID:qLHm82v90448あぼーん
NGNG0449nobodyさん
03/08/22 23:56ID:???>>446じゃないが、DBIは遅い気がする。
あとDBIじゃなかったかな?サーバー名にIPアドレスじゃなくて
FQDN指定するとident投げるのって。
identが繋がらないとタイムアウトするまで固まるんだよな。
0450nobodyさん
03/08/23 00:30ID:???Perl/CGIで利用しているところが多いのにビビりました。
DBMS使う以上、何らかの効率性を望んでいるのだと思うけど、何故Perl/CGIなんだと問いつめたいよ。
0451nobodyさん
03/08/23 00:44ID:12CD5sBt逆に、Perl/CGIだと何がだめなのか説明してみてください。
0452↓このURLにぴんときたら2chビューア
03/08/23 01:44ID:???http://homepage.mac.com/hiroyuki45/hankaku
0453nobodyさん
03/08/23 09:33ID:???漏れはMysq;でPerl/CGIしてるけど、移植元がperlだったから単純に鯖の負荷軽減が目的だったりしたが・・・
それに、Phpだと複雑なソース書ききれんかったろうってのもあるわけだが、お前さんはなにでやれと?
0454nobodyさん
03/08/23 13:18ID:???0455nobodyさん
03/08/23 16:29ID:IynKNpCXある位置から数行くらい読み込む時、
10kbくらいのファイルと、300kbくらい(要するにでかい)ファイルでは
負荷に違いってあります?
open IN, ...;
for($i=0; $i<10; $i++){
$line = <IN>;
...処理
}
close IN;
みたいなプログラムでつ。
0456nobodyさん
03/08/23 16:46ID:???どうやって「ある位置」までファイルポインタを移動させるかに依る。
行単位で空読みさせて移動するよりは seek 一発の方が速い。
その例だとファイルの先頭からだから変わらん。
0457nobodyさん
03/08/23 19:02ID:V3x8NgSHPerlで書けてPHPで書けない「複雑ソース」って何?
0458nobodyさん
03/08/23 19:07ID:???0459nobodyさん
03/08/23 19:20ID:???最近あまり追ってないんだが、
PHPってtermiosによる端末制御できたっけ?
fork()は出来るけどpipe()は出来たっけ?
あと、PHPはスコープが滅茶苦茶だから(まぁPerlも変だけど)
あまり大きいソースを多人数で書くのには向いてないと思う。
0460455
03/08/24 10:10ID:XoFfp7Kp1行の文字数が不定なんでseekで飛ぶことが難しいんす。
2chログのように301-400だけ表示みたいな場合は
やっぱ空読みしてるんかな。
0462455
03/08/25 11:33ID:???適当にread系のcgiを漁ってみたけど、やっぱ空読みしてるみたいだわ。
0464nobodyさん
03/08/25 13:26ID:???1、行ごとのファイルポインタを記録してある。
2、一定件数ごとに、ファイルポインタを記録してある。
3、2chは入力値の長さが決まっているから、固定長フォーマットにしてある。
これだけのアクセス数があるところで、空読みは考えにくいな。
板のトップで、数千行単位で空読みされるのですか?
0465nobodyさん
03/08/25 14:55ID:JfnblB1o今は知らないけど、今までの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:???それならJcodeなんかは先頭でuseせずに
送られてきたデータのチェック済ませてから読み込ませた方が良いのかな。
#チェックにJcode使うなら別だけど
0468nobodyさん
03/08/27 02:23ID:???http://www.perldoc.com/perl5.8.0/pod/func/use.html
http://www.perldoc.com/perl5.8.0/pod/func/require.html
0469nobodyさん
03/09/04 01:48ID:???0470nobodyさん
03/09/05 00:46ID:???もう訳がわからん。
0473nobodyさん
03/09/17 00:18ID:???0474nobodyさん
03/09/17 21:25ID:Rf3lCYFV今は書き込みや読み込みの時にfile()で全部取得しているんですがログが増えると負荷が大きくなりそうな気がするので。
0475nobodyさん
03/09/17 22:10ID:???DB使ってね!
0476nobodyさん
03/09/17 22:15ID:Rf3lCYFV0477nobodyさん
03/09/17 22:24ID:???ないですね!
逆に、なんでDB使うのいやなんですか?!
0479nobodyさん
03/09/17 22:55ID:???474が悩み事の矛盾に気がつかないからだよ!
0480nobodyさん
03/09/17 22:59ID:???2ちゃん程度の規模でもDBなぞ使ってないんだが。
ていうか、逆に2ちゃんをDBで書き直したらえらい事になると思うが・・・。
普通のBBSって書き込みはFIFOだし、読み出しはシリアルだから
逆にDB使うほうが負荷が大きくなる。
0481474
03/09/18 00:06ID:???DB使わずにfile()以外のやり方ないかと思ったんですが
0483nobodyさん
03/09/18 00:58ID:???0484nobodyさん
03/09/18 01:28ID:???0485483
03/09/18 07:46ID:???0486nobodyさん
03/09/18 09:35ID:???データ構造を固定長にしてバイナリファイルに格納しておき
fseek fread fwrite などを使えば部分処理が出来るから負荷は
減ると思うよ
0487nobodyさん
03/09/18 15:34ID:???えらく辛かったが、めちゃくちゃ速くなった。
0488nobodyさん
03/09/24 13:10ID:???具体的にどういったモジュールを消せば良いのだろう。
0489nobodyさん
03/09/24 13:16ID:???0490nobodyさん
03/09/24 13:56ID:???とりあえずスレ違いと思われ
スクリプト上で解決可能な話題が主題かと思う
0491nobodyさん
03/09/24 14:07ID:???0492nobodyさん
03/09/24 22:58ID:Fv8u9zA+http://click.dtiserv2.com/Click2/1-98-7254
0493nobodyさん
03/09/25 07:19ID:???0496nobodyさん
03/09/25 16:05ID:???できることだし、別問題じゃないか?
0497nobodyさん
03/09/25 17:02ID:???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:???0501nobodyさん
03/09/28 01:16ID:Hg1oCkYhhttp://httpd.apache.org/docs/dso.html
0504nobodyさん
03/09/30 17:47ID:???0505nobodyさん
03/09/30 18:17ID:???0506nobodyさん
03/10/08 17:46ID:???0507nobodyさん
03/10/14 23:31ID:???0508nobodyさん
03/10/16 19:43ID:???■ このスレッドは過去ログ倉庫に格納されています