【野鳥の会】 BBS.2ch.net 全発言統計の巻 part4
レス数が900を超えています。1000を超えると表示できなくなるよ。
2ちゃんねるの全発言の統計を取ろうに挑戦
bbs.cgi に一個DNS問い合わせの処理を追加
発言バイト数.スレッドkey.板.サーバ.CGI名.BBS.2ch.net をlook up
この方法でやるとかなり低コストで出来る予感。
すずめ (板別発言数統計) http://stats.2ch.net/suzume.cgi
からす (サーバー別発言数統計) http://stats.2ch.net/karasu.cgi
からす2 (鯖グループ別発言数統計) http://stats.2ch.net/karasu2.cgi
すずめ、からすはURLをcgi->cgi?yesterdayとすることで前日のデータを閲覧できます。
とんび (1時間単位板別発言数統計) http://stats.2ch.net/tonbi.cgi
・とんびのログっぽいの http://stats.2ch.net/kawasemi-h/
・とんびのログ分刻み版 http://stats.2ch.net/kawasemi-m/
・とんび2 (1時間単位板別バイト数統計) http://stats.2ch.net/tonbi2.cgi
つばめ (分単位多数発言スレッド統計) http://stats.2ch.net/tubame.cgi
つばめ (ex8専用) http://stats.2ch.net/tubame2.cgi
2ch一日全発言統計一覧
http://stats.2ch.net/kawasemi-d/2ch.txt
前スレまでの規制のまとめ
とかげの尻尾
極短時間に多くのスレを立てたり、レスをつけたりすると
●、★の有無に関わらず2時間の間、qb5以外の読み書きが規制されます。
読もうとすると http://qb6.2ch.net/403/ に飛ばされます。
記者、スレ立て代行さんは要注意。
現在のこの件での規制対象は http://qb6.2ch.net/403/c403.cgi で確認できます。
●を併用してもBBQチェック済みの串を使って書けないようになりました。
p2に関する質問や議論はソフトウェア板のp2スレでどうぞ。
現状もそちらでまとめられています。
p2+●に関する規制議論はこちらです。
http://qb5.2ch.net/test/read.cgi/sec2chd/1097492197/
過去スレ
part1 http://qb5.2ch.net/test/read.cgi/operate/1083526243/
part2 http://qb5.2ch.net/test/read.cgi/operate/1097666632/
part3 http://qb5.2ch.net/test/read.cgi/operate/1097821787/ >>847
これって、bbs.cgi のリミッターに使えるかも。 >>848
>bbs.cgi のリミッター
というのは,bbs.cgi のプロセス数を制限するということでしょうか?
mod_authz_iplist では,規制リストは各 httpd プロセス単位で保持している
(共有メモリは使用していない)ので,全体で bbs.cgi がいくつ立ち上がって
いるかはこのモジュールでは把握できませんね.
今ある仕組みを使うのなら,read.cgi を fork() させない(mod_cgidso を使う)
ようにすれば,RLimitNPROC の指定がほぼそのまま bbs.cgi プロセス数の制限に
なるのではないかと思いますけど. >>849
そですね。モジュールだけではむりぽかと。
RLimitNPROCでリミッターに激しくぶつかると、どうもシステム的にうまくないみたいなんですよ。
さて、どうしたものか。 質問でーす
現 stats.2ch.net はDNSクエリに対して非同期(よんだらすぐリターン)になっていますが
これを同期にするのってのは難しいんですか?
1) サーバの設定 (集計プログラムの呼び出し方等)
2) リターン値の返し方 (集計プログラムからどういう経路で呼び出し元へ返すの?)
なんてとこが知りたかったりします。 同期というか、1 query受信したごとに、
その都度指定したプログラムを呼び出すようにしたいとかいうことですかね。 >>852 は、簡単にできます。
ちょっと負荷上がりますが。 呼び出したいというよりは
「値を返したい」が目的だったりします。
呼び出し元に何か返したいとしたら、
簡単にやるならプログラムのexit codeでやるのが楽かと。
つまり、>>853 の手法で子供のプログラムを呼び出す時にその終了を待つようにして、
呼び出し元プログラムで何かすると。
shell scriptなら、./log/run をたぶんこんなかんじにすればいいかなと。
while read $line; do
echo $line | multilog -t ./main
echo $line | 処理プログラム
if [ $? -eq 0 ]; then
処理プログラムの戻り値が0だったときの処理
else
それ以外の時の処理
fi
done こうやっておくと、
DNSクエリがない間は、readのところで入力を待っています。 ふむふむ
1) 呼び出されるプログラムは exit(????); で通知する。
2) exit のコードを貰って、呼び出し側はDNS look upの返り値に整形して
大本の呼び出し側(bbs.cgi)に返すと
仕組みは理解したはずー
>>857
1)はそれでよいです。
3)はひょっとして gethostbyname()したおおもとのプログラムに返す値を、
exit()の結果に応じてダイナミックに変えたいといっています?
今のしくみだと、前と同じものをもう1回聞かれた時に違う値を返す、
ってのはできますが(BBX/Rock54で採用)、
一発目の応答を変えるってのは、今の仕組みではちょっと難しいかも。 そうなんです
【bbs.cgi】 -DNS look up-> 【DNS server】 -処理呼び出し-> 【集計プログラム】
↓
処理&リターン値(数値)
↓
5454545454 <- 【23.23.23.23形式に変換】 <-exitで通知- 【5454545454】
こんな事を考えているです。
つまり 【23.23.23.23形式に変換】 このあたりが複雑ということですか? やりたいのはこんなかんじ ?
bbs.cgi → gethostbyname() →(DNS問い合わせ)→ BBS → 処理プログラム
というDNS問い合わせが起こったときに、*その問い合わせへの答え*として、
処理プログラム → BBS →(何らかの値)→ gethostbyname() → bbs.cgi
というルートで値を戻したい。 お、かぶった。>>859 >>860 は同じこと書いていますね。
ええと、問い合わせを受けたときに bbs.cgi に値を返しているのは、DNSサーバです。
つまり、BBSシステムと非同期であると。
で、これを同期(というかダイナミック)にしたいということですね。
それは、今のBBSの仕組みそのままでは難しいすね。
同じような別の仕組みを作れば、できるかも。 具体例でいくと、
read.cgi の呼び出された総数をカウントしたい
その結果を都度 read.cgi の出力(html) に表示したい
こんなことなんですが、 >>863
(回数-1)回、つまり「それまでにread.cgiが呼ばれた回数」なら、出来なくないかも。
でも、ちと重そうだなぁ。 負荷のことは置いておいて、
仕組みの話しなんですが、
exit(1234) ; とやったら bbs.cgi が 1234 を受け取り
出力に "1234" と入れたいってことなんです。
具体的な例として read.cgi のカウントを上げています
考えているのはもっと仮想化されたものです >>865
bbs.cgi と read.cgi がごっちゃになってる。。。
read.cgi に読み直してくださいー ふうむ。
簡単なプロセス間通信をしたい、ってことですね。
それなら、DNSのフレームワークじゃないのを使ったほうがよさげですね。
しかも導入が簡単で、わりと軽いやつか。 こんな感じの概念?
<< read.cgi >>
c = getcount(p);
printf("count = %d\n", c);
で、getcount() は別のサーバSで動いている
サーバプログラムsに何か情報pを伝えて、
サーバプログラムsはgetcount()に結果を戻し、
read.cgiはその結果を表示する。 そうなんです、
DNS のフレームワークでない方がいい?
コスト的、とくにサーバ間の通信ではとってもお得に感じるんだけど、、、 >>869
はい、DNSはコスト低いし、らくちんですね。
どのシステムにも標準実装されてるし。
ちょっと会議入るんで、オフライン。
やりたいことはたぶん理解できました & 使えそうな仕組みはあるはずなので、
今夜 news19 をバージョンアップしながら、ぼちぼち考えてみます。 実際に実験したいな。
>>853 でご指摘のように返り値を取るために待っていることで当然
負荷は当然上がるとして、んじゃ一体どれくらい上がるのか。。。
いままでの経験から DNS を利用した方法は「他の仕組み」に比べて
極端にコストが安くかつ高速に実現かつ帯域的にもお得だった訳だけど
それを踏み潰してしまうほど、つまり「他の仕組み」にまけてしまうほど
負荷が上がってしまうのかどうか、 UDP一発もの、サーバは単純な脊髄反射系 ってやつですからね。< DNS
ちょっともう今日はねむいんで、明日の昼以降の
アタマがはっきりしてる時にでも、実現可能性を調べてみるです。
今日の残りは、ちょっとだらだらするか、もう寝るかあたりをしようかなと。 あっ どもども
実際に返したいものは数値なんで
bbs.cgi(read.cgi) が受け取るのは
123.123.123.123 の形式で十分だったりします スレッド乱立報告スレッド4
http://qb5.2ch.net/test/read.cgi/sec2chd/1094737461/577
577 名前:名無しの報告[sage] 投稿日:04/11/27 21:26:47 ID:Z/TwD1fa
http://qb6.2ch.net/_403/c403.cgi
ここをウォッチングしていてわかったのですが、どうやら、
とかげのしっぽが解除されて再び発動するまでに、
10分のインターバルがあるようです
で、荒らしはその10分の間に田代砲のようなものを、
フル回転させてスレッドを乱立させているみたい
まじっすか? もしF22で規制リストを配ってるなら、
それぐらいの時間がかかるかもですね。。 甲) 2ちゃんねる各サーバ(60台くらい?)
↓a) 投稿ごとに BBS.2ch.net に通知
乙)BBS.2ch.net ここでいろいろ集計
↓b) おっ 攻撃だ! qb6 に通知
丙)qb6.2ch.net 攻撃者リストメンテ部
↓c) deny リスト作ったわん。全サーバに配信、配信。
丁) 2ちゃんねる各サーバ(59台くらい?) deny from で撃退
タイムラグはあるべね いや運用情報だから過疎ではない
VIPのあのスレから来たな お、そうか。
昨日dnscacheを増やしたから、登録しないといかんぞ。
>>881
別途チェックをば。 >>882
新しいdnscahe(dnscache2.peko.2ch.net = cobra2245の第2IPアドレス)を登録した。
http://stats.2ch.net/karasu.cgi
ex8やlive15が見えてきたので、大丈夫かと。 pie.bbspink.com が参照しているDNSキャッシュサーバをBBS/BBX/BBYに登録しました。 バーボンって生きてる?
ここ数日の間にソフト板が連投マルチ食らってるんだけど 転載 from 【実況】 live8/15/16 鯖 Part1
http://qb5.2ch.net/test/read.cgi/operate/1102681336/601-603
601 名前: FOX ★ [sage] 投稿日: 04/12/31 21:53:01 ID:???
うーん BBSも・・・
603 :root▲ ★ :04/12/31 21:55:52 ID:???
>>601
そですね。
BBSは、分散化かなぁ。
2台のサーバでBBSを半分ずつ受けるようにして、集計をやるしくみを別に作るとか。 止まってる?
すずめ Ver 0.01 = 板別発言数 本日 2005/01/01
本日の発言数 1,654,742 (2005/01/01 5:9:51 現在) ちょっと、バーボンハウスのスレ立て数の値きつくしてみます、 sports8 → ex9 への移転を反映する必要があるですね。
ちょっと見てみましたが、複数箇所変更する必要がありそうなので、
FOXさんにおまかせすることにしよう、そうしよう。 バーボンきつくし過ぎです・・・・。
どの位きつくしたんですか? なんか私が設定したときよりはるかにきつくなってますね、
それまで3ヶ月間変わってなかったくせに。
何か意図があるかもしれないけど、、
ちょっとさすがに変えすぎだと思うので少し戻しましょう。。 live8 , live15 , live16 はスルーにしよう
そうしよう Perl なんですが、
$yyy = "game9/etc4/dso";
っていうのがあって、これを
"<a href=http://game9.2ch.net/>game9</a>/<a href=http://etc4.2ch.net/>etc4</a>/<a href=http://dso.2ch.net/>dso</a>"
のようにするにはどうしたらいいんですかねぇ? $data =~ s/(\w+)/<a href\=http:\/\/\1\.2ch\.net>\1<\/a>/g;
ぱっと思いつくのはこんなもんですかねぇ。 おおっ
おつむが硬いとだめじゃのぉ
早速ぱくらせていただきます
∩___∩
|ノ⌒ ⌒ ヽ
/ ●) ●) |
オツカレチャ━━━━━| ( _●_) ミ━━━━━ン♪
彡、 |∪| 、`
/ ヽノ ヽ
/ 人 \\ 彡
⊂´_/ ) ヽ__`⊃
/ 人 (
(_ノ (_) おおっ
あとはどこで〆切るかですなぁ < PVあて
ちなみに通例どおり 2ch + bbspink でやります
(@pie なサーバだけになりますが、) おお、、、。
PV計測対応の時のミスですね。
直しておきます。 >>910
そういう仕様なので・・・・と思いましたが、とりあえず直しておきました すずめ昨日のほうだけでもいいから板名にリンクつけてよ すずめが板名参照できてリンクがついてれば
とりあえずサブカテゴリはいらない >>916
例のやつですか、、、。超どばっと来ると、いまいちになるという。 あれ、確かに変ですね。
cronかな。みてきます。 cronすね。
夏時間への切り替えのところに、間違いがあるみたい。
今の設定:
# Apr
1 8 1 4 0 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 1 4 1-6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 2 4 0-1 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 2 4 2-6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 3 4 0-2 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 3 4 3-6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 4 4 0-3 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 4 4 4-6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 5 4 0-4 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 5 4 5-6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 6 4 0-5 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 7 6 4 6 /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 7-30 4 * /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1 http://www.freebsd.org/cgi/man.cgi?query=crontab&sektion=5
Note: The day of a command's execution can be specified by two fields --
day of month, and day of week. If both fields are restricted (ie, aren't
*), the command will be run when either field matches the current time.
For example, ``30 4 1,15 * 5'' would cause a command to be run at 4:30 am
on the 1st and 15th of each month, plus every Friday.
ということで......
1 7 * * * [ "`/bin/date +%Z`" = PST ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 * * * [ "`/bin/date +%Z`" = PDT ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1 >>921
どうも。こういうふうにしてみました。
# Jan-Mar
1 7 * 1-3 * /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
# Apr
1 7 * 4 * [ "`/bin/date +%Z`" = "PST" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 * 4 * [ "`/bin/date +%Z`" = "PDT" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
# May-Sep
1 8 * 5-9 * /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
# Oct
1 7 * 10 * [ "`/bin/date +%Z`" = "PST" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 * 10 * [ "`/bin/date +%Z`" = "PDT" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
# Nov-Dec
1 7 * 11-12 * /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1 あららん
http://stats.2ch.net/kawasemi-d/2ch.txt
4/5 以降 計測できていないような、
手動で suzume から拾っておこう
4/7 1,824,801 あららん。いちおう僕が取ってたデータから
過日分も書いておきます。。
4/5 1,803,075
4/6 1,839,402 寝床で、これ見てしまった。
何が悪いんだろう、、、。
手で sh を起動してコマンドラインを流し込む分には平気だったんだが。 わかりました。
# Apr
1 7 * 4 * [ "`/bin/date +\%Z`" = "PST" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 * 4 * [ "`/bin/date +\%Z`" = "PDT" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
のように、% をエスケープしないとだめでした。
# Oct
1 7 * 10 * [ "`/bin/date +\%Z`" = "PST" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
1 8 * 10 * [ "`/bin/date +\%Z`" = "PDT" ] && /home/ch2stats/BBS/kawasemi-d.cgi > /dev/null 2>&1
も、直しました。 man 5 crontab すると、ちゃんと書いてありました。
Percent-signs (%) in the command, unless
escaped with backslash (\), will be changed into newline characters, and
all data after the first % will be sent to the command as standard input.
ねます。おやすむ。 おっとっと.>>929 これはこちらの責任ですね...... む。昨日のはじめころからpc8鯖がカウントされていない予感。 >>931
リブートによりメモリディスク上のoklist.txtが先祖がえりしていました。
そうか、メモリディスクにしたから元のほうを更新しないとだめか。
直しておきました。 さて、壺がきたということで、game系の大増産も一段落かしら。
というわけで、ここへの登録をよろしくです。 >>936
そのうちnewsとliveが需要高そうだ
漏れも見たい。 アニメとコミック鯖を再編するなら、やっぱり専用のが
欲しい気がします。。>comic5、comic6
ただ、一部の板はもう別鯖にあるので、それをどうするか。
週刊少年漫画
http://etc4.2ch.net/wcomic/
アニメ
http://news18.2ch.net/anime/
新シャア専用
http://hobby7.2ch.net/shar/ http://stats.2ch.net/suzume.cgi
鯖名クリックでそれぞれの板に飛べるようになりましたが(前からだっけ?)
bbspinkの板をクリックしても2chアドレスに飛ぼうとしてしまいますー これhttp://www.ff.iij4u.or.jp/~ch2/bbsmenu.htmlの窓に貼れないかね
さらに板略称付いててクリックしたとこの色が変わればれば最高だけど レス数が900を超えています。1000を超えると表示できなくなるよ。