nDiki : キャッシュ
Related term
2005年10月30日 (日)
■ はてなブックマーク上の検索結果を nDiki に

5カ月ほど前にはてなブックマーク上の最新ブックマークを nDiki のサイドバーに表示するようにしてみた。
今回は nDiki のキーワード別のページに、はてなブックマークからそのキーワードで検索されたブックマークを表示する機能を追加してみた。
取得する対象RSSが多くなり、さすがに前回みたいにローカルPCで処理して定期的にアップロードという形では無駄が多すぎるのでちゃんとサーバ上で処理するようにした。
URI::Fetch + Cache::FileCache + XML::RSS を用いて実装。 キャッシュ期間は1日に設定。キーワードページを最初にアクセスした際にははてなブックマークからのフィード取得があるので、ちょっと時間がかかるが2度目のアクセス以降キャッシュを使っている間はそれほど余計な時間はかからないはず。
自分のWeb日記とブックマークの組み合わせだと当然扱うネタが近いので、きちんと関連する情報が表示されるはずだ。 他の検索サーバのRSSフィードを利用する事も考えてはいるけど、しばらくはこれでいいかな。
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- Plagger のインストールが大変なので XML::RSS で RSS ... (2006-06-10)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- amaroK で聞いた曲を Web ページで表示 (2006-02-02)
- クリッピングに便利な CMS 「Tumblr」を使ってみる (2007-04-13)
2006年3月3日 (金)
■ サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更

www.naney.org をホスティングしているサーバが重いと思ったら、同じサーバ上のあるユーザの CGI プログラムが5プロセス無限ループしてるっぽい……。 load average 20前後。
あおりを受けて、nDiki が大変なことになっている。
nDiki は SpeedyCGI を使っているのだが、バックエンドの speedy_backend が捌ききれず、フロントエンドの speedy が大量に待ちに入ってしまっている。
MaxBackends を調整しても駄目(下手にバックエンドプロセス数を増やしても、結局処理が追いつかない)。
ということで急遽対策。
@ 高負荷時にはてなブックマークへのアクセスを停止
load average が高い時には、はてなブックマーク上の検索結果を表示させるために行なっているはてなブックマークへのアクセスを休止するように変更。 24時間に設定してあるキャッシュの有効期限が切れていても、高負荷の時にはアクセスにいかないようにする。
これで DiKicker の処理時間を短縮。相手側サーバへの負担も軽減。
@ Google Desktop からのアクセスを一時的に拒否
おかげ様でここ最近 nDiki の RSS へのアクセス数が増えてきている。 ありがたい事である。
しかしながら DiKicker の RSS レスポンスは、あまり賢くなく毎回データベースから最新記事情報を抽出して生成しているため、それほど処理が速くない。
なのでアクセス頻度を高くしている RSS リーダがどこかで同時に起動しているとちょっとしんどい。 特にここ最近 Google Desktop からのアクセス数が増えている感じ。
さすがに今日はサーバの負荷が高く処理が追いつかなくてどうしようもないので、一時的に Google Desktop を拒否することに。
.htaccess に設定を追加。
BrowserMatch "Google Desktop" denybrowser deny from env=denybrowser
近日中に、RSS 処理を改善してすぐに解除する予定。
@ robots.txt に Crawl-delay: を追加
効果があるかどうかは不明だが、Crawl-delay: に対応するというクローラ (Slurp、msnbot) 向け設定を追加。
User-agent: Slurp Crawl-delay: 20 User-agent: msnbot Crawl-delay: 20
アクセス数としては Googlebot と Slurp がダントツ。 しかし Google は無下にする訳にもいかないしなぁ。
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- www.naney.org サーバ断続的にダウン (2006-04-30)
- [ WiKicker ] SpeedyCGI 対応するも…… (2003-11-09)
- さらにサーバ負荷状態悪化。対応に追われる。 (2006-03-04)
2006年3月4日 (土)
■ さらにサーバ負荷状態悪化。対応に追われる。

CPU パワーを消費し続けているプロセスが昨日の 5 個から、今日は 21個に増えている……。
対応するも、焼け石に水か。
@ データベースロックタイムアウト時間を短く
120秒から60秒に。
@ 生成した RSS をキャッシュするようにする
生成した RSS を Cache::FileCache で有効期間30分でキャッシュするように変更。 あわせて Google Desktop からのアクセス拒否を解除。
@ 旬カレンダーナビゲーションをキャッシュするようにする
ページ下部にある各月上中下旬へのリンクは、どこに記事が追加されたかディレクトリをスキャンするしか知りようがないので毎回そのようにしていたのだが、これが結構重くなってきたので、これも有効期間1時間でキャッシュするように変更。
@ 高負荷時のページ更新停止機能を改善
DiKicker では新しいキーワードが追加されると、過去の記事についてもアクセスがあり次第、自動リンクし直していくようになっている。
高負荷時にはこの機能が止まるようにしてあったのだが、「キーワード記事」については止まるようになっていなかった。 また「1記事のみのページ」へのアクセスの場合も(1記事ぐらいの更新ならいいだろうということで)止まるようにしていない。
このためこれらへのアクセスあると、(必要であれば)アップデート処理が発生。 データベースの排他ロックも必要となるため、全体のレスポンス低下につながっていた。
これらも、高負荷時には止まるように修正。
- サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 (2006-03-03)
- [ DiKicker ] 語リストを Term DB に保持 (2006-11-21)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- 他の Web サイトの情報を URI::Fetch でキャッシュ付き取得 (2005-10-29)
- はてなブックマーク上の検索結果を nDiki に (2005-10-30)
2006年11月21日 (火)
■ [ DiKicker ] 語リストを Term DB に保持

自動リンクなどで語リストが必要な時に、今までは Term DB (Berkeley DB で実装)をスキャンしてリストアップしていた。 これだと語数が増えていくにつれ線形に遅くなるので、一度リストアップしたら Term DB の別レコードに Storable で freeze してキャッシュするようにしてみた。 ちょっと速くなることを期待。
あわせてロックまわりも改善。 DiKicker では Article DB と Term DB をセットでオープンすることとし、Article DB の方で排他制御をしている。 ただし、Term DB の方には排他ロックでオープンされているか、共有ロックでオープンされているのかの情報を伝えていなかったため、実は共有ロックの時にも書き込みをしてしまう部分が残っていた。
Term DB オープン時にどちらで開いているかを通知するようにし、キャッシュ情報などの書き込み時にはこれらを参照して間違えた書き込みをしないようにした。
- さらにサーバ負荷状態悪化。対応に追われる。 (2006-03-04)
- [ Perl ] Search::InvertedIndex (2004-02-09)
- DiKicker に grep 検索機能を追加 (2007-02-02)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
- [ DiKicker ] lock 待ちの sleep 忘れ (2004-05-08)
2007年2月2日 (金)
■ DiKicker に grep 検索機能を追加

DiKicker には自動リンクベースの記事串刺し表示機能があって、同じキーワードを含む記事をまとめて読むことができる。 結構便利なのだが、この機能ではキーワードの設定は Blog の書き手に委ねられている。
社内で DiKicker を一部使ってもらっているのだけれども、それら他人の Blog を読んでいると「あのキーワードで串刺し表示したいな」と思うことがしばしばあることに気がついた。 やはり任意の文字列で串刺し表示する機能が欲しい。
書き手にとっても「自動リンクキーワードにするような文字列ではないけれども、串刺しで読みたい/探したい/見せたい」と思うことが少なからずある。
ということで、検索ベースの串刺し表示機能を実装してみた。
@ grep ベース
実現には全文検索を行う必要があるが「設置・運用の手間」「ディスク容量」という点から、事前にインデックスを生成するような方法は今回は避けようと思う (www.naney.org 上で自分が使う上での制約からくる理由が一番大きかったりする)。
ということで今回は grep 型で実装することにした。 もともと WiKicker の方の検索機能も現在のところ grep 型である。 WiKicker では自前で WikiPage をスキャンしているが、DiKicker では grep コマンドに任せることにした。 こういうのは専用の grep を使った方が速いはず。呼び出しは
grep -Flre $escaped_string dir...
というオプション指定。Web ページとしてのページングなどは、自動リンクによる串刺し表示機能のものを流用。
で試したところ www.naney.org サーバでは、load averages が 1 以下の時でだいたい50秒前後。対象ファイル数は 2800弱。予想より時間がかかる。
ただし1回実行した後、ファイルがファイルシステム/OSのメモリ上にのっている状態では 0.1秒程度で完了する。
検索結果ページの permalink が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。
今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。
- WiKicker 0.420 リリース - 変更いろいろ (2007-05-30)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- [ WiKicker ] Memcached を使った検索結果のキャッシング (2004-01-15)
- howm で nDiki の記事も検索対象にする (2006-04-02)
- 自動リンク機能改善による悪影響 (2007-03-07)
2007年11月6日 (火)
■ 今日のさえずり - 風呂バンス600での保温後の湯温は41℃強

- 10:01 この時間に会社にだれも来ていない。カギがない。[mb]
- 10:10 某筋により開錠。[mb]
- 10:40 Norton AntiVirus 14、指示通り LiveUpdate かけたら、「後で」の選択肢のない再起動。午前中の貴重な時間をなんだと。
- 13:07 昨日夜にホットカーペットを敷いた。気分は冬。 *Tw*
- 13:09 メモ: 昨日の風呂バンス600での保温後の湯温は41℃強だった。 *Tw*
- 23:28 言語を English に切り換えて Gmail Newer Version にしてみた。最初表示できなくなって焦ったが、とりあえずキャッシュクリアと Better Gmail 無効化したらきちんと動くようになった。
- 23:37 もう1回 Better Gmail 1.0.1 を有効にしてみたけれど、やっぱり Newer Version Gmail にログインできなくなるな。
- 23:42 速い Newer Version Gmail を体験し終わったので、とりあえず 日本語 Gmail + Better Gmail に戻しておくことにする。
- 23:46 @k12u ニコンようかんは写真界では有名。
- 今日のさえずり - 泣きながら 100g 少なくなったアタックを買った (2008-08-15)
- [ Debian ] GRUB でソフトウェアRAID1 ブート設定 (2004-01-05)
- 地方色豊かな義兄の結婚式・披露宴 (2006-05-14)
- 今日のさえずり - 明日のミーティング資料 Google ドキュメントで書いた (2007-10-31)
- Linbot の文字化け、とりあえず delegate で対応 (2000-09-08)
2007年11月9日 (金)
■ Twitter ステータスを nDiki サイドバーに表示

公式の Flash 版 Twitter badge をこのページのサイドバーに表示していたが、以下の点でちょっと不満だった。
- 「Flash, Just Me」: 自分のみのステータスを表示できるが、1度に1つのみ。キャッシュの関係で古い情報が表示されがち。
- 「Flash, With Friends」: 自分のみのステータスを表示できない。
- 「HTML/JavaScript」: JavaScript ファイル読み込みなので、Twitter 側が重いとページのその先のレンダリングが止まってしまう。
「自分の過去のステータスを一覧的にサイドバーに表示する」のがしたいことなのだが、ちょっとマッチしない。 ということで Twitter から RSS フィードを取ってきて、サイドバーに表示することにした。
使ったモジュールは URI::Fetch + XML::RSS + Date::Parse。 それとユーティリティとして WiKicker::HTML と WiKicker::URI。
- cron で定期的に Twitter から RSS フィードをとってきて、Perl スクリプトで HTML フラグメントに変換。
- DiKicker が読み込む(サイドバーを含む)フッタファイルに挿入。
と簡単に実装してみた。機能的には概ね満足。
今後は L:~ や URL の自動リンク化、キーワードの自動リンク化を適宜したい。
- はてなブックマーク上の最新ブックマークを nDiki に (2005-05-16)
- はてなブックマーク上の検索結果を nDiki に (2005-10-30)
- クリッピングに便利な CMS 「Tumblr」を使ってみる (2007-04-13)
- Flickr の写真を自動的に Twitter アイコンにする (2008-03-13)
- Plagger のインストールが大変なので XML::RSS で RSS ... (2006-06-10)
2008年1月5日 (土)
■ aufs で inotify を使ってブランチ上の直接の変更をすぐに反映させる

最近 aufs を使って Web サイトのドラフトを作成する(記事)ようにしているが、使っていて1つ不具合が出てきた。 今の設定だと、ブランチ側(今回の使い方だと公開ディレクトリツリー)のファイルを直接変更しても、aufs のキャッシュによりマウントしたディレクトリ側ではその変更されたファイルではなく、変更される前のファイルが見えてしまう。 これはちょっと不便。
マニュアルを見るとマウント時のオプションで udba=inotify を指定して inotify を使うようにすれば良いとのこと。
早速指定してみたがマウント時にエラー。 どうやら udba=inotify を使えるようにモジュールをコンパイルしていなかったようだ。
@ aufs モジュールを作り直し (Debian GNU/Linux sid)
aufs のマニュアルを見ると CONFIG_INOTIFY と CONFIG_AUFS_UDBA_INOTIFY を有効にする必要があるとある。前者は Linux kernel ビルド時に指定済み。
後者を有効にして aufs を作り直す必要がある。
module-assistant だと設定の仕方がわからないので、aufs.tar.gz2 展開して直接 make-kpkg module_image でビルドするようにした。
aufs.tar.gz2 を展開後、debian/conf.mk を編集して
- export CONFIG_AUFS_HINOTIFY = y 行を追加
- EXTRA_CFLAGS 指定のところで、-DCONFIG_AUFS_HINOTIFY を追加
とし、後は普通に make-kpkg を使う。 マニュアルとは設定名/マクロ名が違うので、ちょっとはまったがこれで udba=inotify を使えるようになった。
@ マウントする
前回のマウント方法をちょっと修正して以下のようにする。
mount -v -t aufs -o br:/home/naney/draft.naney.org=rw:/home/naney/www.naney.org=ro,udba=inotify none /home/naney/next.naney.org
これで /home/naney/www.naney.org 以下を修正すると、すぐさま /home/naney/next.naney.org の方でも反映されるようになった。
メデタシメデタシ。
- Debian Linux kernel 2.6.23 をビルドする。 (2007-12-23)
- aufs を使って Web サイトのドラフト作成する (2007-12-23)
- sid の CinePaint がプラグイン読み込みでエラー (2006-04-15)
- 古い Crypto++ は古い GCC で (2006-02-07)
- Debian GNU/Linux sid 環境を新 HDD へ (2006-07-29)
2008年6月13日 (金)
■ 今日のさえずり - NEW MEGALOPOLIS かぶった

@ 2008年06月12日
- 09:41 洋服の青山のアドトレインきつい。CF 1種類ループは洗脳的。[mb]
- 09:48 4日間連続ヨドバシカメラ。[mb]
- 09:52 デジカメプリントオーダー完了。[mb]
- 10:43 これから面接らしい。 *Tw*
- 20:09 @yamakiyo 1日2ヨドバシは可能だけど、週7ヨドバシはきつい。[mb]
- 20:12 ということで今ヨドバシカメラ。[mb]
@ 2008年06月13日
- 09:32 「かたちんば」って昨日初めて聞いた。差別用語扱いらしい。[mb]
- 09:47 銀行口座に預け入れしようとキャッシュカードを持ってきたが現金を忘れてきた。[mb]
- 12:34 前回4月4日に携帯電話から床屋を予約したのだが、それ以降リダイヤルは3箇所しか登録されてなかった。 *Tw*
- 12:36 今日13日の金曜日か。 *Tw*
- 20:23 久しぶりに NEW MEGALOPOLIS かぶった。しかも同じカラーでやな感じ。L:秋葉原駅[mb]
- 今日のさえずり - 100g 減る前にアタック買いだめ (2008-05-28)
- 今日のさえずり - 「ドン吉くんの鳥グッズ展」終了間近 (2008-08-08)
- ステーショナリーに手を出した - 私的10大ニュース2005 [ misc ] (2005-12-31)
- 今日のさえずり - 首なし犬 (2008-03-26)
- 今日のさえずり - 向島志 ゛満ん草餅 (2008-03-28)
2008年8月15日 (金)
■ 今日のさえずり - 泣きながら 100g 少なくなったアタックを買った

@ 2008年08月12日
@ 2008年08月13日
@ 2008年08月14日
@ 2008年08月15日
- 09:39 ポケモンスタンプラリー2008、今日は閑散として寂しげ。[mb]
- 11:04 Google ドキュメント、[Print...] すると古い版の印刷がでる時があって困る。どっかでキャッシュしてるのかな。
- 11:32 色付けした Perl コードを Google ドキュメントに入れる良い方法がさっと思い浮かばなかったので、htmlize-buffer してブラウザで表示してスクリーンキャプチャとって画像として貼った。
- 12:45 Google リーダーが Twitter のフィードから更新とれる間隔が随分長くなってきた。
- 16:48 ライフハッカー [日本語版] 、子ネタとかソフトウェア紹介とかが多くてちょっとガッカリ。
- 17:56 今日までの日報をサーバにコピーしようとするも失敗。ディスクフル?
- 18:10 ザ・ゴール読み始めた。
- 20:08 お盆出勤終わった。キタ、俺の夏休み。[mb]
- 20:15 あーそうか、Google リーダーは更新が少ないフィードについて当然だが巡回頻度下げてるのか。Twitter のフィードの流れで気がついた。[mb]
- 20:32 松屋の弁当セパレート指定の存在を知った。[mb]
- ソフトウェア技術者御用達のプロジェクトマネジメントツール TaskJuggler (2007-04-23)
- 今日のさえずり - 100g 減る前にアタック買いだめ (2008-05-28)
- Twitter への書き込みを自動的に Skype ムードメッセージに設定する (2008-02-25)
- Wink - チュートリアル/プレゼンテーション作成ツール (2004-11-19)
- Twitter ステータスを nDiki サイドバーに表示 (2007-11-09)
Related web page
みんな大好きなmemcached。今日はBrian AkerのC言語用クライエントライブラリについて書きたいと思います。日本語の情報がとても少なく、ドキュメンテーションも英語だけという事で興味はあるけど手をつけていないという方のお役に立てれたらなと思います。 本題の前に why libmemcached? 既にlibmemcacheが存在するのに何故、libmemcached?かと言うと理由の一つは最近libmemcacheの開発が止まhttp://alpha.mixi.co.jp/blog/?p=119
最近かりかりとサーバサイドの実装をしています。修行の成果、だいぶ複雑な SQL も書けるようになってきました。DBMS の気持ちを考えながら SQL 最適化するのは楽しいですね。しかし、いくら SQL を工夫したところでパフォーマンスの限界はあるわけです。 となると、採りうる選択肢はスケールアウト・スケールアップ・キャッシングの3つになります (もちろん組み合わせもhttp://labs.cybozu.co.jp/blog/kazuho/archives/2007/05/cache_adaptive.php
キャッシュhttp://pcweb.mycom.co.jp/news/2005/08/17/011.html
DNSサーバと言うと、自身のドメイン名をインターネット上に通知するコンテンツサーバを思い浮かべることが多いかもしれませんが、もう1つ、名前解決の問い合わせ結果を保存する<strong>キャッシュ</strong>サーバの存在も忘れてはなりません。 DNSサーバとして広く使われているBINDがコンテンツサーバと<strong>キャッシュ</strong>サーバの両方の機能を備えているため、この区別が曖昧になっている人も意外http://asshole.dip.jp/pdnsd.php
とりあえず「<strong>キャッシュ</strong>」じゃなく「ミラーコピー」と称してくれないかhttp://takagi-hiromitsu.jp/diary/20050225.html#p01
関連するクライアント/Proxy/サーバそれぞれに認識させるための特殊な追加情報を記述する。例えば、「no-cache」を指定することで無条件に最新リソースを転送させることができる ■METAタグ METAタグはHTMLで規定されていない情報をHTMLページに持たせるためのタグだ。<meta http-equiv="name" content="content">というMETAタグを指定すると、HTTPヘッダにname: contentというフhttp://www.atmarkit.co.jp/fjava/rensai2/webopt12/webopt12.html
■よく検索されるキーワード
torrent(68) perl(60) windows(51) cvs(42) linux(41) 書き方(39) ganttproject(33) アジェンダ(26) debian(25) 使い方(24) 提案書(20) サンプル(19) java(19) ドラマ(17) tc-1(17) x31(16) 壁紙(16) google(16) ほぼ日手帳(16) subversion(15) バッグインバッグ(14) ヨドバシカメラ(14) 2009(14) 設定(14) firefox(13) 秋葉原(13) ssh(13) 修理(13) バッグ(13) インストール(12) 動画(12) svn(12) usb(12) 影舞(12) ファイル(11) rcs(11) ほぼ日(11) アジェンダとは(11) wiki(11) c#(10) ダイソー(10) thinkpad(10) centos(10) 無印(9) 価格(9) 画像(9) 手帳(9) activeperl(9) apache(9) 市原隼人(9) リフィル(9) ミノルタ(9) 冷蔵庫(9) 作り方(9) tortoisesvn(9) 大井町(9) ほぼ日手帳2009(8) gmail(8) 生年月日(8) truecrypt(8) mailpia(8) so905ics(7) cgi(7) スーベレーン(7) mew(7) spidermonkey(7) emacs(7) ご査収(7) ダウンロード(7) パスワード(7) テンプレート(7) cygwin(7) chrome(7) make(7) suunto(7) gimp(7) 評判(7) gtd(7) 写真(7) 方法(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 方法 設定 サンプル ダウンロード セール 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 最新 MP3 動画 Torrent 解説 意味 用語集 参考文献 お薦め お勧め おすすめ 便利 Blog ブログ mixi 待受画面 修理Process Time: 1.549117s / load averages: 0.46, 0.44, 0.49
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク