★負荷軽減対策委員会(Perl、PHP)★
> [ネットランナー]
> ベスト・オブ・ツール 2002
> サーバ&コミュニティ部門 掲示板CGIカテゴリー
> (祝) 金賞受賞
これはすごいことなの? >>570
「ネットランナー」って読んだことないです
とりあえずぐぐってみたら、
http://www.zdnet.co.jp/internet/runner/
> 超ヘビーユーザーになるためのインターネット活用誌
( ゚д゚)ポカーン >>571
厨房の愛読書だよ
賞もCGIの人気とか上っ面だけしか見てないで取ったりして、
作る人から見たらひどいソースのものも入賞してる うるせぇよ、年末の賞の審査員は有名サイト管理者を寄せ集めてるんだから、
それには文句いうの(・A・)イクナイ!! まあ、実際使う側からしてみれば、
たいていのやつがソースなんてどうでもいいんだがな。 ちょっと使ってみた
重(・A・)イイ!!
返信で無制限にファイルをアップロードできた
ファイルタイプの判別を拡張子のみでやってる
設定でどうにかなるかもしれないけど
とりあえず気になったのはこんなところ ていうか、コード酷すぎ。
配列の使い方すらわかってないように見えたし、変数全部グローバルだし。
関数の使い方も変だし。 ネットランナーとかいう雑誌のレベルがわかっちゃうな >>566
ネットランナーとやらでは金賞かもしれんがバグ放置はまずいと思うぞ。
常にSTDINから無条件で受け入れる仕様。
投稿記事がある状態で-Tを付けて起動するとrtn_gnrl.plで起こる無限ループ。
管理用ページ→基本設定→「記事ページ最大表示数」を空にして設定保存→掲示板へ戻ると
Lib_gnrl.plで0除算して二度と起動しなくなる事で負荷を下げるエレガントな仕様、等他大量。
>>581
> 負荷を下げるエレガントな仕様
禿しくワロタ
[Tue Dec 02 20:31:53 2003] [error] [client 127.0.0.1] Illegal modulus zero at ./routine/Lib_gnrl.pl line 514.
[Tue Dec 02 20:31:53 2003] [error] [client 127.0.0.1] Compilation failed in require at bbs.cgi line 35. こんなとこで陰口たたいててもしょうがない。
直接言ってやらないと。 Linuxサーバ、topで調べてみたら
毎晩httpdにCPU20〜89%くらい使用量があって
サーバが激重なんですが、原因がはっきりしない…
Apacheやネットワークの設定をどうにかこうにかして
負荷を減らす方法無いですか? >>587
どのようなスクリプトを実行させているか、で話は変わってくる。
>>587
非力なwwwサーバで山ほどモジュール組み込んで激重CGIでも置いてるんだろ >>589
2ショットチャットとか画像アップローダとか・・。
>>590
えーっとサーバは確かPenIVの2GB、RAM1GBだったかな。 PenIVの2GB
PenIVの2GB
PenIVの2GB
PenIVの2GB
PenIVの2GB すれ違いと言われたのでここにきました。
my($a,$b,$c);
とするのと
my($a);#コメント
my($b);#コメント
my($c);#コメント
と書くのでは、処理速度や負荷に差がありますか?
配布とかメンテを考えると後者で書きたいんですが。
全体で150KBくらいになるCGIソースで
処理によってはルーチンのうちのほんの一部しか
使わないという場合、
処理をライブラリにしてrequireするのと
全体が1ファイルなのとどっちが効率いいのでしょうか?
計測ってどうやってやるんですか?
でっかい実行ファイルを起動するのと
ちっちゃいのを起動してrequireするのと
どっちが軽いかという問題だと思うんですが。
>>606
負荷が気になるなら負荷を調べる方法ぐらい知っておいたほうがよろしいかと >606
そもそも、あなたの「軽い」ってどういう意味ですか? >>606
requireのとこまで来たら結局全部読み込まれるのではないかな?
処理順では通らない部分のrequireも
スクリプト内にあるとrequireされるんでしょうか?
requireを見つけてからrequireする? >>611
そんな簡単なことぐらい試せばわかるだろ #!perl
if ( 0 == 1 ) { require './存在しないスクリプト.pl'; }
exit;
一枚岩で作って、え〜となんだっけか名前わすれたけど
一回実行したらメモリー上にキャッシュして次回から高速実行するツール
あれ使ったほうが軽さという面では圧倒的(ただしCPU負荷)
回線負荷は変わらんし大概先に満杯になるのは回線帯域のほうだ
perl、phpの中でだろ?
共有鯖での利用を考えてる人もいるだろうし 7行プログラムってスレ、すごいねアレは。
でも、短くするために敢えて重い処理をしていることもあると思うんよ。
それでも短いから負荷は感じないわけだけれども。
単純に処理を軽くする以外にも、コードを小さくする負荷軽減もあるんやねぇ。 言ってること矛盾してるじゃん。
>短くするために敢えて重い処理をしている
>コードを小さくする負荷軽減もある
ドキュンやな。
翻訳を試みた。
ある処理をする際に
A: 複雑な処理をする組み込み関数を使う
B: 単純な処理をする組み込み関数をいろいろ組み合わせる
の2種類の方法があるとして
Aの負荷 < Bの負荷
ってこと? >>620 YES.
そういう場合もあるんじゃないかと思ったので。 HTTP/1.1 のチャンクコーディングを忘れてない?
試しにnph ソースを作って、Content-Length を送信するようにしたら、
チャンクコーディングされなかったけど、接続が毎回切れるみたい。
どっちが良いのか微妙っぽい。
A.. if($aa=~/x/){$pa=1;$pb=1;}else{$pa=0;$pb=0;}
B.. $aa=~/x/?($pa=1,$pb=1):($pa=0,$pb=0);
等価らしいです
ソースは、ttp://ww4.tech.nu/?d=653
たしかにコードは短くできるので試したところ
レスポンスが悪く、重くなった気がします
>>625
三項演算子使ってるだけでしょ、普通に使うけど。
レスポンスは落ちるのかなぁ? PHP普及の原因は、イスラエル・Zend社のマーケティングの成功にある。
@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
Cで組め。手っ取り早く最速で負荷を極力少なくできる。
負荷を少なくするならまず、
データ構造とアルゴリズムを見直せ
次にCPUをグレードアップしろ
それでもダメならCか汗ブラで PHPって
Personal Home Page の略? なんで掲示板をテキストファイルに出してるんだ?
データベースに入れてしまうのってよろしくないの?
最後の方を読む時とかに早いと思うんだけど。 2chの話になるけどさ、sageで書き込みするとスレッド位置が変わらず、
index.htmlとsubback.htmlの更新・ソートを省略できて負荷軽減に繋がらない?
と思ったけどレス数表示のために更新しなきゃならないか…。
もう少し工夫すればなんとかなる気がする。 >641
マジレスするとそんな低レベルの操作をしたら
処理中は他の処理が出来なくなるだろうが 掲示板なら静的HTML生成が一番簡単で一番効果がある。
スクリプトをあれこれこねくり回す前に試してみれ。 javaでクッキーを保存する方法が載ってれば全部HTMLにするのに >>644
それは理解した上で別の方法を模索するスレなのでは? javascriptでクッキー出力はできるけど・・・多分違うことなんだよな >>649
ようするにHTMLでクッキー機能できるようにすりゃいいってことでしょ?
セットはcgiですればいいから、あとはそれをJavaScriptでゲットすればいいんだよ。 ファイルの読み書きはperlのキモの部分だから、せめてこれだけは理解しましょう。 javascriptでゲットする方法が載ったサイトきぼん
htmlの不都合点とかあるかな?
NEWマーク表示できないくらいしか思い浮かばん
いらん機能だし HTMLの不都合は、たとえばSSI使わないとカウンターが表示できないとか。 オールHTML化するとレイアウトを変更したときが面倒なんだよなぁ。
ファイル数も結構増殖していくし。
それくらいかの。 HTMLでクッキーとか機能させるって言ってるけどIE以外は無視?
operaやMozillaだと文字化け起こすぞ IE以外いいよってみんな思ってるんじゃない?
実際そうだし2chもそうだからいいかな、と。 tcupの掲示板てどうなってんだろう。
拡張子無しで/bbsってなってるのが昔から不思議で。
googleなんかのuri表示で見ると、
http://xxx.teacup.com/yyyy/bbsだと、
www.tcup-.com/xxx/yyyy.htmlが本体らしいんだけど。 javaだとIE以外じゃ日本語取得できないのかorz
みんな妥協派ですか? 閲覧時にクッキー使ってなにがしたいの?
投稿時ならともかく。 お!早い。
切替ならそれぞれリンクを用意するだけで済むのでは?
閲覧時のクッキーってストーキング用途しか思いつかない。 >>674
それだけしか思いつかないおまいの脳に乾杯 >>664-667あたり
2chで化けるのはbbs.cgiで発行してJavaScriptで取得してるからじゃ? つーか無理にHTML表示なんかせんでもいいよ。
動的にやればインタラクション的にも手軽になんでも出来るし。 掲示板の1ページ目だけだけど
HTMLにすんのとしないのとじゃけっこう差出るの? htmlファイルに書き出すかどうかは、そのサイトへの訪問者の利用状況によって異なる
一概に○○なら△△とはいえない。
まあ、統計的に、そのページが更新されるまでに10回以上アクセスされるとわかれば、
一般的にはhtml化した方がいいだろうな。
式にすれば
html化するコスト << html化しない場合のCGI起動コスト * not modify間での平均アクセス数
の場合は、html化のメリットが大きい まあHTMLよりCGIの方が負担少ないなんてことはないな まあHTMLにしないで負荷を軽減する方法を模索していくのもいいんでない? むしろHTML化できないからプログラムの負荷を下げる必要があるんじゃね?
本当に負荷を下げたいならCGIなんか使わずサイト丸ごと圧縮しておくのが一番だろうし。
俺はCGIを作る側だけど実は↑これが一番好き。 しかしコスト(時間や手間込み)単位での効果ならやはり静的HTML生成がベストチョイスなのも事実だし。
まあ両面作戦だね。 1, Requests per second: 2.67 [#/sec] (mean) perl/cgi
2, Requests per second: 17.53 [#/sec] (mean) mod_perl (1と全く同じソース)
3, Requests per second: 60.22 [#/sec] (mean) html (1,2のプログラムで出力された物をhtmlで保存した物)
DBIやarchive等、結構重いモジュールを読み込んでDBにアクセスして表示するプログラム。mod_perlのDBアクセスは永続化している。
処理内容によって一概にいえないけど1つのパターンとして参考までに。
静的htmlだとカウンターだのダイレクトに表示出来ないしクッキーも文字化け(IEではunicode,xxxだとURLencodeだの)
等の問題が発生してめんどくさい。クライアント依存の処理はやはり気持ち悪い。 >>687
これって数字高い方がいいってことなの?
ベンチマークに無知でスマソ
確かに文字化けるんだよな・・・
ユーザにHTMLとCGIモードを選ばせるようにしたらいいかも 書き込みのときjavascriptでクッキー発行すれば化けんよ。 「>>1」
このアンカー、2chではタグをアクセスごとにつけてるんだっけ? >>690
んだよ、ほれ。
http://pc5.2ch.net/php/dat/1034645635.dat
サニタイジングもregist時にやってるな。
2chは書き込みも多いが、それ以上に読み込みが凄まじいからな。 質問なんですが、
リンクトレードproやThe Roomのランキングリンクのようなエロサイトによくあるランキングを
PHPで作ってみました。ユーザーごとに情報を1行CSVに保存させて、それがカウントファイルも兼ねてます。
表示部分は静的です。
出来上がったところで、上司に負荷かかりそうだからDBにしてよと言われ、MySQLで作り直してみたところ、
現在ユニーク1万/日くらいのサイトであっというまにMySQL接続数多杉エラーが出ました。
サーバ管理者にMySQLの接続数多すぎと出ましたと言ったところ、
設定変えることもできるけど、トラフィック多いサイト目指すならPostgreSQLにしたほうが良いといわれました。
今とりあえず素直にPostgreをサイト見ながらソース書き直してますが、
一体どの方法がベストなんでしょうか。
ちなみにPHPは趣味レベル、DBの経験は今年からなのでソースに問題があるのかもしれません・・ >>693
postgresにすれば良いってわけじゃないような。
ユニーク1万/日ぐらいだと、squidでリバースプロクシを導入してみるとかは? >>694
今後増える予定です。目標が10万PV/日くらいです。 >>695
同時接続数を増やせないなら、1接続あたりの接続時間の短縮をやらんといけない訳で。
もうクエリを発行しないと分かった時点でコネクション切断とか、
そのレベルの最適化はやってるよね?
初心者らしいから言ってみると、WHERE句、LIMIT, OFFSETで取得数を限定して、
DBから取得したけど使わず捨てているデータを削りこむとかやってみそ。 >>696
やってるつもりなんですが、、
inのカウント取得ファイルのソースをコピーしてみます。
http・・・xxx.php?usrid=$usridで叩いて、DB開き。
$tabledata = mysql_query("SELECT * FROM usr_table",$db);
//配列に入れ
while($row = mysql_fetch_array($tabledata))
{$usr_array[$row[usrid]] = $row;}
//t1フィールドに直前IP記録&カウント
if($rmhost != $usr_array[$usrid][t1]){
$incountup = mysql_query("UPDATE usr_table set incount = ceiling(incount + 1) where usrid = \"$usrid\"");
$ipupdate = mysql_query("UPDATE usr_table set t1 = \"$rmhost\" where usrid = \"$usrid\"");
}
mysql_free_result($tabledata);
mysql_close($db);
if( !$db ) {
print "接続できません。<br>\n";
exit;
}
header("location:{$homeurl}");
これだけです。これで動いたんですが、やっぱり記述おかしかったりしますかね、、? まさか mysql_pconnect とか使ってないよね? >>693
ランクカウント以外の部分(順位の表示とかカテゴリ参加数の表示とか)はどう処理してる?
もしリアルタイムでやってるなら、静的なHTMLで処理するとかcronで処理させるとかすると、
劇的にコネクト数は減るよ。
ユニーク1万にも耐えられないならDB使う意味ないし、Postgresにすりゃいいってもんでもないと思ふ。
やはり、設計段階からの見直しが必要かと。。
毎秒何回ぐらいqueryの発行あるか分かるなら書いてみて。 mysql_pconnect思いっきりつかってますが、、それって駄目なんですか?
>>699
順位他の処理は、3600秒ごとに静的に書き出してテキストファイルをrequireしてます。
cronではなく、テキストファイルにタイムスタンプ書き出してアクセスごとにチェック、前の書き出しから+3600秒以上経っていたらランキング再書き出し、という感じです。
>ユニーク1万にも耐えられないならDB使う意味ないし、Postgresにすりゃいいってもんでもないと思ふ。
ですよね。。
毎秒何回query発行あるか、どこで見れば良いんでしょう。。
とりあえず今はサイト止まってしまうので旧テキストファイル版に戻してしまいました。 >>700
やはりそれぢゃったか
mysql_pconnect して DB に接続すると
mysql_close しても
スクリプトが実行を終了しても
それどころかクライアントがブラウザを閉じた後も
DB接続が切断されずに残り続けるんぢゃよ
つまり今の状態だと mysql_close が全く効いておらん
これは接続をプールして再接続の負荷を減らすためのGJな機能なんぢゃが
DB接続数上限が逼迫している状態では逆に足を引っ張ってしまう両刃の剣
素人にはお薦めできないとまでは言わないが、注意して使わんといかんのぢゃ
mysql の最大接続数を apache の MaxClients より大きく設定する、とかぢゃな
とりあえず mysql_pconnect を myqsl_connect に変更すれば
mysql_close で接続が切断されるようになるので
かなり状況が改善するんぢゃないかのう うわー、、そうだったんですか。
きっとそれっぽいですね。
大変勉強になります。ありがとうございました。とりあえずそれを試してみます。 >>697
なんてか、削り込み以前にDBMSの本をちゃんと読もうよ。。
header("location:{$homeurl}");
と、リダイレクト先URLしか要らないのに、
$tabledata = mysql_query("SELECT * FROM usr_table",$db);
ここで全テーブルデータをぶっこ抜いているのがそもそもの間違い。
ここは
$tabledata = mysql_query("SELECT * FROM usr_table WHERE usrid = \"$usrid\" ",$db);
と必要な行以外は抜いてこないように直すべき。 全テーブルぶっこ抜きの方法は、いわゆる「MySQLでかんたん掲示板」系の
入門書から取ってきたんだと思うけど、このやり方、小さな個人サイトなら
またしも10万PV/日のサイトに使える方法じゃない。
という訳で入門書以外のDBMS専門書を読むことを勧める。 perl のDBMモジュールでも
データーベースオープン
全データーを配列にコピー
データーベースクローズ
その後配列に対して処理色々なんてことをやってるスクリプトを見かけるが
全部読み込まなきゃいけない処理なら普通のファイルに保存したほうが軽くて速くないか?
>>706
早いかもしれないけど影響がでるほどの量だとすれば、
データの書き込み(更新)する必要がある場合dbでやる方が安全だと思う。 >>707
いや、だから、あのさ(w
db使うなら丸ごと読み込んだりしないだろう?普通 全ぶっこ抜きじゃトランザクション隔離のかけらも無いよなぁ 大前提として、どれくらいの規模(データと一日あたりのhit数)になったときに
プレーンテキストからDBに移行するべきなのかという目安を考えるべきだと思う。 サーバスペックやスクリプトの作りにもよるからなあ
とりあえず思いつくのは
・アクセス頻度と平均処理時間から待ち行列を計算して「ヤバ」と判断したとき
・top の load average が 1 を超えたとき
・HDDのスワップ音が聞こえるとき
・体感的に「重い」と感じたとき 表示用HTMLファイルとか作成しちゃうなら、場合によっては
小規模でもデータはDBで管理した方が良いね。 そうだな、俺もDBが動いてる環境なら規模によらず常にDBを使う DB使った方がコストが安くすむ…場合もあるからDB使っちゃうな。
こんな俺はきっと駄目なPGだ orz httpd.conf 最適化とかリバースプロキシとかの話はここではしてないの? >>721
それはWebProgを走らせる「環境」の話だから。
ここは共有鯖で使うCGIの負荷を以下に下げるかの話するスレ(機能してないけど) httpd.confみたいに説明書と設定ファイルが同じになってると萎える
コメント行削ったら半分以下になった すいません、ちょっと負荷の意味が違うかもしれない質問なのですが
CGIやPHPで大きなファイルなどのダウンロード速度の制限などを行えるのでしょうか。
検索してみても出てこなかったので
やはりサーバーの方で直接設定しないと出来ないものなのでしょうか。 普通はmod bandwidthとか使ってやると思うけど・・ >>724
スクリプトでファイルを読んで、pushするなら出来ないことも無い。
でも回線負荷は下がるかもしれんが、サーバの負荷軽減にはならんでしょ。
普通は>>725の通り。スクリプトでファイルを送り出すなんてしない(高負荷)。
となると,DBにファイル放り込むのはよくないのかな 教えていただき、ありがとうございました。
やはりサーバー側で直接行う方がスマートで負荷低減になるのですね。
当方サーバー側をTelnet出来ない専用サーバーをレンタルしており
スクリプトでどうにかならないか考えておりました。
SQLite機能がついており、ファイル制限が出来るらしいのですが
DBもやめた方がよいとのことで、
ありがとうございました。 >>727
管理上の必要があれば、DBに放り込むこと自体が悪いわけではない。 >>728
専用鯖なら負荷かかってもいいんじゃないの >>728
専用サーバなのにTelnetできないのかww ちょいと具体的な話でなくてもうしわけないんですがとあるWEBアプリケーション(phpからpostgresを使ってるらしい)について相談をうけまして
ちょっと覗かせてもらったらapacheのプロセスがひとつ毎に10MBほどもメモリーを消費しちゃってるんで、一瞬、え?っと思ったんですが
当方phpもpostgresもあんまり詳しくありませんのでもしかしたらこの構成だと普通の状況なのかな?とも思いまして質問させていただきました
phpはapache2.のモジュールとして組み込んで有ります。
それくらいふつうだろとか、直感的になんかあやしいとか、プログラムがタコだとそうなるとか、感想をお願いします
>>734
要約するとapacheのモジュールとして組み込まれたphpからpostgresqlを使ったらメモリーを10MBガメるのは普通ですか?
ってことだな
ただ単にApacheに色々組み込みすぎて肥大化してるんじゃない?
>>736 thx
ただのリクエストで、どれだけ消費するか見てみないと、なんともいえないね。 >>733
>apacheのプロセスがひとつ毎に10MBほどもメモリーを消費しちゃってるんで
普通。 正しくは
>phpはapache2.のモジュールとして組み込んで有ります
のような状況の場合、普通。
(PHPのエクステンションを極力動的に組み込めば減るけど) PHPってメモリー食いなんですね
もしかしてCGIから動かしたほうがいい?
>>741
10メガ位でけちけちすんなよ
別プロセスで立ち上げると負荷かかって遅くなるし >>741
その代わりPHPを使うリクエストがくる度にロードすることになるから
今度はCPU負荷が高くなるよ。まあサイトの特性で考えれ。
共有サーバなんかはセキュリティを高めるにはCGIで動かすしかないしな。
(例えリクエストの度にロードされてレスポンスが悪くなるデメリットがあるとしても) >>743
>共有サーバなんかはセキュリティを高めるにはCGIで動かすしかないしな。
何故? データの無駄な二重化が無いから負荷は軽減すると考えてもいいんじゃ?
間違ってたらスマソ データがコピーされるのは,値が変更されるときでは?
$a = $b ってしてもその瞬間にはコピーされない. らしいね。
だから、PHPでは「パフォーマンス重視の参照渡し」は
ほとんど無意味ってことかな。 C ならともかく,スクリプト書きながらそういうレベルのパフォーマンス向上を考えること自体間違いな気もするね.
むしろインタプリタだから「少しでも速度向上」を気にするのでは? >>741
eAcceleratorなんか使ったら相当違わない? >>751
要するに PHP を選択してる時点で既にパフォーマンスよりも開発効率を取ってる,ってこと.
速度上げたいなら重い処理だけ C/C++ 使うとか,あるいはハードウェアで解決するとかしたほうがいいんじゃないかな.
アルゴリズムの最適化はもちろんするけど. アクセラレータつかったりFCGI化するだけで天と地ほど違うぞ
インタプリタだからこそ工夫するというのはその通りだけど、
ざっくり体感に跳ね返ってくるレベルで考えたほうがいいと思う >>733
たかだか10Mだろ?
そこメモリ何Mのマシン使ってんのよ?
32Mとか?w
このスレッドで聞いていいかな・・・?
DBサーバとフロントサーバを分ける場合、
両者はやはり同じLAN内に設置するのが基本ですか?
離れたところに置くと、レスポンスはけっこう遅くなります?
>>758
物理的な距離とレスポンスは関係ない。
LANであろうが回線が遅ければ遅い。
WANであっても回線が速ければ速い。 マルチだけど答えておくか。
セキュリティを重視して分けておけ。 どもです。
同じLAN内に設置すべき、っていうわけでもないんですね。
でも普通はLAN内の方が回線は速そうですね。 >>761
何かLANとドメイン(≠インターネットドメイン)を
一緒くたにしてるように思えるけど。 インターネットを介さないという意味なら、プライベートIPアドレスで構成されたLANの中にウェブサーバとDBサーバを置くのが普通。 ウチはRFC1149準拠。夜間の速度が出ないのが悩み >>757
たかだか、というけど、メモリ上限のあるVPSとか借りてると結構辛いよ? 今更だが
このスレって負荷軽減の邪魔する委員会なんだろ? PHP+MySqlでユーザー認証する時、DBにはユーザーのIDやパス他の情報があるとします。
仮にそれはもうめちゃくちゃユーザーが登録されていて(かなりの負荷)、DBの読み書きをする場合以下の2つのパターンだとどちらが負荷がかからないでしょうか?
速度の点についても知りたいです。
1.1つのテーブルに全員分登録しておき、普通に読み書きする。
2.ファイルに「ID+その人が使用するテーブル」を記述しておき、それを読み込んでから、複数用意されてるテーブルの中から指定されたテーブルを動的に選択して、読み書きする。
どうなんでしょ?質問+保守上げ。 あ、2の複数テーブルはまぁ10個くらいとします。
仮にデータが50000件あれば1つのテーブルは5000件で済むということになりますよね? >>776
試して測ってみんなに報告。これで皆幸せ。
多分1の方が効率的だと思うけど。
レスありがとうございます。やっぱり1ですかね。
2だと他に色々やりたい時不便になってきますよね。
地道にプログラム面を改善していった方がいいのかもしれませんね。 >>778
2chはテキストファイルベースです
言語はC
>>776
1の方
DBの負荷を下げたいのなら、テキストファイルベースの処理を上手く使うといい 2chはperl+SpeedyCGIで、一部Cじゃなかったっけ? bbs.cgi=Perl
read.cgi=C
だったかと bbs.cgi=Perl;
read.cgi=C; リレーションがいらないなら、フラットなただのテキストファイルが早いんだね。当然か。 掲示板の画像をダウソツールで根こそぎかっぱらっていく不届き者を特定した
さて、貴方ならどのような方法でdenyする? アクセスポイント絞りの範囲指定で.htaccess。 >>788
ダウソツールとわかるUserAgentならまずそいつを403へ
次に一定間隔の連続or同時接続を503へ
それでも懲りないならFWで叩き落す。 私も今、掲示板サイト作ってる途中なので、ちょっとカキコミさせてもらいますお
JAVAなのでちょっとperl、PHPスレとは違うけど共通する部分はあるので。
私の場合、某フリーソースの掲示板を元々おいてたんですけど、レス数が3万をこえたあたりから
ワード検索やレスのカキコミに非常に時間がかかるようになってしまいました。
そのCGI(PERL)はレスのログをテキストファイルに出力しているんですが、毎回何万行も読むんではそりゃ時間かかる
なという感じになってしまいました。
そこで、新しく掲示板作る時には、DB使うべきなのか、それともログ出力用のテキストファイル使うべきなのか、HTMLファイルとして吐き出す
べきなのか、どれがいいとおもいますか?
2chとかはオーバーヘッド対策でDB使わない仕様にしてると聞きました。
やっぱDBにするメリットはオーバーヘッド考えると皆無なんでしょうか?
HTMLファイルに書き出すってのは軽そうだけど検索用のメソッドをHTMLファイルに走らせると早いのかどうか不安な部分もあるんです。
関係ないのでしょうか?
過去ログを小分けにすればいいじゃん。
2chだって1000レスか512kで別のスレ立てないといけないんだし。 >>792
DBのオーバーヘッドを心配しなければいけない程アクセスが予想されるなら、
表示はHTMLで出力、読み書きはテキストファイル(もちろん分割して)すればいいし、
そうでもないならDB使えばウンコみたいに楽ちん。 >>794>>795
DB使わない前提で考えると
ということは、1スレごとにHTMLファイルを作ったほうがいいんでしょうか?
1スレ、1ファイルにしたら何万ファイルもできちゃいっても大丈夫なんでしょうか?
>>797
大変参考になりました。
こんなに役に立った外部リンクは初めてです。
本当にありがとうございます。
最初grep型の検索しか考えてなかった自分の低脳ぶりがはずかしいですw
結局、スレごとに1ファイル書き出して、Luceneを実装してこれでインデクシングして検索に対応することにしました。
Namazuに比べるとどうかな?と最初は考えてましたが、wikipediaでの採用実績を考えると問題ないとおもいましたので。
1スレ1ファイルをテキストファイルで生成して、XSLTで整形してHTML表示しようとおもいますが、YSTやGOOGLEのSEOを考えると、
最初からHTMLとしてファイル生成したほうがいいとおもいますか?
テキストファイルで生成するとpageRANKつかないですよね? >>798
何いってんのかよくわかんねえけど
ページランクはHTMLで書いてあれば、どんな形式でもつく。 おいコラ
1分おきに画像掲示板に底引き網かけてるやつ
死ね!おまえだよおまえ→.kngwnt01.ap.so-net.ne.jp
丸ごと永久規制してやってもまだやってやがる
何時間PC付けっぱなしなんだよ
火事になって死ね 質問させてください。
Webサーバ上にあるファイル(バイナリ含む)をファイルパス直接指定でダウンロードする(させる)のと、
以下のようにperlのcgiを通してダウンロードさせるのではどのくらい負荷が違うのでしょうか。
…
binmode(STDOUT);
while(1){
read(FILE, $buf, $bufsize);
last unless (length($buf));
print $buf;
}
…
目的は、IEで日本語ファイル名のファイルをダウンロードするときに
ファイル名が文字化けするのを防ぐためです。
つまりapplication/octet-streamやContent-Disposition: attachment; filename=を付けるためだけのCGIです。
もしダウンロードしている間ずっとCPU時間を使っていたら大変だと思いまして。
例えばファイルパス名指しで直接アクセスした場合の負荷を1として、
CGIを使うと10くらいになるのかあるいは1.1くらいなのかの目安が知りたいのです。
bufsizeは1024です。「bufsizeをこう変えたら負荷が減る」というアドバイスなどもあれば助かります。
ECサイトCGI(ZenCart)は
CPU負荷が特別高いのでしょうか。
ご教授お願い致します。
究極の負荷削減はクライアントPCで処理をたくさん行わせる手法である ttp://minkara.carview.co.jp/userid/108766/profile/ やたーダウソツールで画像に底引き網をかけてる奴を
.htaccessに放り込むスクリプトができたよー(^o^)ノ すべてのアクセスを拒否れば負荷はほとんどなくなるアルよ。 次のものは負荷はかかるでしょうか?
・ランキングは使わないが登録人数が300人を超すCGIゲーム(50分おきに送信)
・FLASHやJAVAを表示するCGI(1個約2MB、合計12個を1つずつ表示) >>814の者です。
>>814の疑問が解決しそうです。 ∧_∧
( ・∀・) | | ガガッ
と ) | |
Y /ノ .人
/ ) .人 < >_∧∩
_/し' < >_∧∩`Д´)/
(_フ彡 V`Д´)/ / ←>>434
/ ←>>277 主食の
魚沼産コシヒカリ
A5のサーロイン
大間のマグロ
高級メロン
の軽減税率をお願いしますねwww 転職時の注意事項。
下記の条件が全て当てはまる会社にご注意下さい。
・IT系 in Tokyo
・転職会議で2.5点
・転職会議の「その他>2ch情報」の欄で過去の労基2chスレが表示される 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
TM7C0LN4KO プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
AKH0N プハァー ~~-v( =´o`=) 。o 〇 ○