X



★負荷軽減対策委員会(Perl、PHP)★
0001ジークハルト ◆VUxx/EwNXI
垢版 |
02/10/15 10:33ID:ifgLRUyb
サーバ上にPerlやPHPを置く場合、何よりも重視しなければ
ならないのはサーバへの「負荷」。
負荷の高いCGIの使用は削除対象となるのが目に見えてます。
負荷を軽減させるにはどうすればいいか?
どういう書き方をすればいいか?
そんな委員会を開設しました。
0101ジークハルト ◆VUxx/EwNXI
垢版 |
02/10/17 09:04ID:???
>>92
あいたたた・・・

じゃせめてこのスレの内容まとめて
負荷軽減対策委員会の公式サイトでも起ちあげますか・・
0102nobodyさん
垢版 |
02/10/17 12:39ID:CzH1ES8f
gzip処理をすると転送料は減りますが
サーバへの負荷はどうなると思いますか?
gzip処理をすることでサーバへ負荷がかかるとしたら
何kbを越えるくらいをめどにgzip処理を施すのが妥当でしょうかね?
例えば2kb程度を転送するくらいならgzip処理は必要ないでしょうか?
ご享受願います。
0103nobodyさん
垢版 |
02/10/17 13:57ID:???
>>102
FEPか表示フォントの設定大丈夫ですか?
圧縮ファイルだって未圧縮ファイルだって転送時には
同じバイト列でしょ。
0104nobodyさん
垢版 |
02/10/17 14:09ID:CzH1ES8f
>>103
すいません、意味が分かりません。
サーバの負荷を考えるとgzip圧縮処理は必要なのでしょうか?
0105nobodyさん
垢版 |
02/10/17 14:11ID:???
>>103
2ちゃんねるのログ(300K)

サーバで圧縮(100K)

HTTPで転送(転送量1/3でウマー)

ブラウザーで解凍、表示
0107nobodyさん
垢版 |
02/10/17 14:23ID:frKHjIQw
>>104
>>>103
>すいません、意味が分かりません。
禿同。
サーバ負荷軽減だけでなく、帯域の負荷を減らすことで
単位時間内のリクエスト数を伸ばすことが出来るのでgzipが
有効な場合もある。
0108nobodyさん
垢版 |
02/10/17 14:32ID:???
>>104
転送「量」でしょ、ご「教授」でしょ。
日本語大丈夫ですか?って書こうかと思ったがよ。
漏れは、そんなに更新が激しいデータじゃなきゃ、
1回のgzipで何人分かができて、転送のためにファ
イルアクセスされる時間が減るから、gzipした方が
いいと思って言ったんだけどね。解凍するのは、
ユーザだから知ったこっちゃないし(藁
0109nobodyさん
垢版 |
02/10/17 14:44ID:C3AsJ9gC
htmlの場合、gzに対応していないブラウザのために、
(ある程度のシェアがあると言われているMacのIEでも対応していないのがある)
無圧縮のやつも作らなくてはいけないのが不便

これとは別に、PHPで、出力をダイナミックに圧縮、非圧縮とかえるには
どうしたらいい?
0110nobodyさん
垢版 |
02/10/17 14:54ID:???
>>109
 output_handler = ob_gzhandler
 
昔のバージョンだと駄目だが、4.2.xなら
Accept-Encoding: gzipの有無に依って
圧縮、非圧縮をダイナミックにおこなってる。
マニュアルみれ。
0111nobodyさん
垢版 |
02/10/17 14:55ID:lo6hZWi4
>>108
gzip圧縮処理ってリアルタイムじゃないの?
(調べもせずにものを言ってみました)
0112nobodyさん
垢版 |
02/10/17 14:59ID:???
>>111
リアルタイムはpopenとか使って出力をgzipにパイプしたときでしょ?
>>108が言っているのはgzip圧縮されたファイルのことじゃない?
0113112
垢版 |
02/10/17 15:01ID:???
サイト丸ごとアップするときはtar+gzipでアーカイブにしてからアップしています。
アップ後はtelnetから解凍。
0114nobodyさん
垢版 |
02/10/17 15:11ID:???
>>109
無圧縮のものも作った場合、どうやって振り分けているの?
「文字化けするようなら〜から入ってくれ。」と入り口に書いておくの?
0116nobodyさん
垢版 |
02/10/17 15:25ID:???
>>110
サンクス
とりあえずスクリプトの先頭に
ob_start("ob_gzhandler");
を入れてみました。
0117109
垢版 |
02/10/17 15:27ID:???
すんません
ブラウザ(モジラ)で確認してみたら、
Content-Type が text/htmlのままなんですけど。
gz転送されているのかな?
0119102
垢版 |
02/10/17 17:22ID:PB+UxjCo
>>108
ご指導、ありがとうございました。
享受の方は素で間違えていました。

gzip圧縮処理の流れは>>105さんの
分かりやすい説明どおりに把握しているのですが
まだ詳しい内容は無知なので理解できませんでした。
調べてみようと思います。
チャットのように更新の頻度が多いものについては
gzip圧縮はしない方がいいということですね。
0120102
垢版 |
02/10/17 17:26ID:PB+UxjCo
連続の投稿ですいません。負荷軽減対策において、
NPHスクリプト化はやらないよりやった方がいいと思います。
あと、チャットにおいて私は負荷を抑えられると思い、
jcode.plをrequireしていません。(文章おかしくてすいません)
これは不具合が出るものなのですかね?
0121nobodyさん
垢版 |
02/10/17 17:28ID:???
mod_gzip とか mod_deflate 使ってる?
0122102
垢版 |
02/10/17 17:29ID:PB+UxjCo
>>121
mod_perlとか耳にしますがよく分からないのです。
共用サーバでも使用可能なのでしょうか?
0123102
垢版 |
02/10/17 17:30ID:???
バイトの時間が来てしまいました。レジをうってきます。
ここはブックマークしておくのでまた、参考にさせてもらいます。
0124nobodyさん
垢版 |
02/10/17 20:52ID:???
mod_deflate って 2.0 からなのか〜(残念
0125K
垢版 |
02/10/17 20:55ID:???
>>111
俺は転送量下げるために自作したよ。
更新の少ないものはキャッシュすれば良い。
でも、mod_gzipで良いんだよな……。
つーか、ob_gzhandler知らなかったYO(自爆
0126nobodyさん
垢版 |
02/10/17 21:22ID:???
>>116と同じで、俺もスクリプトの先頭でgzip圧縮転送をしている
ob_start("ob_gzhandler");
これは、html出力をバッファしてgzip圧縮して送信するものだから、
鯖側は圧縮の分負荷が高く、ブラウザ側も徐々に表示されず一気に表示する(少し待たされる印象)
その代わり、転送量が減る・回線が細くても多少マシという利点がある。
ケースバイケースだが、負荷を減らそうというスレの趣旨には合わないんじゃないか?
#つか、1行追加するかしないかだけの話だがね。
0127nobodyさん
垢版 |
02/10/17 22:14ID:???
俺は試しにチャットのログ表示部をgzipしたけど、
表示は体感できるほど速くなったよ
リロードしても、ちらつきが無いと言うか、
圧縮無しだと、まばたきする感じなんだが、それが無くなった。
鯖負荷は、MRTGやTOPコマンドじゃ解らなかった。(多分ほとんど負荷無し)

チャットは計6部屋で共有鯖なら追い出される位の参加人数。
いちお、Perlでgzip対応ブラウザかどうか調べて、対応してたら圧縮してる。

でも、どっかのサイトに、「鯖に余裕があるならgzipをするべし」
みたいな事書いてたから、圧縮に多少負荷がかかるんだろーね
0128109
垢版 |
02/10/17 22:14ID:???
>>126
マニュアルのコメントによると
For just a small bit of processor time, you can DRASTICALLY reduce the bandwidth requirement of your scripts. There are very few circumstances in which this should not be used.
っていわれてるけど
0129109
垢版 |
02/10/17 22:15ID:???
それに、ブラウザでの表示の方法は、ブラウザのbehaviourじゃない?
0130109
垢版 |
02/10/17 22:18ID:???
>>126
「負荷」はプロセッサの「負荷」も回線の負荷も両方考えるべきでは?
WebProgでは特に
0131nobodyさん
垢版 |
02/10/17 22:21ID:???
ナローバンドのみ圧縮とかできる?
0132126
垢版 |
02/10/17 22:54ID:???
>>130
そうだね。あとはメモリを無駄に使わないという所かな。

>>131
出来ない。家を出発前に渋滞を予想できないのと同じ(か?)
0133109
垢版 |
02/10/17 23:09ID:???
>>131
鯖がナローバンドだったらわかるかな
クライアントならわからん
0134nobodyさん
垢版 |
02/10/17 23:24ID:???
ホストで調べるとか…
ブロードバンド特有のホスト名が付いてるトコってあるじゃん?
調べまくって自分でデータベースを作る。
すっごい時間と労力がいるけどね…
0135109
垢版 |
02/10/17 23:48ID:???
思いついた。

最初にアクセスしたときに、リモホをとってPINGしたりして
疥癬の早さを調べる。それでgzするかしないかを決めて、
その結果をクッキーで食わせる。

0136126
垢版 |
02/10/17 23:58ID:???
UIがあるなら、圧縮転送する/しないを選択させれば良いじゃん。
CGI側で判断するものではないだろう?
0137102
垢版 |
02/10/18 01:03ID:???
http://www.abi-station.com/
ここのAbicorporationという掲示板と居酒屋チャットというチャット、
ソース見ただけで頭が痛くなるのは俺だけだろうか。
0138nobodyさん
垢版 |
02/10/18 01:13ID:???
>>137
それはABI言語で書かれていますw

ってかスレ違い?
負荷が凄そうって言いたいの?
0139102
垢版 |
02/10/18 01:23ID:???
>>138
負荷がすごそうっていいたいのですw
シェアウェアで爆弾売ってるようなものっすね。

ちなみに俺がCGIチャットで一番、負荷をかけないのは
「ぞのちゃっと」だと思うのですがどうでしょう?
0140nobodyさん
垢版 |
02/10/18 03:17ID:???
>>139
俺のチャットが一番軽いと思う。
PHPだし、面倒だから配布はしてないけど。
でも、現在のメンバーを表示すると重くなるね。
FlashやJavaAppletの方が良いに決まってるからsage。
0143nobodyさん
垢版 |
02/10/18 12:46ID:GnEXGk2/
>>140
すごく興味があります。
ぞのちゃっとはC言語ですがphpはそれよりも軽いのでしょうか?
0144nobodyさん
垢版 |
02/10/18 13:57ID:LQtlqqOK
>141
設計によるけど、単純に負荷軽減つながるはず
0145144
垢版 |
02/10/18 13:59ID:LQtlqqOK
てか、、、、、、ほんと設計しだい
0146nobodyさん
垢版 |
02/10/18 18:55ID:3gkhdVf3
今、2チャンネル型のスクリプトをPHPで作っているのですが、
やっぱりフロート型って、負荷大きいですよね。
(書き込む人夜読む人の方があっと言う的に多いので、)
htmlファイルを生成したのだが、名前部分のクッキーが読み出せない
仕方なくJSで読んだのだが、文字化け。
PHPで食わせたクッキーはJSで読むとうまくいかないのか?
0147nobodyさん
垢版 |
02/10/18 19:15ID:???
>>146
化けない文字コードでクッキーを焼く。
ブラウザのお口に合うクッキーを食わせる。

など…
0148146
垢版 |
02/10/18 19:52ID:3gkhdVf3
>>147
サンクス。MBCS関連充実してきたので、UTF-8で試してみます。
しかしまあ、urlencode-decode間でしてくれるうえにグローバル変数に自動的に入る
PHPに比べて、JSはめんどくさいですね。
0149nobodyさん
垢版 |
02/10/18 21:31ID:???
JavaScript なのか JScript なのか……
0150nobodyさん
垢版 |
02/10/19 00:01ID:???
JavaServletかもしれんぞ。
ま、146は単語もまともに打てないほどの面倒くさがり屋さんと言う事で。
0153126
垢版 |
02/10/19 18:09ID:???
さがっているねぇ。この板の負荷にならないようにしているって事なのかなぅ(上出来
0154102
垢版 |
02/10/19 23:31ID:???
ネタがないですねw
0155\
垢版 |
02/10/20 10:09ID:ASG3cWoM
PHPの掲示板でログファイルが500kBあるんですが
消さないと負荷って凄いですか?
0157nobodyさん
垢版 |
02/10/20 10:38ID:???
>>155
あなたの「凄い」がどの程度なのかわからないけど、
その掲示板のコードにもよるんじゃない?

掲示板のログで500kbだと3000行近くなってるんじゃない?
読み込んだり書き込んだりするのに、3000回ループする様なコードを書いてるんだったら、
考えモンだね…

ファイル丸ごと読み込んでるんだったらメモリも食うし
0159102
垢版 |
02/10/20 12:08ID:q/B8ESF1
すごい厨房な質問ですいません。
例えば500kb(300行)のログファイルがあって

open(IN,"ろぐふぁいるぱす");
@lines=<IN>;
close(IN);

というように配列に内容を入れた場合
ファイル丸ごと読み込んでることになるのでしょうか?
0161デフォルトの名無しさん
垢版 |
02/10/20 12:24ID:/npcfUW0
>>159
Perl初心者コーナーで一行ずつ読み込んで処理するのと
どっちが早いか議論してたさ。readで読み込むのも比較
してたで。2・3日前だっけな。

0162nobodyさん
垢版 |
02/10/20 13:32ID:???
一行ずつ処理したとしても、Perlでは本当に以前に使っていた領域が開放されているかどうかはわからんな。
Perlを開発している人たちなら分かるだろうけど。
0163nobodyさん
垢版 |
02/10/20 13:41ID:???
>>162
>以前に使っていた領域が開放されているかどうか

以前に使っていた領域って、変数のことだろ? 1行ずつ代入しては処理を
繰り返してるから変数に代入されてる分は領域だろ? 開放もなにもないだろ
0165164
垢版 |
02/10/20 13:47ID:???
ちなみに領域というのはメモリー上に確保した領域のこと。
0166nobodyさん
垢版 |
02/10/20 13:58ID:???
>>164
>C言語でも勉強してきて。

( ´,_ゝ`) プッ
0167nobodyさん
垢版 |
02/10/20 14:32ID:???
>>120
NPHスクリプト化でnph-chat.phpは可能ですか?
NPHはPHPでも使えるのでしょうか?
0171nobodyさん
垢版 |
02/10/22 03:41ID:???
俺はZ80とかFortrunとか変な言語でCGI作るのが趣味なんだ
0172nobodyさん
垢版 |
02/10/22 04:31ID:???
Fortrunという言語はたしかに変ですなあ。
0173カミ
垢版 |
02/10/22 13:51ID:haL4weU7
キタ━━━━(゚∀゚)━━━━ッ!!キタ━━━━(゚∀゚)━━━━ッ!!キタ━━━━(゚∀゚)━━━━ッ!!
さあ、何でも聞いてよ。
0174カミ
垢版 |
02/10/22 13:54ID:haL4weU7
カエッタ━━━━(゚∀゚)━━━━ッ!!カエッタ━━━━(゚∀゚)━━━━ッ!!カエッタ━━━━(゚∀゚)━━━━ッ!!
時間がなくなったので帰ります。
0175102
垢版 |
02/10/22 15:04ID:nYDyJAf0
>>172
高度な突っ込みですね。
0177126
垢版 |
02/10/22 15:38ID:???
>>175
じゃあ、Z80は言語じゃない、なんて突っ込みも許されるかひ?
0178nobodyさん
垢版 |
02/10/22 16:10ID:???
>>171

Fortrun という言語について、詳しく教えて下さい。
0179nobodyさん
垢版 |
02/10/22 18:50ID:???
>>177
Z80は言語じゃない、ガラスです
ttp://www.watch.impress.co.jp/av/docs/20021022/sharp.htm
0180nobodyさん
垢版 |
02/10/23 13:13ID:dAD4Tigy
Perlの一般的なスクリプトの場合、
ログを読み出すとき出力を直接printで表示しているけど、
出力を$buffer .= "〜";というように一つの変数にまとめておいて
最後にprint $buffer;とした方が速いのかな。
imode用のスクリプトはContent-lengthヘッダを出すためにそうしてるけど。

変な日本語でスマソ
0181nobodyさん
垢版 |
02/10/23 15:19ID:???
最初が表示されてから最後が表示されるまでは速いだろうが、
最初を表示するまでが遅くなるだけじゃねーの?

imode程度なら良いけど、メモリ食うだけじゃない?
0182nobodyさん
垢版 |
02/10/23 15:53ID:???
>>180
2chのread.cgiがまとめて表示だったら嫌だ。
0183 ◆hMJAPH9PWA
垢版 |
02/10/23 18:46ID:???
>>180
出力する量にもよるだろうけど、最後に一気に出力の方が早いって事は無いんじゃないかな。
Content-Lengthが必要ないならあえて選択する方法じゃないね。
0184102
垢版 |
02/10/23 22:07ID:???
思ったんですけどKENTさんのYY-BOARDって無駄な処理が多くないでしょうか?
レスのトップソートがある場合、ない場合とかもっとスマートにできそう。
0185nobodyさん
垢版 |
02/10/23 22:32ID:???
>>184
ガイシュツすぎる
Kentの使わないで自分でいいやつ組むのがよろし。
0186102
垢版 |
02/10/23 22:34ID:???
>>185
そうなんですか。KENTさんもバージョンアップの繰り返しで
無駄な処理を省くのが面倒なんでしょうね。
今、YY-BOARDを元に新しい掲示板を作っています。
0187nobodyさん
垢版 |
02/10/24 08:03ID:???
Kentを元にするなって。
最初から作った方が、良いものが作れる。
0188nobodyさん
垢版 |
02/10/24 10:36ID:???
ニュースCGI(読み込む時に常に1MBのlog.csvを読み込む)を、
ログの容量減らす以外でこのスクリプトの負荷を軽減する方法を
いくつか教えてください。

又、これってApacheのモジュール版PHPに変えたら負荷はなくなりますか?
0189nobodyさん
垢版 |
02/10/24 11:44ID:???
ニュースCGIを使うのを止める。
0190nobodyさん
垢版 |
02/10/24 11:59ID:???
>>189の方法が一番負荷が減るけど。
後は、何で全部表示するのにcsvにするの?最初からhtmにしとけばぁ。
ほいで、前から議論に出てるgzipで固めればぁ。
何かのキーで検索するんなら、DBMにすればぁ。
早いし全部ファイルを総なめにする必要ないから負荷激減だね。
0192nobodyさん
垢版 |
02/10/24 12:51ID:???
>>189
いや、つーか・・ええ!?

>>190
CGIの拡張子をHTMLにしてもだめですかね
ダメですよね・・・
0193nobodyさん
垢版 |
02/10/24 12:54ID:???
負荷下げたいならapache2.0+mod_perlでいいんじゃねーの?
要はプロセス作成が重いんだし。
あとは、スクリプトのアルゴリズム次第。
0194102
垢版 |
02/10/24 14:02ID:???
>>187
open(IN,"?????")||&error("情報ファイルを開くことが出来ませんでした");
($no,$ip,$time)=split(/<>/,IN);
$no++;
close(IN);

最後にこれくらいの処理だけが面影として残ってる場合は著作権表記は必要ないと思いますか?
0195nobodyさん
垢版 |
02/10/24 14:24ID:???
>>194
コードの面影が残っていなくても
設計の面影が残っていたら著作権表示は必要(だと思う)

しかし、現行の著作権法では、「アイデア」には著作権はなく、
具現化されたモノにのみ著作権があるので、大丈夫かな。

しかし、著作権以外の知的所有権はあるね。

まあ、ここは、KENTにどのくらい「リスぺくと」してるかによって
自分で決めればいいんじゃない?

…と勝手なことを逝ってみる
0196102
垢版 |
02/10/24 14:40ID:???
>>194
>>193の部分を記述がめんどくさいのでコピっただけなのですがね。
参考になりました。スレからすれてすいません。
0197太郎
垢版 |
02/10/24 16:43ID:???
>>195
MAKIMAKIは消していいですか?
0198nobodyさん
垢版 |
02/10/24 19:17ID:???
>>196
>スレからすれてすいません。
( ´_ゝ`)

>>197
画像使うんなら消しちゃダメでしょ。
0200nobodyさん
垢版 |
02/10/25 00:28ID:???
そんなん知るかボケ。本人に聞け。
レスを投稿する


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