◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:関連キーワードをなんとかしようスレ->画像>2枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/operate/1166328527/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
read.cgiの片隅に表示されている関連キーワードを きちんとメンテナンスしてみようなスレッド。
お、スレ来ましたか。 先日管理人からお誘いがきたです。 もう一人、超強力な人(仮名)が呼ばれている様子。
>>1 スレ立て乙です.
で,core 吐くのは何とかなったっぽいですが,Solaris の port_associate() / port_get() 前提に作ったのを
FreeBSD の kevent() に対応させた(つもりの)部分の動きが相変わらず怪しいと......<crawld
で,truss を使えるように(/proc をマウント?)してもらえると,デバッグがしやすいかなぁ,と......
Mozilla/5.0 (X11; U; SunOS i86pc; ja; rv:1.9a1) Gecko/20061128 Minefield/3.0a1 >>5 超強力な人だ。
これまでの経緯や進捗などについては、
帰宅後にでもここにぼちぼちと。
で、/proc を mount する作業についても、 帰宅後に進めるです。
■ これまでのまとめ
2006年の4月頃、read.cgi の出力の上のほうに「関連キーワード」を
表示する機能を、管理人がつけました。
http://qb5.2ch.net/operate/kako/1145/11456/1145615267.html の 490-
プログラムは管理人が作成したプロトタイプ版でした。
まずプロトタイプ版で動かし将来よくしていこう、という目論見だったようです。
http://qb5.2ch.net/operate/kako/1145/11456/1145615267.html の 496
現在でもこの機能は、一部サーバで動いています。
* 全サーバでの動作はさせていません(負荷問題)
* 負荷軽減のため21時から2時まではリクエストの処理をしていません(同上)
また、事情により最近立ったスレッドではこの機能は動いていないそうです(by 管理人)
* キーワード【準備中】 になっているもの
このような状況の中、管理人からSunOSさんと私に、
「これ、やってみませんかー」というオファーが来ました。
そして、相談の結果、オファーを受けてみることとしました。
■ これまでにすすめたこと ・先日管理人・SunOSさん・私の3人でオフラインで会い、現在の状況の確認をしました。 (管理人が手ずからペンとスケッチブックを持ってきて、絵を描いて説明しました) ・このためのサーバを2台準備し、私がインフラ部分の基本環境を作りました。 p2.2ch.io と c2.2ch.io になります。 ・管理人が今日、このスレを立てました。 そんなわけで例によって、表でわいわいやっていくことになりました。 ・現在 SunOS さんが中身の開発をすすめているところです。 というわけでどんな構想で作っておられるか等については、 ぼちぼちとここでやっていくのがいいのかなと思います。 例によって今後進めていく作業者間の作業連絡等も、 表ででやれるところについては(パスワードとかセキュリティ関係じゃないものとか)、 ここでやっていけるといいのかなと。 こんなところで。
>>12 はい。
組むのはあまり戦力にならないので、
例によってインフラ整備系とかネットワーク系でがんがってみようかと。
SunOS さんからの依頼により、 [cp]2.2ch.io の libcurl を 7.16.0 に更新しました。
>>9-11 ,15 乙です. >>12-13 よろしくです. 構想については管理人さんから大枠が示されていまして シード: 取得する Web ページの URL を保持し,それをクローラに渡す ↓ クローラ: 渡された URL のコンテンツを取得する ↓ パーサ: コンテンツから特徴的なキーワードを抽出する ↓ インデクサ: URL とキーワードの対応テーブルを DB として保持する フロントエンドからは,まずそのスレに対応するキーワードデータがすでに DB に存在するか調べ, あればそのキーワードを使用し,なければシードに URL を渡して上記の処理を行う,と. で,/proc をマウントしてもらったおかげで truss が使えるようになり, かなりデバッグがやりやすくなりました.で,crawld(=クローラ)もだいぶ安定してきたかな. usage: crawld [-fh] [-b host] [-d datadir] [-i interval] [-o unixfile] [-p port] [-s statfile] [-u useragent] -b host: bind UDP socket to this host [0.0.0.0] -d datadir: directory for fetched files [/var/crawld] -f: run in foreground -h: this help -i interval: interval(sec) for a same host [3] -o unixfile: output filenames to this unix domain socket [none] -p port: bind UDP socket to this port [9606] -s statfile: dump statistics to statfile on SIGUSR1 [/dev/null] -u useragent: set User-Agent request header [none] シードからは,crawld が待ち受けしてる UDP ポートに URL を投げ入れると, そのページのコンテンツを取得しデータディレクトリ配下に格納します. crawl.pl という Perl スクリプトを使えば,コマンドラインから URL を渡せます. usage: crawl.pl URL [URL ...] or crawl.pl <file_of_URLs -o オプションを使うと,取得したコンテンツが格納されているファイル名を Unix ドメインソケット経由でパーサに渡すことができます. -i オプションのインターバルは同一ホストに対するもので,別ホストに対してはインターバル指定にかかわらず即時取得します. 2ch 限定で使う分には,とりあえずインターバルを 0 にしてもいいかもですが. 並列度は,URL をどんどん放り込めば,理論上は1プロセスあたりの fd 数の限界に達するまで増えて逝きます. ただし,同一ホストに対するリクエストは Keep-Alive を有効利用できるように直列化されます. んで,crawld の次はパーサになるわけですが......キーワードの妥当性チェックのために Google に問い合わせてヒット数で判断するということが言われてるのですが, 外部のサービスに依存する形になるのはちと危うさがあるかな,という懸念が個人的には...... クローリングしたデータから自前で単語のヒット数のようなデータを蓄積するとか, 自前で完結できる形でできないかなぁ,とも...... 自前で完結するとなると全体のデータの中の単語量を調べるってので、 なんとかなるかもかも。 でも、ある程度大きな規模のデータがないと 結果に偏りが出ると思います。
人が少ないスレ・板だと、やっぱり恥ずかしい思いをすることになるのかな。
>>17 ですねぇ.最初のうちしばらくは,キーワード表示はせず単語データ収集のためだけに動かすとか......
で,クローラをがんがん動かすことになると,バーボンに引っかからないようにしてもらった方がいいのかも.
あと,DB (MySQL) もぼちぼち立ち上げてもらった方がいいのかも.
全体の単語量を調べるのであれば、Ngramのsennaとか入れたほうがいいかもです。 >MySQL
>>19 MySQL は帰宅後にでも。
# なお、私は MySQL のチューニングについてはほとんど素人です。
MySQLを覚えるいい機会が出来てなによりです。 えぇえぇ。
>>20 これですか.
http://qwik.jp/senna/FrontPageJ.html >>21 まぁ,パーサはこれから作るって段階なので,急ぎではないです<MySQL
>>19 サーバは、p2/c2 どちらで上げましょうか。
>>27 そうですねぇ......とりあえず p2 の方でおながいします.
>>28 了解です。
# ちと明日とても早いので、明日以降に。すんませんです。
試しにクローラ部分だけぶん回す実験をちょっとしてみようとか思ったりも するんですが,今 read.cgi 画面から読み込まれてる p.2ch.io のやつを p2.2ch.io に変えちゃったりしてもいいんですかね? あと,c2.2ch.io をバーボン対象から外さないと引っかかる可能性も あるかも知れないですが,外してもいいんですかね? それと......[cp]2.2ch.io には LAN セグメントは1つしかつながってないようですが, [cp]2.2ch.io 同士のやりとりのためにプライベートアドレスを論理 I/F というか alias で付与するとかは可能なんですかね......?
>>31 > 今 read.cgi 画面から読み込まれてる p.2ch.io のやつを
> p2.2ch.io に変えちゃったりしてもいいんですかね?
様子を見ながらなら、いいんではないでしょうか。
> c2.2ch.io をバーボン対象から外さないと引っかかる可能性も
> あるかも知れないですが,外してもいいんですかね?
リロードバーボンですね。
心配要らないはず。理由は別途メールででも。
> プライベートアドレスを論理 I/F というか
> alias で付与するとかは可能なんですかね......?
できるはず。
ちょっとトライしてみます。
というか、、、。 p2 と c2 の間の通信って、多くなりそうなのかしら。 それなら 100Mbps に I/F を変更してもらったほうがいいのかなと。
>>32-33 乙です.
>リロードバーボンですね。
>心配要らないはず。理由は別途メールででも。
あ,そうだったんですか.
>p2 と c2 の間の通信って、多くなりそうなのかしら。
とりあえず思い付くものとして
・ p2 から c2 にクロールすべき URL を投げる.
・ c2 から p2 にレコード登録のための MySQL のクエリーを投げる.
これらがどの程度か,ってところですかねぇ......
[cp]2 にプライベートアドレスを振りました。 いくつを振って、それがどのような名前で参照できるかは、 セキュリティ上ここでは書かないので、 すみませんが該当サーバの /etc/hosts あたりを見ていただけると。
>>34 > あ,そうだったんですか.
というか、管理人が自らのためにやるもの(ブラジル等)については、
そもそもリロードバーボンの対象外にする(している)という話ですね。
> とりあえず思い付くものとして
> ...
> これらがどの程度か,ってところですかねぇ......
統計とってみるですかね。
これは別途。
http://p2.2ch.io/getf.cgi?http ://qb5.2ch.net/test/read.cgi/operate/1166328527/l50
のように呼ぶと crawld に dat の URL 投げるようにしますた.
さて,やってみるかな......<read.cgi 画面から読み込み
おぉ。はじまっている。 crawld を自動起動するしかけ等が必要になったら、 ここでお知らせくださいです。
>>39-40 ども.まぁ今は getf.cgi に渡された URL を単純に (dat の URL に変換した上で)crawld に投げてるだけなんですが, ---------------------------------------------------------------------- last pid: 74880; load averages: 0.02, 0.06, 0.04 up 15+18:27:52 15:22:53 170 processes: 1 running, 169 sleeping CPU states: 0.2% user, 0.0% nice, 0.5% system, 0.2% interrupt, 99.2% idle Mem: 64M Active, 1659M Inact, 196M Wired, 81M Cache, 112M Buf, 2996K Free Swap: 2048M Total, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 74627 c22chio 1 4 0 5452K 4120K kqread 0 5:37 4.54% crawld ---------------------------------------------------------------------- CPU の能力的には余裕っぽいですね.ただ, ---------------------------------------------------------------------- [crawld statistics] Tue, 19 Dec 2006 14:04:38.945 (JST) user CPU time = 0:00:11.052, system CPU time = 0:00:33.811 elapsed time = 0:13:18.542, CPU load = 5.62% total workers = 8, idle workers = 0 minor page faults = 3656, major page faults = 0, swaps = 0 block inputs = 3837, block outputs = 3329 messages sent = 28359, messages received = 691574 signals = 5, vol ctx switches = 664364, invol ctx switches = 60839 URLs: input = 55614, done = 25802, error = 1445 ---------------------------------------------------------------------- [crawld statistics] Tue, 19 Dec 2006 15:23:19.866 (JST) user CPU time = 0:01:25.717, system CPU time = 0:04:12.259 elapsed time = 1:31:59.462, CPU load = 6.12% total workers = 8, idle workers = 0 minor page faults = 63546, major page faults = 0, swaps = 0 block inputs = 111588, block outputs = 17339 messages sent = 385824, messages received = 3511819 signals = 7, vol ctx switches = 3126563, invol ctx switches = 500464 URLs: input = 376259, done = 355261, error = 20952 ---------------------------------------------------------------------- 動かし始めの dat をガンガン転送してる時は URL の input に対し done が追い付いてない感じ,一方ずっと動かしてて重複した URL への 304 レスポンスが増えてくると差が縮まって追い付いてきてる感じかなぁ. これを見ると,ネックはネットワーク帯域? >>41 > これを見ると,ネックはネットワーク帯域?
まずは計測してみるです。
そのうえで、次の手を。
いつの間にか p2 が p に戻ってたんですが......重かったからかな? まぁ,c2 が涼しい顔してた一方で p2 は忙しそうでしたが...... getf.cgi はとりあえず SpeedyCGI で書いてたんですが, DSO にした方がいいのかなぁ......
>>43 > いつの間にか p2 が p に戻ってたんですが......重かったからかな?
きっと、あっちの繁盛しているスレの作業と、
更新作業がバッティングしたんではないかと。
で、とりあえずトラフィックと httpd へのアクセス数をとりはじめてみた。
http://mumumu.mu/mrtgi/ >>44 あ,じゃあ誰かが意図的に戻したんじゃなかったんですね.
じゃあちょろさんにお願いすればいいのか.
>で、とりあえずトラフィックと httpd へのアクセス数をとりはじめてみた。
乙です.
>>45 しばらくはあのスレあたりで「read.cgi 更新しますけどOKでしょうか」とか、
「更新しました」みたいなことをすればいいと思いますです。
今は絶賛上映中みたいなので、幕間にでも。
> じゃあちょろさんにお願いすればいいのか. 作業がバッティングしないのであれば、 更新はたんたんとやってしまってよいと思われ。
それで、PHP は少なくとも今は使わないかんじみたいなので (SunOS さんからによると)、 とりあえず、はずしておきます。< [pc]2.2ch.io # PHP + eAccelerator なので、メモリをかなり食っているため。
>>46-47 今は,目下 dso でちょろさんらしき人がリアルタイムで
read.cgi の書き換え作業中のようですね.しばらく待ちますか......
>>49 とりあえずそれでいいと思います.
さて,p2 に戻すことができますた.ついでにテストのため時間制限も外してみた,とw
-M8 を -M32 ぐらいにしてもいいかも。 で、PHP はずして楽になったので、 httpd の数をもう少し増やしておきます。 < p2.2ch.io
>>52 乙です.
>-M8 を -M32 ぐらいにしてもいいかも。
そうしてみますた.
落ち着いたかな。 これだけアクセスが多いと、suexec のオーバーヘッドがばかにできないですね。
>>55-56 乙です.まぁ PHP なしなら worker MPM にするってのもありでしょうし.
>>57 今は dso から配ったやつ全部なんでしたっけ。
雪だるまとか news4vip とかはまだと。
>>58 配布は dso 上でしかやってませんです.
きついかも、、、。 KeepAlive Off にしてみた。
ちょっと鯖名による選別も外してみますたが,かなり苦しそうだったのでそれは戻しますた......
kern.ipc.maxpipekva exceeded; see tuning(7) kern.ipc.maxpipekva exceeded; see tuning(7) kern.ipc.maxpipekva exceeded; see tuning(7) ... と出ているですね。 できる範囲で、ちと大きくします。
kern.ipc.maxpipekva=41943040 にしようかと思いましたが、ちょっと怖いですね。 メモリ4Gのサーバでは実績ありますが(雪だるまtiger/cobra)、 それ以外ではやったことがあったかどうか。
>>63-64 乙です.しかし,p2 は httpd だけで苦しいとなると,DB 鯖は独立させた方がいいかもですね.
c2 は c2 でパーサが重くなりそうだし.あと,c2 のトラフィック見ると
やはり 10M 近辺で張り付いてますね......
これは、大変ですね。 ちょっとオフラインになるので、いったん撤退に一票かな。 SpeedyCGI でももたないと。
というか管理人からは「どこまでいけるかを見極める」ことも目的だから、
いきなりほぼ全サーバに敷衍して負けだった、ということがわかった、
ということなのかなと。
で、
>>65 にもありますが、可能であればデータリングは
100Mbps にしてもらったほうがよさそうなかんじですね。
# もう少ししたら、ちとオフライン。
>>66 時間制限も復活させました.で,今の時間は一休み,と......
で、p2 の httpd が売り切れにならないように、 起動されるやつをできるだけ軽く、コンパクトにするかんじかなと。
>>69 ですかね,ともあれ乙ですた.
とりあえずわかったことは
・ p2 の httpd を何とかしなければ......
・ NIC のスピードも 100Mbps にしないと......
・ crawld 自体は能力的にはまずまず,か......
>>70 SunOSさんもおつでした。
> ・ p2 の httpd を何とかしなければ......
どんなかんじですかね。
- SpeedyCGI => dso
- いずれにしても
>>69 > ・ NIC のスピードも 100Mbps にしないと......
これは、依頼するかんじで。
> ・ crawld 自体は能力的にはまずまず,か......
いつもながら、さすがですね。
lighthttpdとspeedyとかだとどうなんすかね。
>>71-72 どうしましょうか......まぁ DSO にすれば軽くなるのは確実だとは思いますが,
柔軟にいじりにくくなるのがマイナスかも?(まぁ最終手段としてはそれしかないでしょうけど)
p2 での問題は......
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/access/p22chioaccess.html 100 回 / 秒を超えるアクセスがほとんど CGI に対するものだ,ってことですかね.
http://mumumu.mu/mrtg/mrtg-rrd.cgi/access/life7access.html http://mumumu.mu/mrtg/mrtg-rrd.cgi/read/life7readdat.html ↑なんかと比べると,アクセス数そのものは普通の 2ch の tiger 鯖への
ものと比べてそんなに多いわけではないようですが,静的ファイル + DSO が
多くを占めるか SpeedyCGI が多くを占めるか,というのが違いのようで.
SpeedyCGI 使用を前提に考えるなら,とりあえず speedy プロセスの fork(), exec() 回数が
ものすごいことになっていて,そのオーバヘッドもかなりのものになってそうな気がするので,
mod_speedycgi というのも1つの選択肢かなぁ(ただし worker MPM だとダメですが).
ついでに......これ見るとなんか面白いですねw
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ 昨晩は 21 時過ぎぐらいにやめたので p2 のトラフィックもそれとほぼ同じぐらいに
沈静化してますが,c2 の方は 10 Mbps の天井に抑え付けられてたために
22 時半ぐらいまで続いていたと......
>>72 今回のは CGI の、かつ fork/exec の負荷のようですね。
つまり、
>>73 > 静的ファイル + DSO が
> 多くを占めるか SpeedyCGI が多くを占めるか,というのが違いのようで.
なので、
> mod_speedycgi というのも1つの選択肢かなぁ(ただし worker MPM だとダメですが).
にするというのは、効果ありかも。
# for mod_speedycgi <IfModule speedycgi_module> <Files むぎゅ> SetHandler speedycgi-script </Files> </IfModule> にしてみた。
>>75 なんとなく、問題なさげ。
CPU idle time が増えたっぽいかな。
あと、10Mbps => 100Mbps の作業中は、 当然サーバ落ちますが、その間 read.cgi の動作に影響ないのかしら。 あるなら、その間は一時的にはずす必要あり?
>>75-76 乙です.
>>77 <iframe> の中身が読めないだけで,read.cgi 出力の表示そのものは可能ですね.
ただ,その <iframe> の読み込みが終わらない状態が続くとウザいと感じる利用者は
いるかも知れませんが......
>>78 > <iframe> の中身が読めないだけで,read.cgi 出力の表示そのものは可能ですね.
…であれば、NIC の速度を変えるぐらいの作業なら
そのまま動かしてもとりあえず問題なさげですね。
>>80 作業依頼を出せと、、、。
そんなわけで、こちらはたんたんと。
今、トラフィック的に「フルスペック」なんでしたっけ。 もしそうなら、まずは 10Mbps で動かしてみて、 どうなるのか見てみようかなと。
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ 昨晩は,20:20 頃〜21:10 頃に放り込まれた URL を処理するために
22:30 頃まで crawld が働き通しだった模様ですが,時間制限や
鯖名による選別も撤廃した場合,次の日のピーク時間までに
処理し終えるかどうか......まぁ実験としては面白いですがw
まぁ,ともあれ mod_speedycgi は今のところかなり効果あるっぽいですね. 昨日の今頃の時間は Load Avg. 軽く二桁超えてましたが,今は1未満ですし<p2
1日強程度動かしただけで,もう /home 半分近く消費してますね. まぁ単にテストで動かしてるだけなんで,頃合い見計らってごっそり消してもいいんですが. Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/amrd0s1g 23793186 10653300 11236432 49% /home
昨晩に比べると p2 はかなり余裕っぽいんで,また時間制限と鯖名選別を外してみますた. 外す前 Load Avg. は 1 未満だったのが 2〜3 台ぐらいになってますが,昨晩のように 破綻寸前なんてことはなく,十分捌ききれる範囲って感じしますね. ちなみに c2 の方は 0.1〜0.2 前後.トラフィックは急に跳ね上がって, また 10 Mbps の天井に抑え付けられてるようで.URL をキューイングするため プロセスサイズは肥大化してきてますね<crawld 現在 36 MB ぐらいですが, 増加のペースは結構速い...... GB 単位とかになったりしてw
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/access/p22chioaccess.html 制限撤廃後 450 アクセス / 秒ぐらいまで逝ってますが,
比較的無難にこなしていたようですね<p2
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ c2 のトラフィックは意外と早く天井から離れてる......
ずっと動かし続けてれば 304 レスポンスが増えてくるからかな.
crawld のプロセスサイズは 359MB になってますがw
とはいえ,今はまだ dso から read.cgi を配布できる鯖の分だけなんですよね.
Apache 2.2 の鯖の分は live22(というか live24b)から配布でいいんですかね?
>>87 cgi 起動数が多い場合には、
CGIモード→Apacheモジュールモード への変更の効果は絶大みたいですね。
> Apache 2.2 の鯖の分は live22(というか live24b)から配布でいいんですかね?
live24b になります。
既に配布リストは更新しました。
ソースを dso からコピーして、コンパイル・配布すれば OK です。
あ、そか。
雪だるまフロントに例の /i を作らないといけないかも。
>>88 雪だるまでの read.cgi の配布の前に、
かっこいいおにいさんに確認したほうがいいかもです。
これをやると、雪だるまでもおすすめなんたらが有効になるような気がするので。
>>87 > c2 のトラフィックは意外と早く天井から離れてる......
> ずっと動かし続けてれば 304 レスポンスが増えてくるからかな.
ふむ、、、。100Mbps にすれば解決できそうですかね。
> crawld のプロセスサイズは 359MB になってますがw
trim するようなしくみとかはある(or 入れる予定)のかしら。
>>88 >cgi 起動数が多い場合には、
>CGIモード→Apacheモジュールモード への変更の効果は絶大みたいですね。
ですね.
>>89 ですね,そうする時には......
>>90 >ふむ、、、。100Mbps にすれば解決できそうですかね。
ですかねぇ......というか
dev.em.0.%desc: Intel(R) PRO/1000 Network Connection Version - 6.2.9
ってことは......1Gbps とかも可能だったり?
# まぁスイッチとかも対応してないとしょうがないでしょうけど.
>trim するようなしくみとかはある(or 入れる予定)のかしら。
使い終わった URL キューは順次 free() するようになってるんですが......
と思って見てみたら......渡された URL を全部捌き切ってないから残ってることが判明.
今は試しに p2 から URL 投げるのをやめさせてるんですが,
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ 波形に多少乱れはあるものの,c2 のトラフィックは URL 投げるのをやめる前と
さほど大きくは変わらない感じですねぇ(以下のように URL の input は変わらず
done は増えてます).これをどう解釈すべきか......
ユーザの活動が活発な時間帯は 200 レスポンスが多く,静かな時間帯は
304 レスポンスが多くなる.で,304 レスポンスの場合パケットサイズが
小さくなるので見かけ上のトラフィックは減少する,しかし実際には
ネットワーク帯域の天井に抑え付けられてる状態には変わりない.
という仮説を考えたりしましたが,さて......
----------------------------------------------------------------------
[crawld statistics] Thu, 21 Dec 2006 14:56:22.909 (JST)
user CPU time = 0:40:40.122, system CPU time = 1:47:09.506
elapsed time = 49:05:02.506, CPU load = 5.02%
total workers = 23, idle workers = 3
minor page faults = 494840, major page faults = 1, swaps = 0
block inputs = 4778572, block outputs = 358959
messages sent = 10089189, messages received = 58823961
signals = 23, vol ctx switches = 35525493, invol ctx switches = 7880999
URLs: input = 16004864, done = 9374851, error = 539962
----------------------------------------------------------------------
[crawld statistics] Thu, 21 Dec 2006 15:21:15.910 (JST)
user CPU time = 0:41:39.791, system CPU time = 1:48:28.385
elapsed time = 49:29:55.507, CPU load = 5.06%
total workers = 23, idle workers = 2
minor page faults = 495776, major page faults = 1, swaps = 0
block inputs = 4848821, block outputs = 363356
messages sent = 10214877, messages received = 59170017
signals = 24, vol ctx switches = 35671856, invol ctx switches = 8000494
URLs: input = 16004864, done = 9492604, error = 546602
URLs: input = 16004864, done = 9492604, error = 546602 49時間でってことですか?
>>92 そういうことですね.ただ,10 Mbps の天井に抑え付けられたゆえ
input に done が追い付いてないという可能性が高いので,
NIC 速度が速ければ input と done の差はもっと縮まりそうな気がします.
で,昨日 14 時ぐらいから crawld に URL 投げるのをやめていて,
crawld 内部にため込んだキューの URL を黙々と処理している,つまり
p2 の getf.cgi 呼び出し数と c2 のトラフィックは直接関係ないはずですが
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ 振幅こそ小さいものの c2 のトラフィックは p2 の波形と相似してますね.
これは,やはり
>>91 の仮説は合っているということなのかも......
>>94 いつでしょうね......
で,やっと処理し終えたようで (16004864 == 14898974 + 1105890).
----------------------------------------------------------------------
[crawld statistics] Fri, 22 Dec 2006 07:37:46.952 (JST)
user CPU time = 1:02:36.154, system CPU time = 2:36:48.069
elapsed time = 65:46:26.549, CPU load = 5.56%
total workers = 0, idle workers = 0
minor page faults = 513650, major page faults = 1, swaps = 0
block inputs = 7291510, block outputs = 500784
messages sent = 16230355, messages received = 74098823
signals = 28, vol ctx switches = 45133077, invol ctx switches = 12898923
URLs: input = 16004864, done = 14898974, error = 1105890
----------------------------------------------------------------------
しかし,これもまた......いったんごっそり消しておこうw
----------------------------------------------------------------------
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/amrd0s1g 23793186 20773904 1115828 95% /home
----------------------------------------------------------------------
>>94 >>82 の結果「やはり10MBpsではそこの部分が障害となる」ことがわかったので、
私のほうからメールで、以下のオーダー出しておくです。
1) 10Mbps→100Mbpsへの変更
2) p2.2ch.io ⇔ c2.2ch.io 間のクロスケーブルでの直結
>>94 ・通信速度のアップグレード
・p2.2ch.io と c2.2ch.io の間の直結(2nd I/F 使用)
を、今メールでお願いしました。
次にリブートすると設定が変わるように /etc/rc.conf を設定して、
スイッチの設定変えたらサーバリセットしてかまわない、
と伝えました。。
>>98 × 次にリブートすると設定が変わるように /etc/rc.conf を設定して、
○ 次にリブートすると設定が変わるように /etc/rc.conf を設定してあるので、
あけましておめでとうございます.本年もよろしくです. さて,まだ 10Mbps のままなんですが,とりあえず試運転ってことでパーサも含め動かし始めてます. # MeCab / MySQL は,とりあえずホームディレクトリに突っ込んでます. しかし,予想通りパーサ,特に MeCab での単語切り分け処理が重いようですね. ---------------------------------------------------------------------- last pid: 80257; load averages: 3.70, 3.92, 3.83 up 28+04:11:24 01:06:25 1375 processes:18 running, 1356 sleeping, 1 lock CPU states: 77.7% user, 0.0% nice, 7.5% system, 1.5% interrupt, 13.3% idle Mem: 666M Active, 916M Inact, 312M Wired, 105M Cache, 112M Buf, 4216K Free Swap: 2048M Total, 132K Used, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 80076 c22chio 1 123 0 78644K 56276K RUN 2 42:24 76.51% perl5.8.8 80077 c22chio 1 120 0 77952K 43544K RUN 0 41:00 63.33% perl5.8.8 80079 c22chio 1 117 0 78168K 49140K CPU3 3 41:25 63.18% perl5.8.8 80078 c22chio 1 115 0 79636K 48336K CPU1 0 41:39 54.00% perl5.8.8 80093 c22chio 1 -16 0 11416K 10124K wdrain 1 9:11 13.43% crawld 67240 c22chio 45 4 0 317M 286M RUN 2 195:25 7.76% mysqld ---------------------------------------------------------------------- perl5.8.8 ってのがパーサなんですが,CPU 4 つなのでプロセス数も 4 にしてます. あと,フロント側はこんな感じ.LA の数値は劇的に高いってほどでもないんですが, getf.cgi の取得で引っかかり感があるかな,と...... ---------------------------------------------------------------------- last pid: 40422; load averages: 2.79, 3.33, 3.66 up 28+06:03:16 01:08:11 1345 processes:26 running, 1319 sleeping CPU states: % user, % nice, % system, % interrupt, % idle Mem: 546M Active, 271M Inact, 372M Wired, 5652K Cache, 112M Buf, 807M Free Swap: 2048M Total, 432K Used, 2047M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 40421 p22chio 1 97 0 5560K 4168K select 1 0:00 3.08% speedy_backen 40419 p22chio 1 97 0 5496K 4248K select 3 0:00 2.42% speedy_backen 40417 p22chio 1 96 0 5640K 4432K select 2 0:00 1.88% speedy_backen 40420 p22chio 1 4 0 5500K 4224K sbwait 0 0:00 1.88% speedy_backen 40415 p22chio 1 4 0 6048K 4628K sbwait 3 0:00 1.86% speedy_backen 40418 p22chio 1 96 0 5640K 4468K RUN 0 0:00 1.75% speedy_backen 40403 p22chio 1 96 0 6804K 5524K select 3 0:01 1.55% speedy_backen ----------------------------------------------------------------------
関連キーワードをおすすめ2ちゃんねるみたいにCGIを叩かずに取得できるようにして欲しい。 スレの話題が分かりやすくて便利なので。
>>102 read.cgi に直接組み込むってことですか? そうすると read.cgi 自体が重くなる要因になるような......
# p2.2ch.io が重くなっても read.cgi の表示そのものに影響を与えないように今の形になってるんで......
>>104 http://p2.2ch.io/getf.cgi?http ://qb5.2ch.net/test/read.cgi/operate/1166328527/ とかじゃダメなんですかね?
それはともかく,表示用キーワード抽出を始める前にあらかじめ約26万 URL 分のデータを蓄積してから開始したわけですが
mysql> SELECT COUNT(*) FROM urls;
+----------+
| COUNT(*) |
+----------+
| 377699 |
+----------+
結構たまってきたかな.表示用キーワードが抽出されてない URL 数は
mysql> SELECT COUNT(*) FROM urls LEFT JOIN dispwords ON urls.id = dispwords.url_id WHERE dispwords.url_id IS NULL;
+----------+
| COUNT(*) |
+----------+
| 147607 |
+----------+
まで減ってきてるんで,約23万 URL 分のキーワードを抽出した,と......
パーサは相変わらずフル回転ですがw
last pid: 86427; load averages: 3.71, 3.81, 3.76 up 29+13:01:16 09:56:17
1376 processes:7 running, 1369 sleeping
CPU states: % user, % nice, % system, % interrupt, % idle
Mem: 859M Active, 743M Inact, 313M Wired, 84M Cache, 112M Buf, 3416K Free
Swap: 2048M Total, 60K Used, 2048M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
83069 c22chio 1 121 0 128M 98076K CPU3 3 564:41 75.68% perl5.8.8
83068 c22chio 1 123 0 128M 100M RUN 0 565:13 75.20% perl5.8.8
83070 c22chio 1 121 0 129M 104M RUN 2 563:53 71.78% perl5.8.8
83067 c22chio 1 118 0 126M 92476K RUN 0 565:14 67.97% perl5.8.8
67240 c22chio 46 96 0 317M 288M RUN 0 714:55 12.55% mysqld
80093 c22chio 1 4 0 7772K 6532K kqread 0 189:24 5.57% crawld
2chブラウザに関連キーワードを組み込むときに、毎回CGIを叩くのは負荷がかかりそう。 別にいいなら今の仕様でもいいんだけど。
リンク先がこんな風になってるのは仕様でしょうか。
http://find.2ch.net/?BBS=ALL& ;amp;TYPE=TITLE&ENCODING=SJIS&STR=workers
専ブラで読み込ませたらfindのトップに飛ばされた
iframe が height=15 だと 3pix ほど足りなくて下のほうが欠けています(firefox2@win) height=18 程度に増やすか、文字を小さくしてもらえないでしょうか?
>>106 read.cgiに負荷をかけるよりはマシかと。
>>106 内部的に登録されているキーワードは最大10なんですが,
そのうち7つをランダム表示するような仕様になってます.
通常なら,個人的には Last-Modified 吐き + mod_cache 利用推進論者なんですが,
キャッシュさせるとランダム表示ができなくなるというのがネックですね.
ただ,CGI 側で MySQL のクエリー結果をキャッシュするようにはなってます.
# もっとも,そのキャッシュはプロセス単位なんですよね.今は -M32 になってますが,
# これを減らした方がキャッシュヒット率は向上するかと思うんですが,さて......
あと,getf.cgi で一番重い処理はその MySQL へのクエリー部分で,
それ以外は単純に結果を吐くだけなんで,304 レスポンスを返すようにしても
大して変わらないんじゃないかという感じではあるんで(304 レスポンスを
返すとすると,mtime と If-Modified-Since の比較処理も Perl でやることになるし).
>>107 (X)HTML 的には,<a> タグの href 属性中の & は,本来 & のように
エスケープすべきものなんです(例えば CGI のパラメータで lt とか gt なんてのが
あったらどうなるか......と考えればわかるかと).
>>108 font-size: 13px; にしますた.
いつの間にか,雪だるまや ex17 などの read.cgi も p2.2ch.io の方を読み込んでますね.
ってことは,時間制限なしで 2ch 全鯖対象にしても,少なくとも Load Avg. 的には破綻せず処理できてる,と.
11:38PM up 30 days, 4:33, 1 user, load averages: 2.49, 3.16, 3.20 @c2.2ch.io
11:39PM up 30 days, 4:34, 1 user, load averages: 2.66, 3.15, 3.19 @p2.2ch.io
キーワードが蓄積されるに伴い,クローラはあまりファイルを取得しに逝かなくなるので
c2 のトラフィックは減ってきてますが,逆にキーワードを表示する p2 のトラフィックは増えてますね.
http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ 10個全部を吐くようにして、 javascript側でランダム表示にしちゃうとか。
そもそも、たかが10個のうち7個をランダムで表示する必要があるのだろうか。 100個あるならともかく。
今年もよろしくお願いいたします。 まずは、MySQL のインストールからですね。 普通に 5.x を入れればいいのかしら。 何か特別な設定が必要な場合、ここで教えてくださいです。
で、10Mbps → 100Mbps ですが、 どうも依頼がうまく受け付けられていないようなので、 メールでたんたんと依頼(催促)するということで。
>>120 了解です。それで。
まずは、mecab-0.93 を入れました。
MySQL は本日帰宅後にでも。
tf-idfを2chDB自体を使ってやるとすると、 sennaは必須になりますね。。と。
>>122 これですか。
Senna 組み込み型全文検索エンジン
http://qwik.jp/senna/FrontPageJ.html これ入れればいいのかな。
/usr/ports/textproc/senna
MySQL とともに、入れておくです。
>>114 HTML モード(鯖側でランダム表示・Last-Modified なし): http://p2.2ch.io/getf.cgi?http ://qb5.2ch.net/test/read.cgi/operate/1166328527/ JavaScript モード(クライアント側でランダム表示・Last-Modified あり): http://p2.2ch.io/getf.cgi?qb5.2ch.net+operate+1166328527 で,とりあえず read.js では JavaScript モードの方を使ってます. >>118-119 こちらこそよろしくです.で,入れてもらうのは MeCab と MySQL ですね.留意事項ですが * mecab-0.93 * mecab-perl-0.93 * mecab-ipadic-2.7.0-20060707 MeCab はデフォルトでは EUC-JP を使うのですが,Shift JIS を使うようにビルドして下さい. その場合,ports だとどうだかわかりませんが,少なくともオリジナル版だと configure 時に CPPFLAGS=-I/usr/local/include LDFLAGS='-L/usr/local/lib -R/usr/local/lib' を 指定しないと libiconv の存在を認識してくれないので,Shift JIS の辞書を作れません. で,辞書 (mecab-ipadic) の configure 時に --with-charset=sjis を指定してもらう,と. * mysql-5.0.27 設定ファイル (my.cnf) は,現在 my-large.cnf をベースにして [mysqld] のセクションに以下の設定を追加しています. bind-address = private_address_of_c2.2ch.io character-set-server = cp932 collation-server = cp932_bin あと,レプリケーションとかやらなければバイナリログなしでいいのかな. 少なくとも,今のところ MySQL は分散処理とか考えなきゃならんほど重くないですし. バイナリログなしなら log-bin=mysql-bin の行はコメントアウトで. # バイナリログのサイズもバカにならないんで...... # -rw-rw---- 1 c22chio ch2 1073742810 1 1 12:57 mysql-bin.000001 # -rw-rw---- 1 c22chio ch2 1073741960 1 3 10:33 mysql-bin.000002 # -rw-rw---- 1 c22chio ch2 830519196 1 4 16:56 mysql-bin.000003 あと,すでにこんだけ容量食ってるんで,データディレクトリは /home 配下に作らないと入らないと思います...... 654 data/mysql 2 data/test 3136188 data/keywords 6068946 data >>125 > MeCab はデフォルトでは EUC-JP を使うのですが,Shift JIS を使うようにビルドして下さい.
おぉ、なるほど。
入れなおしっすね。senna もそうかな。
では、そのように。
* DBD-mysql-4.00
元々 3.0008 が入ってたんですが,いくつか問題があったので自分で入れた 4.00(+ 若干修正)を使ってます.
・ server side prepare を有効にしていると LOAD DATA INFILE が使えない(3.0008 での問題,4.00 は Ok).
・ server side prepare を有効にしかつ SQL 文中で placeholders を使うと,
2回目以降の execute() で SIGSEGV になる(4.00 でも存在する問題,自分で修正).
・ CALL ステートメント(stored procedure の呼び出し)で server side prepare が無効にされてしまう(これも自分で修正).
まぁ,修正といっても微々たるもんですが.
--- DBD-mysql-4.00/dbdimp.c Sun Dec 24 23:04:59 2006
+++ DBD-mysql-4.00/dbdimp.c Sun Dec 31 18:30:00 2006
@@ -2485,2 +2485,3 @@
+#if 0
if ( (tolower(*(str_ptr + 0)) == 'c') &&
@@ -2495,2 +2496,3 @@
}
+#endif
@@ -3766,2 +3768,3 @@
}
+#if 0
/* clean up other statement allocations */
@@ -3779,2 +3782,3 @@
num_fields= DBIc_NUM_FIELDS(imp_sth);
+#endif
あと,c2 の方でも httpd がたくさん立ち上がってるんですが,
こっちは必要最低限の数だけでいいような......
>>122 ん〜と,以前そう言われたことがあってそうしなきゃならんのかなぁ,
と思いつつ考えてたんですが,Senna って全文検索エンジンですよね.
使うとすれば,ドキュメント全体を MySQL に入れるってことでしょうか?
今のやり方は,表示用キーワードとは別に DF 計算用の単語も
登録してるんですが,ドキュメント全体ではなく切り出した単語を
個別に登録してまして,全文検索は行ってません.っていうか,
ドキュメント全体を登録してると HDD 容量が半端ないぐらい必要になるような......
DF 計算用の単語の切り出し方によると思いますが、 母集団を反映してる標本なら、 それでもいいと思いますー。
>>128 今は,各 URL ごとに TF が上位 200 までの単語を登録してます. 仕組み的には,この数をもっと増やすことも不可能ではありませんが, HDD 消費量やパフォーマンスなどとのバランスを考えるとこのぐらいかなぁ,と...... mysql> SELECT (SELECT COUNT(*) FROM urls) 'URL 総数', (SELECT COUNT(*) FROM words) '単語総数', (SELECT COUNT(*) FROM regwords) 'DF 計算用単語の URL との関連付け総数', (SELECT COUNT(*) FROM dispwords) '表示用単語の URL との関連付け総数'; +----------+----------+--------------------------------------+-----------------------------------+ | URL 総数 | 単語総数 | DF 計算用単語の URL との関連付け総数 | 表示用単語の URL との関連付け総数 | +----------+----------+--------------------------------------+-----------------------------------+ | 465918 | 1064955 | 73515988 | 4320516 | +----------+----------+--------------------------------------+-----------------------------------+ -rw-rw---- 1 c22chio ch2 108017350 1 4 22:14 dispwords.MYD -rw-rw---- 1 c22chio ch2 75264000 1 4 22:14 dispwords.MYI -rw-rw---- 1 c22chio ch2 8632 1 1 20:13 dispwords.frm -rw-rw---- 1 c22chio ch2 1604234751 1 4 22:14 regwords.MYD -rw-rw---- 1 c22chio ch2 1312161792 1 4 22:14 regwords.MYI -rw-rw---- 1 c22chio ch2 8626 1 1 20:19 regwords.frm -rw-rw---- 1 c22chio ch2 34500696 1 4 22:14 urls.MYD -rw-rw---- 1 c22chio ch2 20992000 1 4 22:14 urls.MYI -rw-rw---- 1 c22chio ch2 8694 1 1 20:13 urls.frm -rw-rw---- 1 c22chio ch2 33554972 1 4 22:14 words.MYD -rw-rw---- 1 c22chio ch2 44557312 1 4 22:14 words.MYI -rw-rw---- 1 c22chio ch2 8612 1 1 20:13 words.frm 何かゴミデータが混ざってるな,と思ったら...... server side prepare モードは
DBD::mysql の作者もちゃんとテストしてないんですかね.
>>127 のパッチからさらに修正.
--- DBD-mysql-4.00/dbdimp.c Sun Dec 24 23:04:59 2006
+++ DBD-mysql-4.00/dbdimp.c Sat Jan 6 06:00:00 2007
@@ -2485,2 +2485,3 @@
+#if 0
if ( (tolower(*(str_ptr + 0)) == 'c') &&
@@ -2495,2 +2496,3 @@
}
+#endif
@@ -3766,2 +3768,3 @@
}
+#if 0
/* clean up other statement allocations */
@@ -3779,2 +3782,3 @@
num_fields= DBIc_NUM_FIELDS(imp_sth);
+#endif
@@ -4457,3 +4461,3 @@
/* Type of column was changed. Force to rebind */
- if (imp_sth->bind[idx].buffer_type != buffer_type)
+ /* if (imp_sth->bind[idx].buffer_type != buffer_type) */
imp_sth->has_been_bound = 0;
DBD::mysqlってよくつかわれてそうなのに。。
>>132 DBD::mysql 自体はよく使われてても,server side prepare は デフォルトでは off なのであまり使われてないのかも...... http://search.cpan.org/ ~capttofu/DBD-mysql-4.00/lib/DBD/mysql.pm Prepared statement support (server side prepare) As of 3.0002_1, server side prepare statements were on by default (if your server was >= 4.1.3). As of 3.0009, they were off by default again due to issues with the prepared statement API (all other mysql connectors are set this way until C API issues are resolved). The requirement to use prepared statements still remains that you have a server >= 4.1.3 To use server side prepared statements, all you need to do is set the variable mysql_server_prepare in the connect: $dbh = DBI->connect( "DBI:mysql:database=test;host=localhost;mysql_server_prepare=1", "", "", { RaiseError => 1, AutoCommit => 1 } ); * Note: delimiter for this param is ';' There are many benefits to using server side prepare statements, mostly if you are performing many inserts because of that fact that a single statement is prepared to accept multiple insert values. >>135 ・10Mbps→100Mbps
・
>>125-126 の作業
- MySQL
- mecab
- c2 の httpd を減らす
あたりですか。
>>137 そんなところですね.ということでよろしくおながいします.
で,MySQL を入れるのは最初 p2 がいいかなと思ってたんですが,
現状を鑑みれば c2 の方が良さそうという気がしてます.
p2 で mod_speedycgi を使うということで prefork MPM 利用は確定のようですし,
そうなると p2 に MySQL を入れるとなるとメモリやコンテキストスイッチなどの
競合できつくなりそうですし.c2 でもパーサがフル回転してる時は CPU で競合しますが,
データ収集が一巡してからはパーサも常時フル回転ではなくなってますし(で,2日以上経過した
データから順次再クロールする処理も入れますたが,それも比較的余力を持ってこなしてますし).
p2 でもピーク時間帯はどっちにしろ CPU 食いますし,c2 ではプロセス数の少なさから
メモリやコンテキストスイッチなどで競合しにくいだろう,ってことで.
- 10Mbps → 100Mbps - p2 ⇔ c2 クロスケーブルで直結 について、再度メールで依頼しました。 関係者に Cc:。
>>135 スレ同士の自動リンクツールとするならもう少し人為を反映する仕様があったほうがいいような
今現在までの閉鎖騒動関連スレを幾つか見たけど 「24」を地で行くようなちょろの奮闘が眩しかった。 ひ(ryが2chを、というより、2chがこの男を失うか否かというような。 そんな風に見えなくもない今回の騒動。
これiframeでやってるのもったいないなぁ read.cgi直書きになる予定ってないんすかねぇ
>>144 read.js では iframe ではなく JavaScript による DOM 操作でやってます.
ただ,古いブラウザだと DOM をちゃんと扱えないかも知れないというところで,
read.cgi でその方式にするのは躊躇してます.
あと,管理人さんからは,2ch 専用でしか使えないものではなく
他のところでも汎用的に使い回しができる形で作ってほしいとも言われてたので,
read.cgi に依存する部分は小さくしておきたい,ということもあります.
停電の影響ですかね.httpd がちゃんとあがってなかったようです @p2 [Fri Jan 19 13:05:08 2007] [emerg] (2)No such file or directory: Couldn't initialize cross-process lock in child (/md/accept.lock.634) (5) c2 の方は MySQL とかパーサとか crawld とか手動であげておきますた. ついでに,my.cnf で log-bin=mysql-bin はコメントアウト,myisam-recover を追加. # MyISAM だから,いきなり落ちるってのは何となくやな感じではあるんですよね...... 070119 13:46:27 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/urls' is marked as crashed and should be repaired 070119 13:46:27 [Warning] Checking table: './keywords/urls' 070119 13:47:12 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/dispwords' is marked as crashed and should be repaired 070119 13:47:12 [Warning] Checking table: './keywords/dispwords' 070119 13:47:28 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/regwords' is marked as crashed and should be repaired 070119 13:47:28 [Warning] Checking table: './keywords/regwords' 070119 13:48:09 [Warning] Recovering table: './keywords/regwords' 070119 13:55:05 [ERROR] /home/c22chio/mysql/bin/mysqld: Table './keywords/words' is marked as crashed and should be repaired 070119 13:55:05 [Warning] Checking table: './keywords/words' 070119 13:55:13 [Warning] Recovering table: './keywords/words' 070119 13:55:13 [Note] Retrying repair of: './keywords/words' with keycache 070119 13:55:52 [Note] Found 1269663 of 1269666 rows when repairing './keywords/words'
>>146 上げました。
しかし、c2.2ch.io が落ちている予感。
>>147 復旧した模様。< c2.2ch.io
原因はカーネルパニック(ffs dup alloc)だったもより。
これ、HDD に強烈にアクセスする場合にごくまれに出るですね。
>>147-148 乙です.停電もアレですが,通常運用中にカーネルパニックってのも,ちょっとコワいですね......
# サイズのデカいテーブルが壊れると,リカバリに時間がかってしょうがないですねぇ......
# regwords はまだ半分ぐらいしか終わってない模様......
#
# -rw-rw---- 1 c22chio ch2 1868775426 1 20 23:40 regwords.MYD
# -rw-rw---- 1 c22chio ch2 973602816 1 21 02:34 regwords.TMD
# -rw-rw---- 1 c22chio ch2 1525427200 1 21 02:34 regwords.MYI
>>150 21位ですか・・・
平均滞在時間は、かなり上位になりますねぇ・・・
p2.2ch.io と c2.2ch.io があるのだが。 やっぱ携帯か。
なるほどね。 つーことは、あれか? mixiができたから2ちゃんねるが廃れるとかって今のところは無いのだな。
>>150 なるほど......まぁ read.cgi 画面に組み込まれて表示されますからね.
# 今 2ch.io で本格的にやってるサービスは,この関連キーワードぐらいなのかな......?
>>151 MERGE テーブルですね.有用性はあるようなので,ぼちぼち考えますか
(あるいは MyISAM から InnoDB に変えるかどうか,ってのも思案のしどころですが).
# もっとも,停電で落ちるってのがそもそも起こるべきでないことではありますが......
>>153 c2 ってのは携帯ではないですよ.あくまで裏方の処理をする鯖で,
一般閲覧者が直接アクセスする鯖ではないです.というか,read.cgi を
直接見られるフルブラウザ搭載の携帯って,まだ一部じゃないのかな......
>>161 きっと c.2ch.net や p2.2ch.net のイメージがあるので、
p2 とか c2 というホスト名だと、携帯関連だと思うんじゃないかなと。
2ch.ioのpとcは、パーサのpとクローラのcだったりする(命名は管理人)。
>>162 >2ch.ioのpとcは、パーサのpとクローラのcだったりする(命名は管理人)。
そうだったんですかぁ......しかし,現状では
p2: フロントエンド (getf.cgi)
c2: クローラ (crawld), パーサ (parsed.pl), MySQL
なので,c2 は pc2 にした方が「名は体を表す」ですねw
# p2 は 'p' が取れて,どうなるんだろ......
>>162 むむむの部屋では2ちゃんねる画像掲示板になってるよ。<up01.2ch.io
この鯖は
>>161 なのね。
>>164 あ、up01 ってもうないかも。
更新jしておきます。
既に削除済みだった。 < up01.2ch.io # おかしいと思った、、、。
たとえば、1日ごとにテーブルを作るようにして、 selectするときは、2週間分をMERGEとかにすると、 鮮度の高いものだけをとれるのと、 検索対象がリニアに大きくなるのは防げるかと。 古いのはdrop tableとかで捨てちゃうとかで。
>>170 mergeしようがしまいが、データ量がメモリ内に収まるのであれば、
オンメモリなので、コストはそんなに変わらないです。
データが肥大化してオンメモリで処理できなくなったときに、
ボトルネックが発生するので、
肥大化しないようにするほうがいいと思うのですよ。
2chの未来占いではこんな感じで出てるけど
http://aglgag.livedoor.biz/ 黒幕さんの生年月日も分かればリクエストしたいざんす
>>169 えとですね,regwords テーブルは登録時のみに使用するもので,getf.cgi での 表示時には使用しません.それ以外の3つのテーブルはそんなに大きくないです. あと,今は2日以上前の登録データを再クロールするようにしてますが, dat 落ちしたのは消されるようになってます.なので,古いデータがいつまでも 残るってことは基本的にないかと(流れの遅いスレのデータは残るでしょうけど). 実際,20日以上前の >>129 と比べても,若干大きくなってるものの膨張一直線って感じではないですし. mysql> SELECT (SELECT COUNT(*) FROM urls) 'URL 総数', (SELECT COUNT(*) FROM words) '単語総数', (SELECT COUNT(*) FROM regwords) 'DF 計算用単語の URL との関連付け総数', (SELECT COUNT(*) FROM dispwords) '表示用単語の URL との関連付け総数'; +----------+----------+--------------------------------------+-----------------------------------+ | URL 総数 | 単語総数 | DF 計算用単語の URL との関連付け総数 | 表示用単語の URL との関連付け総数 | +----------+----------+--------------------------------------+-----------------------------------+ | 527930 | 1341210 | 82159070 | 5090686 | +----------+----------+--------------------------------------+-----------------------------------+ -rw-rw---- 1 c22chio ch2 137734175 1 25 13:13 dispwords.MYD -rw-rw---- 1 c22chio ch2 103124992 1 25 13:13 dispwords.MYI -rw-rw---- 1 c22chio ch2 8632 1 20 23:13 dispwords.frm -rw-rw---- 1 c22chio ch2 1873328877 1 25 13:13 regwords.MYD -rw-rw---- 1 c22chio ch2 1572448256 1 25 13:13 regwords.MYI -rw-rw---- 1 c22chio ch2 8626 1 20 23:20 regwords.frm -rw-rw---- 1 c22chio ch2 41549264 1 25 13:13 urls.MYD -rw-rw---- 1 c22chio ch2 23207936 1 25 13:13 urls.MYI -rw-rw---- 1 c22chio ch2 8694 1 20 23:13 urls.frm -rw-rw---- 1 c22chio ch2 41199816 1 25 13:13 words.MYD -rw-rw---- 1 c22chio ch2 51624960 1 25 13:13 words.MYI -rw-rw---- 1 c22chio ch2 8612 1 20 23:13 words.frm ピーク時間帯で引っかかり感を感じることがあるのは,個人的には 登録処理時にテーブルロックで待たされるのが原因じゃないかと見てます. http://mumumu.mu/mrtgi/mrtg-rrd.cgi/traffic/ のグラフで,c2 のひろゆきさんのヒゲみたいwなのは再クロール処理によるものですが, ピーク時間帯では c2 のヒゲと p2 のへこみが連動してるのもそのためではないかと. InnoDB にすればテーブルロックはなくなる(しかもトランザクションログを使うので 鯖落ち後のリカバリに長時間かかることもなくなるでしょうし),その代わり 全般的に処理は重くなりそう,それで結果的にプラスになるかマイナスになるかは 予測がつかないので,思案のしどころということで...... # まぁ,それ以前にピーク時間帯は再クロールを停止すればいいのかもですがw ちなみに,getf.cgi でやってるクエリーはこんな感じですが, 特段のネックはないのではないかと...... mysql> EXPLAIN EXTENDED SELECT words.word, UNIX_TIMESTAMP(urls.mtime) FROM urls, dispwords, words WHERE urls.url = 'http://qb5.2ch.net/operate/dat/1166328527.dat' AND dispwords.url_id = urls.id AND words.id = dispwords.word_id; +----+-------------+-----------+--------+---------------+---------+---------+----------------------------+------+-------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+--------+---------------+---------+---------+----------------------------+------+-------+ | 1 | SIMPLE | urls | const | PRIMARY,id | PRIMARY | 514 | const | 1 | | | 1 | SIMPLE | dispwords | ref | url_id | url_id | 8 | const | 17 | | | 1 | SIMPLE | words | eq_ref | PRIMARY | PRIMARY | 8 | keywords.dispwords.word_id | 1 | | +----+-------------+-----------+--------+---------------+---------+---------+----------------------------+------+-------+ 3 rows in set, 1 warning (0.01 sec) 時代はInnoDBっすよ。 sennaを使うとかでなければ、 myIsamにするメリットってあんまりない気がします。
>>177 なるほど......やはり機能的にはそうなんですよね.
ただ,MyISAM vs InnoDB のベンチマーク結果の載ってるサイトとか見て回ってると,
パフォーマンス面で一抹の不安があったり......まぁベンチはいろんな条件次第で
結果は変わってくるんで,どっちに転ぶかは実際やってみないとわからないんですけどね.
>>179 まぁそうですね.やるとすると
1. テーブルの MyISAM -> InnoDB 変換.
2. MyISAM では COUNT(*) が高速ということに依存してる部分があるので,
レコード数を保持するテーブルを新設して COUNT(*) をなくす.
3. 登録時に START TRANSACTION 〜 COMMIT を使う
(2. と併せ登録用ストアドプロシージャを変更).
4. my.cnf に InnoDB 用の設定を入れる.
ってのをやることになりますが,特に 1. とかやると時間がかかりそうなんで,
今夜のピーク時間帯以降にぼちぼちって感じで......
>3. 登録時に START TRANSACTION 〜 COMMIT を使う 使わないほうが早くないすか?
>>181 いや......現状の登録用ストアドプロシージャは↓のようなものですが,
START TRANSACTION を使わない場合の implicit commit は各 INSERT / UPDATE /
DELETE ごとに行われるので何回も commit することになってしまうのに対し,
全体を START TRANSACTION 〜 COMMIT で囲めば commit は1回だけなので.
もちろん,データの一貫性保持の観点からも START TRANSACTION を入れた方がいいですけど.
CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned)
BEGIN
DECLARE urlid, totaldocs bigint unsigned;
SELECT id INTO urlid FROM urls WHERE url = urlx;
IF urlid IS NOT NULL THEN
UPDATE regwords, words SET words.df = words.df - 1 WHERE regwords.url_id = urlid AND words.id = regwords.word_id;
DELETE FROM dispwords WHERE url_id = urlid;
DELETE FROM regwords WHERE url_id = urlid;
END IF;
IF totalwordsx IS NULL THEN
DELETE FROM urls WHERE id = urlid;
ELSE
INSERT urls (url, mtime, totalwords) VALUES (urlx, FROM_UNIXTIME(mtimex), totalwordsx)
ON DUPLICATE KEY UPDATE mtime = VALUES(mtime), totalwords = VALUES(totalwords);
IF urlid IS NULL THEN
SET urlid = LAST_INSERT_ID();
END IF;
INSERT words (word) SELECT word FROM tmpwords ON DUPLICATE KEY UPDATE df = words.df + 1;
UPDATE tmpwords JOIN words USING (word) SET tmpwords.id = words.id, tmpwords.df = words.df;
INSERT regwords SELECT urlid, id, tf FROM tmpwords;
SELECT COUNT(*) INTO totaldocs FROM urls;
INSERT dispwords SELECT urlid, id, tf / totalwordsx * (LN(totaldocs / df) + 1) tfidf
FROM tmpwords WHERE totaldocs / df < 100000 ORDER BY tfidf DESC LIMIT 10;
TRUNCATE tmpwords;
END IF;
END
おぉ、、ストアードプロシージャーをすでに使ってるんですかぁ。 ラジャーです。
Operaだと関連キーワードやofuda.ccのあれととスレの一番上の全部や掲示板に戻るが重なって 掲示板に戻るがクリックできない。
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; ja) Opera 9.02 これって、全部、普通のブラウザからの機能ですよね 2ch専用ブラウザにデータを渡して貰えば、クライアントで処理できるんじゃないの? 話題がそれていたらご免なさい 専用ブラウザ使っているから、見ること無いでね
getf.cgiの使い方を説明すればいいんですかね?
http://p2.2ch.io/getf.cgi?http ://qb5.2ch.net/test/read.cgi/operate/1166328527/
>>185 まー確かに一理あるな。<2chブラから情報収集
技術的に可能かどうかより、ひろゆきが望むかどうかなんだが。
>>189 望むも何も、
>>186 が答えだろ。
少なくても今の段階では、外部からも自由に使ってみて良いんだと思う。
駄目ならその内アクセス制限掛けるだろうし。
専ブラ側でget.cgiをコールすればキーワードが返ってくるから、
後は専ブラ側でどうぞと。
つう訳で人柱になる専ブラ無いかな。
>>190 Jane派生といくつかの2chブラから閲覧はできる。
見るだけならその通り。
2chブラウザからのアクセス統計も集めるかどうかですよ。
専ブラ開発系のスレッドで告知すればいいんですかね?
>>192 うーん数多いから面倒だろ
ここで公示すればどうよ。
ひろゆきが2chブラウザから関連キーワードを閲覧できるようにしてちょうだいって言ってる。
http://qb5.2ch.net/test/read.cgi/operate/1166328527/186 186 名前:ひろゆき@どうやら管理人 ★[] 投稿日:2007/01/26(金) 04:05:53 ID:???0 ?S★(102442)
getf.cgiの使い方を説明すればいいんですかね?
http://p2.2ch.io/getf.cgi?http ://qb5.2ch.net/test/read.cgi/operate/1166328527/
閲覧可能にしてほしいって言ってるだけで、2chブラからの集計はしてないですよ。
>>195 の底はおすすめ2ちゃんねるとゴッチャになってた。スマソ。
一種の検索ソフトだから、それなりにあるんじゃない? ググルとか、ヤッホーとか、MSとか やってるからね 専ブラで、負荷分散すればそれなりのが出来るかもしれないけど 上記とぶつかると思うよ
さて,
>>180 をやろうかな......ってことで,しばらく止まります.
>>184 下線付近のごく狭い領域ならクリックできたりしませんか?
>>198 出来たり出来なかったりです。
フォーカスがあってもカーソルの形も変わりませんし。
関連キーワードを取得しますか?しませんか? 関連キーワードログを保存しますか?しませんか? 関連キーワード登録しますか?しませんか? 関連キーワードデータをアップロードしますか?しませんか? パケット課金ユーザーには、無縁の話しかも知れません あっても良いなの機能ですが
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_file_per_table
InnoDB 用に↑の設定を入れて立ち上げようとしたら......
070126 15:50:04 [ERROR] Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
mysqld got signal 11;
だそうです......たぶん ulimit の制限に引っかかってるんじゃないかと.
% limit -h datasize
datasize 524288 kbytes
ってことで,これをもっとデカく(物理メモリ上限くらいまで)設定できるようにお願いできればと>むむむさん
>>199 う〜む......そのあたりのは float 使ってるので,それの関係ですかね......
>>202 掲示板に戻る、全部等を囲っているspanを消したらクリックできるようになりますから多分そうでしょう。
>>202 > % limit -h datasize
> datasize 524288 kbytes
FreeBSD/i386 って、これ、増やせるんでしたっけ、、、。
ちなみに FreeBSD 6.2R/amd64 だと、 datasize 33554432 kbytes になっているです。
/usr/src/sys/i386/include/vmparam.h で、 #ifndef MAXDSIZ #define MAXDSIZ (512UL*1024*1024) /* max data size */ #endif ってやってて、 /usr/src/sys/kern/subr_param.c で、 maxdsiz = MAXDSIZ; TUNABLE_ULONG_FETCH("kern.maxdsiz", &maxdsiz); となっているのか。
TUNABLE_ULONG_FETCH ってことは、/boot/loader.conf に書いて再起動か。 とりあえず、 kern.maxdsiz="2048m" とかですかね。
# Increase maximum data and stack size kern.maxdsiz="2048m" kern.maxssiz="1024m" を /boot/loader.conf に追加して、p2.2ch.io / c2.2ch.io をリブートした。 このように出力されたです。 %limit cputime unlimited filesize unlimited datasize 2097152 kbytes stacksize 1048576 kbytes coredumpsize unlimited memoryuse unlimited vmemoryuse unlimited descriptors 65536 memorylocked unlimited maxproc 7390 sbsize unlimited
>>204-208 乙です.kern.maxdsiz とかは元々なくって,自分で新たに定義するものなんですね.
# どおりで,sysctl -a の出力からそれらしきものを探してもなかったわけだ......
default-storage-engine = InnoDB
>>202 に加え,↑の設定も入れますた.で,MySQL は無事立ち上がり,
現在 MyISAM -> InnoDB にテーブル変換中......
regwords の変換にはどれだけかかるだろう......まぁ最低でも1時間以上はかかるでしょうね...... mysql> alter table dispwords engine InnoDB; alter table urls engine InnoDB; alter table words engine InnoDB; alter table regwords engine InnoDB; Query OK, 4841616 rows affected (4 min 10.97 sec) Records: 4841616 Duplicates: 0 Warnings: 0 Query OK, 500065 rows affected (1 min 3.42 sec) Records: 500065 Duplicates: 0 Warnings: 0 Query OK, 1351479 rows affected (1 min 29.03 sec) Records: 1351479 Duplicates: 0 Warnings: 0
>>186 >>190 Janeなら外部コマンドで見れるから
閲覧なら新しく機能つけなくてもいいかと
jane 使ってみた コマンドを書くの? タイトルの前に3つ出すの書ける?
未だ regwords の変換処理は続いてるわけですが......ただ,それ以外のテーブルの 変換はすでに終わってるので,getf.cgi での表示だけは可能な状態で動いてます. で,現状ではその変換処理 + getf.cgi からの SELECT クエリー on InnoDB を 平行して捌いてますが,ピーク時間帯になっても c2 は一応無事な状態のようですね. getf.cgi の表示での引っかかり感もあまりなさそうな感じですし. あとは,データの登録・更新処理を動かし始めた場合にどうなるか...... last pid: 1646; load averages: 0.62, 0.78, 0.86 up 0+05:36:46 23:20:27 120 processes: 8 running, 112 sleeping CPU states: 17.8% user, 0.0% nice, 3.3% system, 0.8% interrupt, 78.1% idle Mem: 420M Active, 1327M Inact, 177M Wired, 75M Cache, 112M Buf, 2996K Free Swap: 2048M Total, 16K Used, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 960 c22chio 42 4 0 599M 379M sbwait 0 263:51 51.76% mysqld
Query OK, 78899550 rows affected (5 hours 57 min 6.25 sec) regwords の変換は↑ということで約6時間かかったと.やはり MyISAM よりはディスク容量食いますね. -rw-rw---- 1 c22chio ch2 8554 1 27 04:34 count_urls.frm -rw-rw---- 1 c22chio ch2 98304 1 27 19:06 count_urls.ibd -rw-rw---- 1 c22chio ch2 8632 1 26 18:10 dispwords.frm -rw-rw---- 1 c22chio ch2 482344960 1 27 19:07 dispwords.ibd -rw-rw---- 1 c22chio ch2 8626 1 26 18:17 regwords.frm -rw-rw---- 1 c22chio ch2 7163871232 1 27 19:07 regwords.ibd -rw-rw---- 1 c22chio ch2 8694 1 26 18:14 urls.frm -rw-rw---- 1 c22chio ch2 142606336 1 27 19:07 urls.ibd -rw-rw---- 1 c22chio ch2 8612 1 26 18:15 words.frm -rw-rw---- 1 c22chio ch2 146800640 1 27 19:07 words.ibd んで,登録・再クロール処理も動かし始めますた.今のところ,拍子抜けするぐらい静かな感じですねw last pid: 4972; load averages: 0.66, 0.53, 0.50 up 1+01:24:01 19:07:42 124 processes: 1 running, 123 sleeping CPU states: 3.8% user, 0.0% nice, 3.6% system, 1.4% interrupt, 91.2% idle Mem: 512M Active, 931M Inact, 223M Wired, 82M Cache, 112M Buf, 255M Free Swap: 2048M Total, 20K Used, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 4821 c22chio 1 4 0 14876K 10680K sbwait 3 1:55 6.98% perl5.8.8 960 c22chio 39 -4 0 604M 383M ufs 0 435:51 5.91% mysqld 4820 c22chio 1 4 0 14236K 10028K sbwait 1 2:03 5.71% perl5.8.8 2772 c22chio 1 4 0 5964K 4700K kqread 0 2:06 1.95% crawld 4822 c22chio 1 4 0 14432K 10280K sbwait 0 1:39 1.17% perl5.8.8 4818 c22chio 1 4 0 14476K 10284K sbwait 2 1:49 0.24% perl5.8.8
ただ,InnoDB はロックの粒度が細かいのはいいんですが,注意しないとデッドロックが 発生してしまうという......そのため,登録処理は単純に START TRANSACTION 〜 COMMIT で 挟むだけじゃダメですね.words テーブルの書き込みは AUTO-INC のロックと行ロックが交錯するし, 行ロックのかかる順番もまちまちなんで,GET_LOCK() 〜 RELEASE_LOCK() で挟んでデッドロック回避. この GET_LOCK() はテーブルロックとは違うものなので,SELECT での読み出しには影響しません. CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned) BEGIN DECLARE urlid, totaldocs bigint unsigned; START TRANSACTION; SELECT id INTO urlid FROM urls WHERE url = urlx FOR UPDATE; IF urlid IS NOT NULL THEN IF GET_LOCK('keywords.words', 10) THEN UPDATE regwords, words SET words.df = words.df - 1 WHERE regwords.url_id = urlid AND words.id = regwords.word_id; DO RELEASE_LOCK('keywords.words'); DELETE FROM dispwords WHERE url_id = urlid; DELETE FROM regwords WHERE url_id = urlid; ELSE ROLLBACK; TRUNCATE tmpwords; SET urlid = NULL, totalwordsx = NULL; START TRANSACTION; END IF; END IF; IF totalwordsx IS NULL THEN DELETE FROM urls WHERE id = urlid; UPDATE count_urls SET n = n - 1 WHERE urlid IS NOT NULL; COMMIT; ELSE DO LAST_INSERT_ID(0); INSERT urls (url, mtime, totalwords) VALUES (urlx, FROM_UNIXTIME(mtimex), totalwordsx) ON DUPLICATE KEY UPDATE mtime = VALUES(mtime), totalwords = VALUES(totalwords); IF urlid IS NULL THEN SET urlid = LAST_INSERT_ID(); UPDATE count_urls SET n = n + 1 WHERE urlid; END IF; IF urlid && GET_LOCK('keywords.words', 10) THEN INSERT words (word) SELECT word FROM tmpwords ON DUPLICATE KEY UPDATE df = words.df + 1; DO RELEASE_LOCK('keywords.words'); UPDATE tmpwords JOIN words USING (word) SET tmpwords.id = words.id, tmpwords.df = words.df; INSERT regwords SELECT urlid, id, tf FROM tmpwords; SELECT n INTO totaldocs FROM count_urls; INSERT dispwords SELECT urlid, id, tf / totalwordsx * (LN(totaldocs / df) + 1) tfidf FROM tmpwords WHERE totaldocs / df < 100000 ORDER BY tfidf DESC LIMIT 10; COMMIT; ELSE ROLLBACK; END IF; TRUNCATE tmpwords; END IF; END
思い出した 昔、あったな、社会とかのボタン 無くなったんだよな確か? 記憶力弱いんで違ってたらスマソ 3回目か ホリエモンの1クリック程度の価値有ったのだろうか? 意外と進歩してないモンだな 辞書をロカールに於いて、集めてきて賢くするだったかな? 英和、和英何てのも有った 思い出すことは出来ないだろうが
>>222 のでもまだデッドロックが起きて......
>>221 の top の表示で余裕に見えたのは,
新規データは登録されるものの,再クロールでの更新データはデッドロックのため
ほとんど登録されず CPU が休んでいたための模様w GET_LOCK() でのロック範囲を広げて
CREATE PROCEDURE registurl(urlx varchar(256), mtimex int, totalwordsx int unsigned)
BEGIN
DECLARE urlid, totaldocs bigint unsigned;
START TRANSACTION;
IF GET_LOCK('keywords.registurl', 10) THEN
SELECT id INTO urlid FROM urls WHERE url = urlx FOR UPDATE;
IF urlid IS NOT NULL THEN
UPDATE regwords, words SET words.df = words.df - 1 WHERE regwords.url_id = urlid AND words.id = regwords.word_id;
DELETE FROM dispwords WHERE url_id = urlid;
DELETE FROM regwords WHERE url_id = urlid;
END IF;
IF totalwordsx IS NULL THEN
UPDATE count_urls SET n = n - 1 WHERE urlid IS NOT NULL;
DO RELEASE_LOCK('keywords.registurl');
DELETE FROM urls WHERE id = urlid;
COMMIT;
ELSE
INSERT urls (url, mtime, totalwords) VALUES (urlx, FROM_UNIXTIME(mtimex), totalwordsx)
ON DUPLICATE KEY UPDATE mtime = VALUES(mtime), totalwords = VALUES(totalwords);
IF urlid IS NULL THEN
SET urlid = LAST_INSERT_ID();
UPDATE count_urls SET n = n + 1;
END IF;
INSERT words (word) SELECT word FROM tmpwords ON DUPLICATE KEY UPDATE df = words.df + 1;
UPDATE tmpwords JOIN words USING (word) SET tmpwords.id = words.id, tmpwords.df = words.df;
DO RELEASE_LOCK('keywords.registurl');
INSERT regwords SELECT urlid, id, tf FROM tmpwords;
SELECT n INTO totaldocs FROM count_urls;
INSERT dispwords SELECT urlid, id, tf / totalwordsx * (LN(totaldocs / df) + 1) tfidf
FROM tmpwords WHERE totaldocs / df < 100000 ORDER BY tfidf DESC LIMIT 10;
COMMIT;
TRUNCATE tmpwords;
END IF;
ELSE
ROLLBACK;
TRUNCATE tmpwords;
END IF;
END;;
にしたら,CPU も働き出した.
last pid: 5512; load averages: 3.86, 3.52, 3.20 up 1+04:39:59 22:23:40 132 processes: 5 running, 126 sleeping, 1 stopped CPU states: 53.0% user, 0.0% nice, 9.6% system, 1.4% interrupt, 36.0% idle Mem: 615M Active, 920M Inact, 220M Wired, 55M Cache, 112M Buf, 193M Free Swap: 2048M Total, 20K Used, 2048M Free PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND 4820 c22chio 1 121 0 99M 69144K CPU1 1 26:51 63.43% perl5.8.8 4821 c22chio 1 118 0 98M 58500K RUN 0 29:36 59.57% perl5.8.8 4822 c22chio 1 101 0 99M 52608K CPU3 0 29:25 33.35% perl5.8.8 4818 c22chio 1 107 0 99M 48412K CPU2 2 28:46 32.47% perl5.8.8 960 c22chio 46 4 0 603M 383M sbwait 2 494:59 19.97% mysqld 2772 c22chio 1 -8 0 5716K 4440K biord 0 16:46 9.28% crawld んで,この状態でも getf.cgi 表示の引っかかり感もあまりないようなので, とりあえず InnoDB への切り替えはプラス側に転んだ,ということでいいのかな.
おつでした。 しかし InnoDB の本来の力を発揮させるには、 プログラミング上の注意も必要、ということですか。
>>226 まぁそうですね.とはいえ,
http://www.drk7.jp/MT/archives/000941.html http://www.thinkit.co.jp/cert/article/0603/10/5/3.htm あたりのベンチマークとか見てて,InnoDB だと重くてピーク時間帯に
c2 が死ぬんじゃないかとかビビってたり,
http://d.hatena.ne.jp/naoya/20060729/1154139996 では CPU 等のリソースが有り余ってれば InnoDB でいいんじゃない?
というような感じのことが書いてありますが,c2 はパーサで
CPU 食うんでそんな有り余ってる訳じゃないし......
などと心配してたんですが,杞憂だったようでめでたしめでたし.
完走したニューススレの次スレ追跡に一応使える 本当はおすすめ2ちゃんねるのほうで対応して欲しいが
さすがに InnoDB のリカバリは早いっすね,2秒ぐらい. 070131 23:24:01 mysqld started 070131 23:24:01 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... 070131 23:24:02 InnoDB: Starting log scan based on checkpoint at InnoDB: log sequence number 11 4261151496. InnoDB: Doing recovery: scanned up to log sequence number 11 4261161318 070131 23:24:02 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 070131 23:24:03 InnoDB: Started; log sequence number 11 4261161318 070131 23:24:03 [Note] /home/c22chio/mysql/bin/mysqld: ready for connections. Version: '5.0.27-standard' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
>>232 おー、さすが。
Inno は innovation なんでしたっけ。
>>233 まぁそんなところだと思います.
直接的には Innobase
http://www.innodb.com/ から来てるんでしょうけど.
適切なリアクションが思いつかない自分を不甲斐なく思うよ きっと就活の面接に落ち続けてる俺に“足りない何か” を見つけるきっかけはここいら辺にあるんだと思う
いの一番に反応したかったものの,お二方に先を越されますた.
[Thu Feb 01 16:09:48 2007] [emerg] (17)File exists: Couldn't create accept lock (/var/log/accept.lock.634) (5) ってことで rm /var/log/accept.lock.*; apachectl start おながいします @p2 >むむむさん # 普通の場所だと EEXIST になったり,/md だとマウント前にファイル作ろうとしたりで,難しいですねぇ...... c2 は MySQL のシャットダウン処理中に落ちちゃったようですね. まぁちゃんとリカバリしてますが.ただ,今回は28秒ぐらいかかってますけど...... 070201 14:27:10 [Note] /home/c22chio/mysql/bin/mysqld: Normal shutdown 070201 14:27:12 InnoDB: Starting shutdown... 070201 17:01:01 mysqld started 070201 17:01:01 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... 070201 17:01:01 InnoDB: Starting log scan based on checkpoint at InnoDB: log sequence number 14 502342626. InnoDB: Doing recovery: scanned up to log sequence number 14 507585024 InnoDB: Doing recovery: scanned up to log sequence number 14 512827904 InnoDB: Doing recovery: scanned up to log sequence number 14 518070784 InnoDB: Doing recovery: scanned up to log sequence number 14 523313664 InnoDB: Doing recovery: scanned up to log sequence number 14 528556544 InnoDB: Doing recovery: scanned up to log sequence number 14 533799424 InnoDB: Doing recovery: scanned up to log sequence number 14 539042304 InnoDB: Doing recovery: scanned up to log sequence number 14 544285184 InnoDB: Doing recovery: scanned up to log sequence number 14 549528064 InnoDB: Doing recovery: scanned up to log sequence number 14 551520217 070201 17:01:09 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 070201 17:01:29 InnoDB: Started; log sequence number 14 551520217 070201 17:01:29 [Note] /home/c22chio/mysql/bin/mysqld: ready for connections. Version: '5.0.27-standard' socket: '/tmp/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
httpd@p2 立ち上がってますね.乙です>むむむさん
>>239-240 やりました。
何か、しかけを入れる方向ですね。 < httpd health check
で、すごいバカな質問かもなんですが、 accept.lock って、そもそも作らないとまずいんでしたっけ。
>>242 ソケットの accept() を直列化するためのロックで利用するものですね. ソケットが1つだけなら直列化は必須というわけでもないんですが, 直列化した方がカーネル内でのスピンを抑制し遅延を小さくする効果があるためにやってるらしいです. cf. http://httpd.apache.org/docs/2.2/misc/perf-tuning.html の "accept Serialization - single socket" pthread_mutexattr_setrobust_np() が使えるなら AcceptMutex pthread を 安全に利用できるので,flock() / fcntl() ベースのロックを使わずに済む, つまり accept.lock ファイルのことは考えずに済むんですが(それのみならず パフォーマンス面でも有利ですし),FreeBSD ではそれはないようなので 安全には使えない(どれかの httpd プロセスが mutex lock を保持したまま死ぬと 他の httpd プロセスがデッドロックに陥ってしまう)ということで...... あと,/md の設定を /etc/fstab に入れれば /md のマウントのタイミングが もっと早くなって accept.lock 生成で失敗しなくなる,とかいうことないんでしょうか? >>243 ふむふむ。
一般的なサーバは、fstab にしてもいいかもしれないですね。
/md の大きさや設定は各サーバの事情によって結構変えているので、
/etc/fstab にあまり書きたくなかった、という事情がありました。
あと、FreeBSD 5.x のバージョンアップの時に、
fstab に md の設定を書いていると mount でしくって、
single user mode になってしまう、というのもありますね。
毎回 /md の mount をしないようにしてから作業すればいいんですが、
それよりも、別にスクリプトを書こうと。
…というか、たぶんきっと rcorder をちゃんと書けばいいような予感。
>>244 なるほど...... rcorder ってのは依存関係を定義するんですね. ただ,rc(8) のこれが適用されるなら,単に起動スクリプトを リネームするだけでもいいのかも? The following key points apply to old-style scripts in /usr/local/etc/rc.d/: o The scripts within each directory are executed in lexicographical order. If a specific order is required, numbers may be used as a prefix to the existing filenames, so for example 100.foo would be executed before 200.bar; without the numeric prefixes the opposite would be true. なるほど、ZZZ- を 000- とかにすればいいと言ってますかね。 あるいは、/md の mount 部分だけを 000- で切り出すとか。
¶ ¶\ ¶ .\¶¶¶..¶,/¶ ヽ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶、 ¶¶¶¶¶¶エルメェス¶¶¶¶¶¶¶¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶i ¶<=○=><=○=> ¶i / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶* i < (ヘイッ!私のギコクンどこ? ¶:、¶¶¶ー□‐¶¶¶¶¶¶¶/ \_____________________ ¶|¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶¶¶¶¶ |ヽ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶¶丿 ¶ ¶ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶ )_ノ (.,.,.,.,..,).,.,.,..,.,.,.(,..,.,.,.,..,.),.,.,,../ ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶ ¶¶¶¶¶¶ ¶*゚ー゚ ¶ ヘイッ!私のギコクンどこ? U U く く ¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶ このAAをみてから10日以内にこれと同じ内容を10回書き込まないと、 両腕をもがれて死にます。 虐厨はうそつきだと思ったみなさん。 すいません。 虐厨はうそつきではないのです。 しにたくないだけ、なんです。
関連キーワードってIEとかでスレを見たときに上の方に表示されるキーワードのことでいいのかな? 専ブラ使いなので初めて知った・・・ 使わせたいなら専ブラ作者に対応してもらった方が。
専ブラでスレタイ検索できるから別段不自由はしていないが IEで使ってる人がどのくらい居るのかは気になる AAにも反応するからオレはIEからでもあんまり使ってないけど
ex21鯖の復旧をお願いします。 >>ひろゆきさん。
>>254 あ。そだ<ひろゆき
この関連キーワードを2chブラに広めたいんだって言ってたよな。
ソフ板に告知スレを立てればええやん。
2ゲト禁止ってか常にスレ上位にある告知みたいなのを。
>>261 若ハゲ?隠してやんよ 彡⌒ ヽ ( ;ω;)=つ≡つ∧_∧ (っ ≡つ=つ∧_∧ / ) ババババ ( / ̄∪ ひろゆきにポイントねだるとか・・・ クレクレ厨はちゃんとsakuして下さい
>>261 わくわくされたのでやってみるわ。
こんなのを
http://pc9.2ch.net/test/read.cgi/software/9242006211/ ソフ板に立てりゃ良いのだろ?
↓
★☆ひろゆきから2chブラウザ作者さんへお願い☆★
ひろゆきが2chブラウザから関連キーワードを閲覧できるようにしてちょうだいって言ってるです。
http://qb5.2ch.net/test/read.cgi/operate/1166328527/186,192 186 名前:ひろゆき@どうやら管理人 ★[ ] 投稿日:2007/01/26(金) 04:05:53 ID:???0 ?S★(102442)
getf.cgiの使い方を説明すればいいんですかね?
192 名前:ひろゆき@どうやら管理人 ★[] 投稿日:2007/01/26(金) 12:22:59 ID:???0 ?S★(102442)
専ブラ開発系のスレッドで告知すればいいんですかね?
つー訳で2chブラウザ作者さんは関連キーワードを閲覧できるようにしてください。
2ちゃんねるwiki 関連キーワード(編集用ページ壬)
http://info.2ch.net/wiki/pukiwiki.php?%CA%D4%BD%B8%CD%D1%A5%DA%A1%BC%A5%B8%BF%D1 ↑
あ、対応してるかどうか、導入方法を知らせないとダメか。
じゃ普通にスレ立てするぞ。
924スレじゃないと普通に沈んでいっちゃうね そしてage荒らし
>>278 俺ができる精一杯w
落ちたら落ちたで鯔が924スレこさえるだろw
遊び場を提供してくれてるひろゆきに、感謝の意を込めて かるーいお手伝いw
とりあえずbe2ch対応ブラウザスレに書いといたから
ボチボチ反応あるんじゃね?
キーワードをクリックすると、同じ関連キーワードが出てくるスレが表示されるのかと思ってた まあ無料でそんなことできたら、モリタポ使って本文検索する意味ないわな
>>280 あなた頭良いな。
スレタイに関連キーワードが入っていても肝心の中身に無いかもだよなー。
同じキーワードのスレが検索できるのが理想ってか正しい方向だわなー。
ひろゆき>対応してください。
Janeの次スレ検索で使われてる奴ね。 wktkして待ちます。
http://japan.cnet.com/news/media/story/0,2000056023,20095741,00.htm たとえば、「ライブドアの検索」という文章ならば、形態素解析では「ライブドア」「の」「検索」と分割する。
英語では、単語と単語の間にスペースが入るので認識しやすいが、
日本語の場合は、単語の辞書ファイルを用意しなくてはならない。
これがN-gramの場合、Nを2文字単位と指定すれば、
「ライ」「イブ」「ブド」「ドア」「アの」「の検」「検索」と分割し、それぞれを単語として扱う。
強制的に分割するので、別途辞書ファイルを用意する必要がない。
そのため、一般的に認識する単語のデータ量は、形態素解析よりもN-gramのほうが多くなるので、
検索を高速に処理するのは不得手(Nを何文字にするかによっても大きく変わる)とされている。
しかし、別途辞書ファイルが必要ないため多言語でも通用するほか、
網羅性が高く検索の漏れがなくなりやすいとされている。
=−−−−
ひろゆき>
ひょっとして2chブラウザ内で検索できるようにお願いするん?
変なキーワードがあると思ったらAAに反応してたのか・・・
http://qb5.2ch.net/test/read.cgi/operate/1171194778/124 124 名前:ひろゆき@どうやら管理人 ★[] 投稿日:2007/02/13(火) 23:42:14 ID:???0 ?DIA(103001)
>>12 すんません。サーバ落ちてました。
久々に鉄の掟関係なく笑った
鯖が落ちていたらひろゆきに自動連絡するシステムが開発される悪寒。 ぼくはできませんが。
手紙が届いていたらひろゆきに自動連絡するシステムが開発される悪寒。
(-人-)ひろゆきがチョコ食ってゲリ止まらなくなりますように。。
彼女が居たら家まで持ってくるだろ普通 あ 宛所不明な人だったね、そういえばw
ひろゆきはうまい棒とチョコ、どっちが好きなんだ? チョコ味のうまい棒があればいいのか?
>>314 すげーーーーーーーwwwwwwwwww
クレカから振込みに変更したんですか・・・。 それで今度は振込みを忘れたと・・・。
>>960 パタパタ....(((((c ・ω・)お疲れ様っす
>>317 やっぱ、金融機関も気づいたんだろうね
現住所がちがっていれば、止めるよね
ちなみに21時ごろおてて繋いで帰ってきたね
>>329 振込みし忘れてたと言うことでは・・・。
もう、3時過ぎてるし早くても明日の8時以降しか無理じゃないかな・・・。
シティーバンクも止められているよ SMBCもみずほも三菱UFJも止められているあたり とっても可愛そう みんなで西村にカンパしてあげないか? みずほの1032378にさ
>>317 ____ / \ / ─ ─\ / (●) (●) \ | (__人__) | ・・・ / ∩ノ ⊃ / ( \ / _ノ | | .\ “ /__| | \ /___ / なんか手詰まり状態なのかな? こんなとこにレスしてるってことは・・・
>>317 / ノ \ | ( ・)(・) もう痴呆かよ・・・ | (_人) ヽ ノ\ \ / \ \ \ | |ヽニつ \ \ ここ見て俺もさくらのサーバ代払うの忘れてた事に気付いた 403,、'`,、'`,、(ノ∀`)'`,、'`,、'`,、
2ちゃんねるのサーバ代はひろゆきを経由しないで広告代理店が直接振り込むんじゃないんですか?
>>317 , -‐- 、__ o / \ /ヽ −`/ / / ,イ / ,、 ヽ / r'/ /l/ !-/レ' ヽ ', | | | .! {/ / C' ゙ー‐l | l l l__ ! / / _ C' l /'"ノ ノノ ` ‐ 、 .! ! lヽ、 /、/ // //_/,イ_∠ /| .,、ヽ、 l | !´lii゙l>=-、-‐'/´_fノL_レ=o レ、_!l !l | ∠| .l/,>fjとli ̄`i /! `ヽ / ノ、 _。ル'j | V /'´ jノ `ー‐|′ ノ-‐i、r┐/ヽ/ / | /\______| /,-ムrl='`ヽ/__,/ | / / / / l l | /  ̄「} \ | >317 おい、まろゆき お前、この前も振込み忘れたことがあっただろーが! 忘れんなよw
あの板には冷静になる時間が必要だと思う。 1ヶ月くらい放置でも俺はいいよ。
>>184 の件はどこに頼めばいいのでしょうか。わりと不便なのですが・・・・・・。
Opera/9.10 (Windows NT 5.1; U; ja) >>375 どうもです。
read.htmlだと問題無いですね。
read.cgiにすると上のカウンターと重なってしまいクリックできなくなります。
Opera/9.10 (Windows NT 5.1; U; ja) >>376 じゃあ,当該部分のタグを read.html のと同じのにすればいいのかな......
>>377 をやろうと思ったけど,
>>378 が出てきたのでちょっと様子見で......
>>377-379 どうもです。
できれば2chの側で対応していただけるとありがたいのですが。
Operaで2chを利用する人の全てがcssを設定するわけではないでしょうし。
まぁ、全ての板がread.htmlへ切り替えられるようになれば 話は早いのかもしれませんが。
>>378 これでも良いんだけど、サーバーごとに設定しないといけないのがなんとも。
>>385 重なることなくクリックできています。
Opera/9.10 (Windows NT 5.1; U; ja) textでA B C D Eだけにしてよ html解析めんどい
データのパースをするなら,個人的には JavaScript 版の方がおすすめです.
http://p2.2ch.io/getf.cgi?qb5.2ch.net+operate+1166328527 var keywords = { "keyword1":"encodedKeyword1", "keyword2":"encodedKeyword2", ... };
の行だけ抜き出して,他の行は捨てる.で,キーワードの中には記号が
入ることはないので,単純に , や : でちょん切って前後の " を消せばおk.
Perl ならこんな感じじゃ? sub extract_keywords { my @kw; $_[0] =~ /^var keywords = { ((?:"[^"]+":"[^"]+"(?:, )?)+) };$/m or return; foreach (split(/, /, $1)) { /^"([^"]+)":/ or next; push(@kw, $1); } @kw; }
わがままいったのにやさしくしてくれるsunosさん好き
これと同じようなインターフェースでおすすめ2ちゃんねるも呼び出せるようにしてほしい。
まろゆき、振り込んでこいさっさと。鯖は俺の鯖を貸してやる
>>401 おお。
下の奴しか知らなかったので、上でやってみる。
>>385 今は直ってるみたい
そのときは二文字のが一文字だけになったり後ろが化けたりしてた
>>403 そうですか...... MySQL は cp932 で動いてるし,ヘンなバイトシーケンスが
そのまますり抜けるってことはないとは思いますが,またあったら知らせて下さい.
あ......ひょっとして↓を入れないとデータ化けが起こる可能性もなきにしもあらず?
静かな時間帯にでも入れ替えておこう<DBD::mysql
--- DBD-mysql-4.001/dbdimp.c
+++ DBD-mysql-4.001/dbdimp.c
@@ -3750,19 +3773,11 @@
"Error happened while tried to clean up stmt",NULL);
return 0;
}
+ /* to avoid SIGSEGV when reusing this statement handle */
+ imp_sth->stmt->bind_result_done= 0;
}
(ry
# これも含めパッチ投げて反応待ちだったり.
#
http://bugs.mysql.com/bug.php?id=26388 %83%7D マ %83%89 ラ %83%5C ソ %83%93 ン %5C \ %83%83 ャ
>>406-408 http://find.2ch.net/ のPerlスクリプトの正規表現マッチさせてるところに \Q いれれば解決
%5Cを重ねればいいんだろうけど、そもそも find.2ch.net の中を直さなきゃ。
>>411 find.2ch.net の方は EUC で処理してるっぽいのに、getf.cgi の出力が SHIFT_JIS で
発行されてる部分が多分食い違いの原因。
気を使うべき正規表現を扱ってる find.2ch.net の中を修正するのが筋なのは確かかも
>>412 修正しますた。
エンコーディング変換前になぜかstripslashes()が。なんでだろ。
>>412 もう解決してるっぽいけど、Shift_JISの2バイト目のバックスラッシュの取り扱いの問題だね。
データのエンコーディングの扱いが曖昧だとハマる。
stripslashes ってことはPHPなのかな? PerlでShift_JISの2バイト文字を含む文字から安全に \ を取り除きたい場合は $strings =~ s/([\x81-\x9f\xe0-\xfc][\x40-\xfc])|\x5c(\x5c)?/$1$2/g; \\ と二つ並んだものは \ ひとつに。それ以外の単独の \ は全部除去されます。 どのように \ でエスケープされてるかを正しく把握しないと余分な処理しそうなのでご注意
read.cgiの関連キーワード、MacのSafariでみるとiframeがスクロールバーで埋まって
なんにも見えないんですがどうにかなりませんかね^^;。。
>>417 read.js なら iframe 使わないからそういう問題は起きないです
......と言おうと思ったら,そもそも Safari だと read.js 自体ちゃんと動かないんですね.
う〜む......
スレ読まずに 誰かの案は採用されたのかい?まだアイディア出しの段階?
Safari での read.cgi の表示直ってました。対応ありがとうございます。m(_ _)m
このスレの キーワード【 rw InnoDB urls id words cgi ch 】
スレ内もだけどスレタイから抽出したのがないと 次スレ追っかける時面倒な場合がある (キーワードが本文であまり使われてない場合とか)
ごめんごめん。 雑談2007に書いたつもりが誤爆ったのさ♪
スレタイもキーワード抽出対象にはなってますが,重要度計算で上位に来ないと 入らないこともありうる,と(スレタイは本文の2倍のウェイトで計算してはいますが).
>>388 tv11鯖ではまだ、ページヘッダのリンクに触れない気がします w/Opera9
快適になって安心していたのですが、まだ全鯖対応ではありませんでしたか?
>>430 tv11 は banana3102 つまり T-bananaですね.
今は T-banana とそれ以外で read.cgi のソースが統一されておらず,
その作業と併せて行った方が効率的なので,それまでしばらくお待ち下さい.
理解しました。確かにサーバのタイプで乗ってるもの違いますしね。ありがとうございます。
>>429 別枠化するか
本文が400kbでスレタイが40bなら10000倍換算ぐらいがいいと思う
てかスレタイを単語ごとに区切って直接クリックで飛べるようにとかは?
スレタイを重視しすぎると,関連キーワードの性質が微妙に変化しそうな気も.う〜む......
そもそも本質は「そのスレの内容から抽出したキーワード」であるので、 ずれた要望はあんまり気にしない方が良いかと。 第一、次スレ検索を主目的にしようとしてる時点で趣旨が違う。 同じ話題が話されているのが次スレだけとは限らないし、 雑談スレなんかスレ毎にキーワードが違うのが当たり前。 関連キーワード検索は「そのスレの内容と同じ話題のスレを検索」 するのであって、「次スレを検索」は用途としてはあっていない。 (結果的に代用出来る場合もあるだけ)
でも関連スレって別板に同じスレタイでたってることが多いし
ここにサンプルで貼ったスレ結構クリックされてるなw
半角仮名を関連キーワードに反映させることは出来ませんか?
>>439 単語の抽出に利用している MeCab は,半角カナを記号として扱ってしまうようですね.
キーワードとして利用するのは名詞だけなので......
メールボックスパンクするまで爆撃合戦するスレ
メールボックスパンク 記号,一般,*,*,*,*,*
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
まで 助詞,副助詞,*,*,*,*,まで,マデ,マデ
爆撃 名詞,サ変接続,*,*,*,*,爆撃,バクゲキ,バクゲキ
合戦 名詞,サ変接続,*,*,*,*,合戦,カッセン,カッセン
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
スレ 名詞,固有名詞,組織,*,*,*,*
EOS
メールボックスパンクするまで爆撃合戦するスレ
メールボックス 名詞,一般,*,*,*,*,メールボックス,メールボックス,メールボックス
パンク 名詞,サ変接続,*,*,*,*,パンク,パンク,パンク
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
まで 助詞,副助詞,*,*,*,*,まで,マデ,マデ
爆撃 名詞,サ変接続,*,*,*,*,爆撃,バクゲキ,バクゲキ
合戦 名詞,サ変接続,*,*,*,*,合戦,カッセン,カッセン
する 動詞,自立,*,*,サ変・スル,基本形,する,スル,スル
スレ 名詞,固有名詞,組織,*,*,*,*
EOS
>>440 このあたりの Perl コード欲しいですか? jcode.pl だけでなんとかなるなら不要かもだけど
C言語でこのあたりのライブラリってどっかにあるのかな……
>>442 いや,正規化しようと思えばできないことはないんですけど,
パーサは c2.2ch.io の処理で一番重い部分なんで(ほとんどは
MeCab によるものですが),さらに重くするのがいいのかどうか,ってとこで.
# 仮に正規化するなら,1-way の変換ではなく MeCab の処理結果を元に戻す,
# ってとこまでやらなきゃならないですし.
半角カナを全角カナに変換して処理すればいいんじゃね
>>445 それが正規化ってことですが......ただ,半角で書かれたものを
全角のキーワードとして表示してもいいのならそれだけでもいいんですが,
半角のは半角のまま表示ということになると,いったん全角に変換したのを
半角に戻す処理も必要になって,そうなると処理が複雑になってくると.
不可能ではないんですが,重くなりそうだなぁ,と......
2ch検索の方で半角/全角片仮名の同一視が機能しているんなら、全角のままで良いんじゃないかい?
半角カナで独特のニュアンスを表現する 2ch の文化(?)を考えると 全角に変換したままってのもどうかなぁ......とも思ってたんですが, とりあえず全角のままでやってみます. 再クロールは2日周期なんで徐々に反映されるかと.
キーワード収集対象は本文とスレタイだけで,それ以外は対象外ですが......
と思ったら,
>>449 の時にミスったようですね,すみません.
これから(再)クロールされる分は正常になるかと.
あれ落ちたスレの奴って吹っ飛ぶんだっけ? 前は生きてたと思ったけど
>>455 データが無限に膨張し続けないように,dat 落ちしたのは消すようになってます.
ただ,再クロールは2日周期なので,落ちてからデータが消えるまでのタイムラグはあると思いますが.
>>456 スレ落ち後は次スレ追跡モードに差し替えるとかは?
>>459 そのためのデータを保持することになれば,結局データが膨張し続けることになるし,
またデータを保持せず on the fly に生成させるとなると,忙しくなりすぎて破綻しそうだし......
いずれにせよ,過去ログ用に別途専用鯖等のリソースを投入するとかでもない限り困難ではないかと......
過去ログ用に固定テキストをひたすら保存するサーバがあっても いいような気がしてきました。 つか、memoriesに同居とか。
>>461 memoriesそろそろ容量が少なくなってきてるらしいですよ・・・。
まあ、増設できるらしいですが・・・。
前にもらったtigerあまってないんですか?
それとbeのメール機能が時々おかしいので見てもらえるとうれしいです・・・。
なんかコストばっか掛かって利が無いような。 datにくっ付けちゃうってのはどうなの?できない?
>>460 「次スレ追跡する」ボタンみたいにワンクッションおくとかは?
見たい人だけ使う
>>461 なるほど......ただ,memories だと HDD 容量もさることながら
httpd + offlaw.cgi なんかと競合しないかなぁ,とか(MySQL を
ストレスなく動かすには,メモリとかリソース結構食いますし).
>>462 残ってる stiger を専用で使うならリソースの競合とかは心配ないですね.
ただ,そんなに HDD 容量がデカいわけでもないんで...... とはいえ,
単にライブな dat のキーワードをコピーして保存するだけなら,
重要度計算用のデカいテーブル (regwords) は過去ログデータの方では
不要なんで,当面は心配ないかも.中長期的には問題ですが......
もっとも,問題が起きたらその時改めて考えよう,ということにしておけば
2ch らしいかも?w
>>463 dat にそういうデータを付けていいのかどうか,っていう
ポリシーの問題もあるかもですね.あと,dat 落ちを制御してる
F22 はいろいろ亜種ができてるらしいとかで,それぞれの鯖で
個別に F22 を改造しなきゃならないかも,っていうのも......
>>464 ワンクッション置いても,データ保存するとすれば
結局データ量が増大することに変わりないですし,
on the fly に生成するにしても,今の p2.2ch.io / c2.2ch.io は
リアルタイムにキーワード抽出する前提で作ってないので
苦しいことには変わりないです.
難しいかなって思うのもいいけど、がんがん試しちゃうのも吉。 もちろん試すのにいろいろ準備とかあって大変だとは思うけど。
試すにしても,ライブ dat のキーワード表示に悪影響を与えると元も子もないんで...... なので,過去ログに対処するなら専用鯖等のリソース投入が前提じゃないかなぁと.
まぁ,専用「鯖」でなくとも,今の c2 に過去ログ用にストレージ追加とかでもいいかもですけど.
スタートレックをスタートとレックで区切るのやめて欲しい
まぁ,意図してる訳じゃないけど MeCab がそう区切ってるってことで......
>>470 過去ログに関しては、関連キーワードが変更されることがないので、 スレッドkeyのテキストファイルを作って置いておくだけでいいと思うのです。 ってことで、mysqlはいらないかと。
しんぷるいずべすと、と。
ところで
>>472 なんかネタ落としてってw
ひろゆきを訴えたGJ会社員(35) 今度は毎日新聞を訴えてひろゆき涙目www
http://news23.2ch.net/test/read.cgi/news/1173860149/ >>472 なるほど......となると,あとは memories 等に
どういう形で入れればいいか,またそれをどうやって read.cgi で
表示させるか,ってあたりですか.ぼちぼち考えてみます.
XMLにしてjavascriptでincludeみたいなのって出来ないんでしたっけ?
>>475 XMLHttpRequest だと同一ドメイン(というか実質同一鯖)の制限がありますが,
JSON ならその制限なしで可能です.というか,read.html 用 I/F では今も JSON 的な
やり方でやってます.ただ,read.cgi だとブラウザ側の JavaScript の処理能力の不安があって......
1台、それ用のサーバを用意するかんじですかね。 memoriesのHDDに常時書き込み負荷をかけるのは、 できれば避けたいかも。
findたまに重いとか話出るけど冗長化しなくて大丈夫なの ふらだんすに振るとか
UNIX板のスレをOperaで見ると、今も
>>184 の現象
| Operaだと関連キーワードやofuda.ccのあれととスレの一番上の全部や掲示板に戻るが重なって
| 掲示板に戻るがクリックできない。
なのですが、
>>375-388 のは pc11 鯖には入ってないんでしょうか?
HDDの速度がはやいハードウェアをどこかから調達するといい感じなんですかね。 T-Bananaサーバーの実験を手伝うって名目でなんとかしてもらうとか、、
>>479 pc11 = T-banana なので
>>431 ということで......
# そろそろ
http://qb5.2ch.net/test/read.cgi/operate/1172208065/797 を
# やってもいい頃じゃないか,って気もしないではないですが......
>>480 さっそく
http://qb5.2ch.net/test/read.cgi/operate/1172208065/913 がw
ただ,過去ログ用の HDD でほしいのは速度より容量なんですよね.
# むむむさんの
>>477 の真意は,「HDD にダメージを与えず長持ちさせたい」ってことじゃないかと.
T-banana のようにディスク I/O の性能が高く,かつ RAM もたくさん積んであるマシンなら,
むしろ MySQL でデカいデータをがんがん扱う用途の方が向いてそうな気がしますね,個人的には.
>>484 > # むむむさんの
>>477 の真意は,「HDD にダメージを与えず長持ちさせたい」ってことじゃないかと.
ですね。
memoriesはデータ格納時以外はほぼread onlyで使いたいなと。
>>480 HDDの容量が20G台でいいなら、
今使っていないstigerを1台、それ用に割り当ててみるとかですが、
もっと必要なかんじですかね。
「各スレ単位で必要な容量 x 過去ログ発生速度」で,どれだけの期間持つか,てな感じですか. データを .js のように直接表示できる形で保存するとサイズは大きくなるが CPU の仕事は少ない, 一方 CSV のような形で保存するとサイズは小さくなるが表示する際の CPU の仕事が増える,と. まぁ CPU の仕事が増えるといっても,現状 p2.2ch.io 1台で全ライブスレの getf.cgi 表示させてるぐらいなので,stiger を専用で割り当てるなら問題ないと思いますが. ただ,各スレ単位でファイル作ると,HDD 消費はバイト単位でなくフラグメントサイズ単位になるんですよね. HDD スペースの利用効率を向上させるには,1ファイルに複数のスレのデータを書き込んだ方がいいのか. その代わり,必要なデータを検索する仕事が増えると.1ファイルに書き込みつつ 検索も効率的にするには......結局 MySQL を使うとかなるのかな.
freebsdのフラグメントサイズってどれくらいなんですか?
>>489 デフォルトでは16k(16384)ですね。
man newfs
...
-b block-size
The block size of the file system, in bytes. It must be a power
of 2. The default size is 16384 bytes, and the smallest allow-
able size is 4096 bytes. The optimal block:fragment ratio is
8:1. Other ratios are possible, but are not recommended, and may
produce poor results.
4k まで小さくできますが、あんまりおすすめしないかも。
専門な話題なので横槍! フラグメントサイズはブロックサイズを8分の1したものがデフォルトで使われるので 2k(2048)バイト ではないかと。 newfs -b 16384 -f 2048 のように指定されているはずか、オプションなしのどちらかですね。 man newfs -f frag-size ファイルシステムのフラグメントサイズをバイト単位で指定します。 blocksize/8 から blocksize までの範囲の、2 のべき乗である必要があります。 デフォルトは 2048 バイトです。
>>492 確かに、フラグメントサイズとブロックサイズは別物ですね。
ご指摘&補足すみませんです。
各板のライブスレ数は大きく変動しないという前提なら, 過去ログ発生速度≒新スレが立つ速度 なのかなぁ......
これどういうシステムなの? どうやったら反映されるの?
スレ内の全レスから単語抽出、DB化して、一定の条件で最頻と思われる 単語を表示させる。
>133 多分92のキーワードというのがスレの関連した語句になるので、それの検索は考えています。 自動的に"「74」「SevenFour」"など関連した語句の摘出は、ネタとしては面白いのですが、 難易度が高いというか、スレ名によっては多分バカ検索になるので、やるとしても実験的な機能としての 実装になります。多分正解は134さんが書かれているスレッド検索に正規表現をサポートでしょう。 >135 いろいろ作っていますが、どれも中途半端でして、、、 >136-139 先にも書きましたが、弱いとか、上手くいかないのではなく、元々対応していないというのが正解のようです。 今回版で一応修正しましたので、御報告いただければ助かります。 >141 >●対応って、面倒なの? 有償アカウントが必要なんですよね? いまのところ対応予定無しです。 >それと、まちBBSとかが見れないんだけど 過去ログを見ると2chに完全対応したら対応させる等書かれていましたので、メニューのトップには 表示されていますが、対応していません。対応させたいのですが、他が優先順位が高いので調査等保留状態です。 >142 すみません。ちょっと意味が判りません。 >143 まだ考え中ですが、本体側ではスレへアクセスの時に毎回キーワード取得してデータベースに溜めていきます。 あとキーワードを入力するIFを用意してユーザーからも入力が可能とします。 js側のAPIはデータベースへアクセスするsfSystem.getKeywordsとsfSystem.setKeywordを用意します。 溜められたデーターは検索やスマートボードに使ったり出来ます。 データベース内の削除は必要かなぁ。と 時間がなかなか取れないので、そんな感じで止っています。
同じキーで何回も検索するとヒット数がまちまちになるぞ ヒットしたりしなかったりするスレがある模様
>>497 スレ内に一度も出てない単語はキーワードとして表示されないの?
これもひでえなあ
ろう じろう しま があってしまじろうがないw
http://p2.2ch.io/getf.cgi?http ://game11.2ch.net/test/read.cgi/amusement/1163256789/l50
アイコンスレでアイコって酷くね
http://p2.2ch.io/getf.cgi?http ://bubble6.2ch.net/test/read.cgi/2chse/1163082315/701-800
無論無関係なスレばかりヒット&元のスレもヒットせず
リザルトがないのとかあってもまるで関連性のないやつは除外できないんかね
前後の状況によって「アイコン」の区切りはまちまちになるみたいですねぇ<MeCab 【Be】アイコン売買促進スレ★7【icon】 【 記号,括弧開,*,*,*,*,【,【,【 Be 名詞,固有名詞,組織,*,*,*,* 】 記号,括弧閉,*,*,*,*,】,】,】 アイコン 名詞,固有名詞,一般,*,*,*,* 売買 名詞,サ変接続,*,*,*,*,売買,バイバイ,バイバイ 促進 名詞,サ変接続,*,*,*,*,促進,ソクシン,ソクシン スレ 名詞,一般,*,*,*,*,* ★ 記号,一般,*,*,*,*,★,★,★ 7 名詞,数,*,*,*,*,* 【 記号,括弧開,*,*,*,*,【,【,【 icon 名詞,固有名詞,組織,*,*,*,* 】 記号,括弧閉,*,*,*,*,】,】,】 EOS 2ちゃんねる beアイコン サイト 2 名詞,数,*,*,*,*,2,ニ,ニ ちゃん 名詞,接尾,人名,*,*,*,ちゃん,チャン,チャン ねる 動詞,自立,*,*,一段,基本形,ねる,ネル,ネル be 名詞,固有名詞,組織,*,*,*,* アイコン 名詞,一般,*,*,*,*,* サイト 名詞,一般,*,*,*,*,サイト,サイト,サイト EOS アイコン全リスト、販売者登録所、価格情報ほか アイコ 名詞,固有名詞,一般,*,*,*,アイコ,アイコ,アイコ ン 名詞,非自立,一般,*,*,*,ン,ン,ン 全 接頭詞,名詞接続,*,*,*,*,全,ゼン,ゼン リスト 名詞,一般,*,*,*,*,リスト,リスト,リスト 、 記号,読点,*,*,*,*,、,、,、 販売 名詞,サ変接続,*,*,*,*,販売,ハンバイ,ハンバイ 者 名詞,接尾,一般,*,*,*,者,シャ,シャ 登録 名詞,サ変接続,*,*,*,*,登録,トウロク,トーロク 所 名詞,接尾,一般,*,*,*,所,ショ,ショ 、 記号,読点,*,*,*,*,、,、,、 価格 名詞,一般,*,*,*,*,価格,カカク,カカク 情報 名詞,一般,*,*,*,*,情報,ジョウホウ,ジョーホー ほか 名詞,副詞可能,*,*,*,*,ほか,ホカ,ホカ EOS アイコンショッパー アイコンショッパー 名詞,固有名詞,組織,*,*,*,* EOS 他板のアイコンスレ(2ちゃんねる検索) 他 接頭詞,名詞接続,*,*,*,*,他,タ,タ 板 名詞,一般,*,*,*,*,板,イタ,イタ の 助詞,連体化,*,*,*,*,の,ノ,ノ アイコンスレ 名詞,一般,*,*,*,*,* ( 記号,括弧開,*,*,*,*,(,(,( 2 名詞,数,*,*,*,*,2,ニ,ニ ちゃん 名詞,接尾,人名,*,*,*,ちゃん,チャン,チャン ねる 動詞,自立,*,*,一段,基本形,ねる,ネル,ネル 検索 名詞,サ変接続,*,*,*,*,検索,ケンサク,ケンサク ) 記号,括弧閉,*,*,*,*,),),) EOS
カタカナやひらがなで直後にンが来る語句は ンの直前で区切っちゃいけないんじゃないの
まぁ,単語の区切りは
http://mecab.sourceforge.net/ に依存してますからねぇ......
メンテ予告とかメンテ中の表示とかすこしは工夫すればいいのに
あのさクリックされたのとか実際に検索で使われてるやつの優先度あげない?
read.cgi ver 07.7.21 2024/12/02 Walang Kapalit ★ | Donguri System Team 5ちゃんねる -curl lud20241204093611このスレへの固定リンク: http://5chb.net/r/operate/1166328527/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「関連キーワードをなんとかしようスレ->画像>2枚 」 を見た人も見ています:・コピペwin婆ニートちゃんと粘着アンチちゃんがちちくり合うスレ【ワールドメイト関連】 ・なんJ・なんGでラブライブCUEアイプラ関連のスレ乱立してたら報告しよう ・IDにMinecraft関連のワードを出すまで採掘するスレ ・IDにMinecraft関連のワードを出すまで採掘するスレ Part2 ・コロナ関連用語を使ってAV作品のタイトルでも考えよう ・ハロプロ好きになってハロ関連のラジオを聴くようになって思ったことを言います ・【悲報】安倍晋三さん、制裁で潰れかかったプーチン関連企業を日本の年金基金で救済しようとしていた… ・【村田琳】母・蓮舫氏関連発言は「ぼくの意思ではない」の仰天告白 知名度傷つけないよう… [爆笑ゴリラ★] ・スポニチ野球記者、野球関連のTweetの中で唐突に鞘師里保生誕祭を開催する ノリ*´ー´リ<大人の階段、転ばないようにのぼるやし。 ・【産経】国民を守る「集団的自衛権」 安保関連法の廃止を叫び続けるのは日米同盟を機能不全に陥れ、日本を丸裸にしようとするにも等しい ・【輸出規制強化撤回要求】 ソウル 中心部で市民集会開催へ 外務省、日本関連の施設周辺では注意を払うよう呼び掛け [07/27] ・マネーの虎関連のスレを埋め立てする基地害対策所 ・正直「キメェ・・・」と思ってるゲーム関連のワード ・プログレ関連のことで面白いニックネームを考えるスレ ・【緊急】安倍射殺関連スレ・レス大賞ノミネート会場🏆 ・【悲報】FF14さんPLLが1時間半前に始まるも、関連ワード一切トレンドに上がらない ・【速報】Twitterのトレンドでスプラトゥーン2前夜祭関連ワードがたくさん [無断転載禁止] ・ワタクでググったら関連ワードに「ワタク 大学」とか出てきてワロタwww ・話題のワード調べた時の結果がゲームアニメホビー関連だった時のがっかり感 ・【ネット】「ノーベル賞」の日本のGoogle関連ワードが特定の国一色でストーカーかよキモッと話題に ・【映画】金ロー『ゲド戦記』の“検索関連ワード”がヤバすぎる…「意味不明」「性癖」 [ネギうどん★] ・【経済】テレワーク拡大で液晶ディスプレイの販売数急増 今のうちに関連株を買っておけ [ですとろん★] ・【医学】肥満と認知機能障害の関連が大うつ病性障害で明らかに 脳の皮質体積の減少や神経ネットワークの低下と関連/NCNP神経研究所 ・【Twitter】「やっぱりダメだったのか」「大麻の次は覚醒剤やん」田中聖容疑者2度目の逮捕に関連ワード急上昇 [爆笑ゴリラ★] ・【富山】新たに2人感染…ライブハウス「ソウルパワー」経営者 東京からバンド呼んでライブ開催+20代女性は京産大関連 ・【衝撃】セレブがとんでもない方法で愛用!?世界的HOTワード『アドレノクロム』を徹底解説!新型コロナや幼児虐待儀式との関連も ©bbspink.com ・【悲報】なんJで普通のワードなのに運営の目玉が出た模様 これ安倍が規制させたようなもんだろ‥‥ ・チラチラ…これが日本のニュース番組の“まやかし”だ…安保関連法案を巡る日本の報道に韓国ネット「なんで韓国とこんなに似てるニダ?」 ・【ツタヤ図書館】旧CCC関連会社のデータを基に選書リスト作成か…「新刊」に安い中古本混入か(予算浮かしてポッケ?癒着?) ・【女優】#安達祐実 39歳誕生日を報告、フォロワーから「いつまでも少女のよう」「ほんと老けない」と驚きの声 #はと [muffin★] ・【山梨・道志村】発見の2つの骨は棒状で10センチほど 死後数年が経過 小倉美咲さんとの関連捜査 [Ikh★] ・毎週のようにジャンプスレ荒らしてるワークソ信者はよ謝罪しろよ [無断転載禁止] ・耐震化関連スレ ・為替関連情報を総結集するスレ ・福袋関連・絡みスレ11 ・SH関連ヲチスレ★11 ・IP無線関連総合スレ ・実物取材関連スレッド ・福袋関連・絡みスレ12 ・風呂目亜同人関連スレ6 ・SH関連ヲチスレ★12 ・★薬物関連専用 報告スレ★ 19 ・MXTX関連ヲチ雑談スレ3 ・検眼技術関連スレ opt.2 ・Beポイント関連スレッド ・ジナコ関連アンチスレ ・あにまんBLL関連議論・愚痴スレ ・とんねるず関連スレはひとつにまとめろ ・風呂目亜同人関連スレ5 ・オビツ関連スレpart53 ・AKB女優関連スレその1 ・悪魔関連ヲチスレpart25 ・かねちー関連愚痴スレpart43 ・検眼技術関連スレ opt.1 ・かねちー関連愚痴スレpart61 ・かねちー関連愚痴スレpart42 ・かねちー関連愚痴スレpart54 ・かねちー関連愚痴スレpart48 ・かねちー関連愚痴スレpart63 ・★薬物関連専用 荒らし報告スレ★2 ・かねちー関連愚痴スレpart55 ・ヒプマイ公式関連愚痴スレ16 ・自治関連スレッド part3
11:36:33 up 6 days, 22:00, 0 users, load average: 10.67, 9.70, 9.47
in 1.7856688499451 sec
@1.7856688499451@0b7 on 121901