1read 100read
2011年12月2期UNIX50: キャッシュ型負荷分散システム開発スレッド (472) TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
51: CTCテクノロジーのSolaris美人講師 (377)
52: ▲DHCPスレ (277)
53: gnus (877)
54: 今何欲しい?(´∀` ) (300)

キャッシュ型負荷分散システム開発スレッド


1 :01/08/27 〜 最終レス :09/10/23
このスレッドは、2ch.net の転送量削減を目指し、P2P-cache型の
負荷分散システムを開発するスレッドです。
参照:http://203.174.72.113/p2pcache/P2Pcache/frame.htm
その他参照スレは >>2-5 あたりに。
2ちゃんねるの軽量化・開発に関する他の話題は、
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&ls=20
その他、障害報告・動作報告等は、
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733&ls=20
に、それぞれお願いいたします。

2 :
●2ちゃんねる開発統合スレッド(連絡用)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998908559&ls=20
●キャッシュ型負荷分散システム開発スレッド (ここ)
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998908154&ls=20
●read.cgi開発スレッド(当面、bbs.cgiの話題も扱う)
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998845501&ls=20
●動作報告・障害報告スレッド
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998808733&ls=20
●2ちゃんねるWiki(全体にわたる参照事項です)
http://www.gedoh.org/aki/2ch/wiki/yukiwiki.cgi?TopPage

3 :
最新スクリプト
http://star.endless.ne.jp/users/forcount/4countbbs/scriptmaker/index.html

4 :
とりあえず 本家サーバにROMのリクエストが来たら
  305 Use Proxy
で追い返すって感じですかね?

5 :
本家サーバにROMのリクエストが来たら
てきとーなキャッシュ鯖に飛ばすんじゃないのかな?

6 :
基本的には、本家2ch鯖は、書き込み処理と
キャッシュ鯖への誘導って感じ??

7 :
この対応策は、ひろゆきさんの参加が絶対条件ですね。

8 :
ROMの持ってるキャッシュとの差分だけ送るなんて器用な真似できませんかね
アクセスは専用ブラウザのみにして・・

9 :
問題は そのキャッシュをどこに置くんじゃゴルァってとこか......

10 :
>>4
302 のほうが良いでしょう。
で、 >>5 が言ってるように
Location: でキャッシュ鯖にとばす、と。

11 :
いまの2ちゃんねるの運用実績を見る限り、サーバの移転、仕様の変更、新規板の設立などは、よく言えばフレキシブル、悪く言うと前置きや準備なしにいきなり行われています。
こういうシステムになると、相互のコミュニケートが必要なので、ひろゆきさんが参加しないとお手上げでしょう。

12 :
ftp://210.170.170.131/incoming/perler/mirror/mirror.pl
に、ダウンロード専用スクリプトをおきました。こいつをcronで走らせる算段です。
今のところデバッグで、tech板の取得しかしないです。
実行カレントDir以下の、dat/tech/dat/*datにキャッシュファイルを作ります。
このまま実行すると巨大になるので、キャッシュ管理ファイル(index.dat)も一緒に
アップロードしてあります。
./dat/tech/index.dat
に置くと、何個かのファイルしか取得してきません。
現在、index2.htmlの自動生成をやっています。差分取得はさらにその後です。

13 :
>>10 "302 Found"だと立てるサーバは「キャッシュ」というより「ミラー」と言った方が
しっくりくるけど......まぁ結果的に本家のトラフィックが減ればどっちでもいいんだけど

14 :
2chへのアクセスは専用ブラウザonlyにして
各専用ブラウザにキャッシュ持たせて
まず、P2Pで最も新しいキャッシュを探して
差分を本家サーバーから落とせたら・・・

15 :
>>14
> 2chへのアクセスは専用ブラウザonlyにして
> 各専用ブラウザにキャッシュ持たせて
ここまでは、2ch.net上のread.cgiを消せばかちゅ〜しゃ等が代わりになりますよね。

16 :
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror.pl
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/index.dat
アプしときました

17 :
つーか、なんで↓でやらないの?
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=990334284

18 :
>>16
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror.pl
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror.txt
にした方がいいのでは?

19 :
>>17
・実質、read.cgi部のミラー化でありP2Pじゃないこと
・既に仕様がある程度固まり、実際に開発に入ったため、仕様策定のスレッドと分ける必要性が
出てきたこと
以上の2つでスレ分けを提案しました。

20 :
>>15
そうですね
で、専用ブラウザにP2Pの機能を持たせて
各2ちゃんねらー同士で最新キャッシュの問い合わせをしあって
まぁ、とりあえず本家サーバーから落とすのは差分データーのみに出来たら・・・・
でもこれだとキャッシュ問い合わせに時間がかかりすぎるかな?

21 :
>>18
おっしゃる通りです
変更しときました
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror.txt

22 :
>>19
いや、>>14なんかはあっちで出てる案と似てるし、
別にあっちも完全P2P化で決定ってわけでもないですよ。
こっちは完全に固定キャッシュサーバでいくのなら分かれていても
いいですが、そうでないならまとまっていた方が効率が良いかな、と思いまして。

23 :
とりあえずread.cgiに差分送信機能だけでも盛り込めないですかね
クライアントがIEだと難しいですかね

24 :
>>22
ここは、サーバのミラーリング的手法だと思ったんですが。
P2Pとはちょっと違うと思います。
一緒にやるとたぶん混乱します。

25 :
>>10
というか、302にしないと、根スケ4.X(どれだったか忘れた)が、Locationを処理してくんないよ。

26 :
サーバーのミラーリンクをBig-serverが許してくれるでしょうか・・

27 :
すげ、、このコード
sub connect_soc 勉強に使わせてもらいます>>perler様 (^^
部外者しつれい ROMに戻ります

28 :
>>27
本来はモジュール使うべきところなんだけどね。。。>connect_soc
あと10分ほどで、index2.html作成部をアップロードできると思います。

29 :
ひろゆきは今なにしてんだろ?、。
本人がでないと、かなり苦しいのでは?

30 :
ftp://210.170.170.131/incoming/perler/mirror/mirror.pl.1
ftp://210.170.170.131/incoming/perler/mirror/index2.pl
をアップロードしました。ディレクトリ構造は一緒です。
今のところ、index2.plは、ファイルスタンプをみてますので、多分sageに対応していないです。
sage対応は後ほど入れる予定。
mirror.plにコマンドライン引数が入れられるように改変中。

31 :
ひろゆきと後Big-server側の人も来て欲しいね

32 :
>>30
上のファイル無いけど?

33 :
>>30
>sage対応は後ほど入れる予定。
一時的かもしれんが、今みたいに TOP10 も表示せず
スレッド一覧だけ表示するようになれば、、、
sage機能要らないじゃん?

34 :
なるほど、昨日のQuickhackといい勉強になりまくってます。
FW挟んでるんでテストに参加出来ないのが悲しいです。
度々しつれいします  今度こそROMに戻ります。

35 :
>>651
お疲れ様です。ありがとうございました。

36 :
>>21
今会社から帰ってきたんで何のコードかさっぱりわからないんだが、
#### ソケット S をバッファするようにする
select(S); $| = 1; select(stdout);
これってバッファしないようにする。じゃないかな

37 :
>>32
すみません。mirror.pl.1入れなおしました。

38 :
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror2.pl.1
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/index2.txt
あげておきました
でも、index2.plはindex2.txtにリネームしてます

39 :
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror2.pl.1
じゃないですね
http://star.endless.ne.jp/users/forcount/contents/scriptmaker/mirror/mirror.pl.1
でした

40 :
ところで ミラー側からpullするスクリプトができれば あとは本家側のread.cgi
とかで(ってか.htaccessのRedirectディレクティブでもいいんだっけ?)
リダイレクトさせればいいんだけど ミラーサーバをどこに置くのよ?ってのが
問題...... 本格的に動かしたら アクセス量は半端じゃないでしょう......

41 :
なんか、うまく動いてくれないです・・・
error: open ./dat/tech/965815778.dat for writingで引っかかります。
いちおう、/dat/tech/は作ってあるのですが、datはあらかじめ必要なんでしょうか?

42 :
最終的な解決はp2pあたりが有望だけど、サーバ、クライアントの開発や環境構築と
deamonが動かせる環境の確保が必要なのでしばらく時間がかかると思われ。
こちらは、基本的には現行のhttpを使用して、鯖の確保と受け渡しcgiの作成のみで
サクッと運用しちゃいましょうがテーマでしょう。
ただし、全板キャッシュするとそれなりの容量と帯域を使うので、最大で数百人〜数千人が
利用しないと旨みが少ないし、板ごとのキャッシュじゃ2ch.netに振り分けの負荷が掛かる。
個人でこんなサーバを持つのは難しいので、対象はISP側のレンタルスペースが有望。
ただし、perl以外のcgiが許される所は少ないし、cronなんて・・・。
そのため、全投稿を受け付ける2ch.netのbbs.cgiへキャッシュ鯖への転送処理を入れ、
ミラー側では受け口となるmirror.cgiと、現行のread.cgiが走らすのが一番簡単そうな
感じがします。バケツリレー方式も可能だし、投稿ごとに送っても大丈夫。
ISP側の権利問題は、ミラー側で自由にフロントエンドを拡張できるので、その辺で解決。
あとは、ミラーのリンクを自動にしたら勝手に鯖は増えるけど、悪用されちゃうかな。
cgiもperl版を作れば、有志によるミラーが自然と増える気がします。
# ブラウザ側でも、JavaScriptでdatの展開しちゃえば、差分取り出しできそうですね

43 :
>>41
dat/tech/dat/が必要です。。

44 :
>>40
確かにそうですね。
とりあえず過去ログ参照だけでもミラー鯖にしたほうが
転送料は減るんじゃないかな。
最低限1鯖を10〜20のホストがミラーだな。
DNS ラウンドロビンだけじゃなくて 302 の Location で負荷分散
するなら、鯖数 50〜100 はいけるかな?
あんまりキャッシュ鯖が増えたら意味無くなるかな?
3段構成くらいにして、master→slave→cache とか。
こうすれば、master の負荷は結構減るかな。
速報板とか、アクセスの激しいのはどうするべきだろうか。

45 :
>>43
あ、了解です。
ディレクトリなかったら自動で作る仕組みも欲しいですね・・・
(というか、書けって怒られてしまいそう)

46 :
>>44
>3段構成くらいにして、master→slave→cache とか。
これは視野に入れて開発してます。現行のmirror.plで対応可能。
というか、受け取ったデータをいじらずにそのまま
2ch.netと同じ階層構造で保存してやってるだけだけど。

47 :
取得の方がrangeに対応してませんが、閲覧の方は問題なくできるように
なってきています。
そろそろプロパガンダも兼ねて公開テストも行いたいんですが、
誰かCGI利用可能なHTTPサーバーで公開しても良いという方はいませんかね。。。

48 :
>>44 DNSのラウンドロビンでやったらカキコのアクセスもミラーの方に
行っちゃうけど......bbs.cgiへのアクセスを本家側にリダイレクトさせれば
いいんだろうけど ミラー側のaccess_logにPOSTの記録が残るのを嫌がる
人が出てくるかも......ってかPOSTを他のホストにリダイレクトさせると
ブラウザが警告を出すんじゃなかったっけ?

49 :
オレの自宅で使ってるプロバイダ(CATV)はサーバ立て禁止......
仕事先のを使ったらゴルァになるだろうし......

50 :
>>48
POST、というか bbs.cgi 周辺は全て master に置けば解決。
とはっても信用出来ない鯖だと、
html の FORM action URI を書き換えてしまう
かもしれんな。

51 :
やっぱりURL自体を分散しようよ。
1.Oracle使って同期レプリケーションを組んで、
2.WebAPサーバをDBサーバと同じ台数稼動。

52 :
>>47
こっそり建てることは出来ますけど、公開となるとちょっと。

53 :
>>52 同意(w まぁここの開発メンバぐらいしか来ないという確証が
あれば 仕事先のマシンにこっそり仕掛けることぐらいしても
バレないとは思うけど...... いや仕事先にバレるだけでなく
そのマシンがヘンなやつらに目をつけられちゃうと......

54 :
>>52
確かに。うちもそう。
うちはインターリンクってゆープロバイダで
固定IPで立ててるけど、2chで公開なんか
しようもんなら、あまりのアクセスの多さに
文句くるだろうなあ。。。
関係ないっすけど、技術者集まって、一回
OFF会しません?

55 :
なんか NetNews のようなことができないかと考えてみたり。

56 :
そうですよね。。。
ただ、現状でも、スレ立てて閲覧はミラーサーバーを使うようにお願いすれば、ある程度の負荷軽減は
達成できるんじゃないかと思うので、2ch側に説得力を持たせるには、公開実験が良いと
思ったんですが。。。
別の板で募集かけてみるってのはどうでしょうかね?

57 :
>>54
場所にもよりますけど、出席しますよ
>>56
それこそ、夜勤さんにお願いするべきでは?

58 :
IP 直書きでも whois でスグに身元が割れちゃうからなぁ…
鯖、無いことは無いんだけど、
個人的な鯖は回線細すぎだし
そうじゃないのは、ネットワーク管理者にばれるとダメだし…

59 :
うーむ。
さすがにさくさたん怒っちゃうかなぁ。
テストぐらいなら大丈夫だとは思うけど……。
http://www.gedoh.org/aki/2ch/mirror/

60 :
>>59
akiさん、ありがとう。

61 :
>>59
あ、ありがとうございます。
index2.plも試してみてもらえませんか?
mirror.plと同じ階層に置いて、
index2.pl tech
とするだけです。mirror.plからも一応呼び出すようになってます。

62 :
はじめからキャッシュありき、で行くのは如何なものか?
さまよえるオランダ人キャッシュまで到達するのであれば別ですが。

63 :
>>62
提案レベルを作ってるって事でしょ?

64 :
>62
人が1カ月に2倍以上くらいのスピードで増えていて、
gzip, last-modified の改造でも 45% 前後しか転送量圧縮出来ない
とくれば、後は金を作るか、転送量を減らすかしか無いですからねぇ…
金がどうにもならない以上、転送量減らさないと。
何か名案はある?>62
とりあえず文章後半の意味がよくわからん。

65 :
>>55
ttp://piza.2ch.net/log2/network/kako/945/945648512.html

66 :
>>56
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998908559&ls=20
で募集かけてみました。ご報告まで。

67 :
Perlerさん、index2.plですが、実行時間を記録する仕組みって組み込めますか?
ものすごく作業に時間がかかっています。

68 :
>>66
募集ありがとうございます。お手数掛けます。
>>67
index2.plがですか?
index2.plは一瞬で終わるはずなので、時間がかかっているのなら
どこかにバグがある可能性があります。
mirror.plは、index.datを入れておかないと、初回に全ログを採りに行くので
莫大な時間が掛かります。
ちょっと今日は明日早いので、寝てしまいます。計測は、
BEGIN{$EXT::time = time};
END{print time - $EXT::time}
とかじゃ駄目でしょうか?

69 :
>>68
index2.plです。
どうも、2chにオリジナルを取りに行っている節がありますけど。

70 :
物凄いバグ発見。
$countをクリアしてないので、レス数がすごいことになってます。
恥ずかしいが、明日直します。$count = 0;埋めるだけだし。

71 :
ROMで応援している者ですが、プログラマ辞めて8年もたってるので
インターネット云々には疎くお手伝いできそうもありませんが、情報のみなら・・ということで
この間無料HP探して見つけた所なんですが
http://www.nurs.or.jp/index.html
で借りれませんか?容量無制限、CGI可
「当会では「ネットワークのより自由で高度な応用」を研究テーマとして活動しております」
と書いていますが?
さすがに誰も自分のアドレス公開できんと思うので取りあえず。
 2ch入り初めて2週間くらい何で失礼ならすいません。

72 :
>>69
すみません、お手数かけますが、
ftp://210.170.170.131/incoming/perler/mirror/index2.pl.1
でやりなおしてみてもらえますか?

73 :
>>72
了解です

74 :
実行してみました〜。
あと、YukiWikiから、衝突に強いTikiに移行しました。
http://www.gedoh.org/aki/2ch/tiki/

75 :
>71
そこ、おごちゃんのところじゃ無かったっけ?
2chのテストとなると、どうでしょ。貸してくれるかなあ。

76 :
さてと、今度こそ寝ます。テスト環境の件などなどでで私と直接連絡とりたい方は、
perler_2ch@hotmail.com
までお願いします。皆さん大変でしょうが引き続き頑張ってください。

77 :
>75
おごちゃん、散々イジめたからなぁ。この板で…

78 :
>71
nursさんか・・・
個人でML運営させてもらってるので、アカウント作ってもらったとこだ。
自分のメインのメールアドレスもnurs。
ただ、いつも load average 高いです。今現在は 4〜8程度。
知ってる人は知ってると思いますが、ここのrootはogochanです。

79 :
>>63 >>64
cacheに王道なし
ゆえに、血道をあげて最適化を図るしかないのがcache道。
できれば、最期の手段として取っておきたかったな、というのが本音です。
cacheしますよ、だけではproposalとして×。
ヒット率目標を明確にしないとPGが走れないと思う。
さまよえるオランダ人キャッシュっていうのは、
「誰からも90%以上のヒット率がえられるキャッシュ機構」のことです。
writeback非同期、turnback最小化が理想。

80 :
追記:
RISCがなぜあそこまでcachehitにこだわるか考えてみよ。
あれは、高いcachehit率に支えられないとうまく回らない
(つまりCISCにまける - ただ命令が長いだけの演算論理に成り下がる)論理だから、
ああいう風にしている。

81 :
>>79
今ここでやってる cache は、disk cache と違って
cache server にアクセスすれば必ず hit すると思うんですが…
今やってる cache は mirror だから。認識間違ってるかな。
そのうち本物の cache になるかどうかは今後次第ですね。

82 :
mirror.plで取ってきたものをread.cgiで読めるようにしてみました。
例えば、
http://202.247.106.47/test/read.cgi?bbs=tech&key=998845501&ls=100
こんな感じで。.datは
973187725.dat 990101968.dat 994912940.dat 997791189.dat 998845501.dat
980342413.dat 990334284.dat 995044723.dat 997931422.dat 998878393.dat
981044659.dat 991795568.dat 995431899.dat 998329377.dat 998908559.dat
981726544.dat 993005709.dat 996151042.dat 998403891.dat 998914613.dat
981823340.dat 993186053.dat 996848309.dat 998444037.dat 998915621.dat
984182993.dat 993358225.dat 997045112.dat 998736516.dat 998921988.dat
985566190.dat 993736410.dat 997348797.dat 998808627.dat 998922784.dat
987698965.dat 993758383.dat 997686555.dat 998841754.dat 998924030.dat
とりあえず、こんだけあります。適当に試してみてください。
僕が誰だか詮索しないように。

83 :
理屈ばっかだと、1/16,000 になっちまうぞ。(w

84 :
>>81
cacheの母体がCPUと同じところに乗っていようが、DISKに乗っていようが、
cacheする以上、必要な論理はただ一つです。
「mishit時のアクセスレスポンス < hit時のアクセスレスポンス」
あとは、
・この比を求める
・平均レスポンスをどのあたりに持っていきたいか策定する
・比と平均レスポンスから、何%hit以上をもくろむか策定する
ただし、過半数がゆったりした人orCachehit率100%付近を要求する、
ということであれば、私の意見はないに等しいです ただのうるさいオヤジということになります。

85 :
>>83
cacheの逆ザヤって結構ある話なんです。
私はそこだけ心配なので、
目標のあるcache戦略なのかな?
であれば、サルでもわかる解説があるはず!
と思ったまでです。

86 :
皆様お疲れ様です。
P2P cache のほうはだいぶ下がっちゃったし実装待ちかな。
ところで
>>82
http://202.247.106.47/test/read.cgi?bbs=tech&key=998845501&ls=3
でレスの1 と最後2つが表示されるのですが...
ls=XX の数字がずれてません?
何かずれた事いってたらごめんなさい。

87 :
なんかお役に立てませんでした。
駄文に返事下さり有り難うございました。
 その時の履歴漁ったケド有料鯖以外でCGIフリーって、なかなか無いですね。
 しくしく

88 :
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998908154&nofirst=true&ls=3
http://cocoa.2ch.net/test/read.cgi?bbs=unix&key=998908154&ls=3
全部でレス3つってことで、あってるのでは。

89 :
>88
あ、すまそ..
もともとの仕様を勘違いしてた.. 鬱だ

90 :
>>84
いや、だから、今(少なくとも年内?)問題なのは 2ch.net ゾーンの
転送量ですので、2ch.net 以外のゾーンに cache server 置けば
cache サーバ使用時のレスポンスは今より悪くなる可能性はあるのでは。
でも背に腹は変えられないという訳です。

91 :
>>90
了解しました。
要はread専用にレプリカするためのもので、
それによって転送量総量の問題を分散させる、ということであれば
その範疇で組んでも大丈夫でしょう ほっ・・・

92 :
>>85
とりあえず、ミラーサーバに関しては、cacheによって高速化しよう
ということではなくて、有志のサーバ達に分担させて2chのトラフィッ
クを減らそうということです。
ADSLな上り512Kbpsな人が100人集まれば、50Mbpsの回線を提供できると。

93 :
>91
理解して頂けたようで良かった。
>92
残念ながら ISP の内部で帯域幅狭まると思われ。
地方から東京までの回線とか、結構狭いと思う。
# flets ADSL とか、IP どう割り振ってるんだろう。

94 :
大手ISPごとに居ると嬉しいんですけどね。
なかなかそうも行かないところ。
とりあえずBフレッツ来たらミラーしてもいいです。

95 :
http://203.174.72.113/p2pcache/P2Pcache/frame.htm

96 :
goo 重いね。やっぱ IIS だから?

97 :
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=998879305&ls=20
もうダメなのか?

98 :
To:97
http://kaba.2ch.net/test/read.cgi?bbs=news&key=997961706&st=637
隊長暴走気味。

99 :
あきらめたらいかん。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
・ 次のスレ
51: CTCテクノロジーのSolaris美人講師 (377)
52: ▲DHCPスレ (277)
53: gnus (877)
54: 今何欲しい?(´∀` ) (300)