トップ(最新) | <前

nDiki : キャッシュ

キャッシュ - cache

スポンサード リンク

Related term

2005年10月30日 (日)

はてなブックマーク上の検索結果を nDiki このエントリーを含むはてなブックマーク

5カ月ほど前はてなブックマーク上の最新ブックマークnDikiサイドバーに表示するようにしてみた。

今回は nDiki のキーワード別のページに、はてなブックマークからそのキーワードで検索されたブックマークを表示する機能を追加してみた。

取得する対象RSSが多くなり、さすがに前回みたいにローカルPCで処理して定期的にアップロードという形では無駄が多すぎるのでちゃんとサーバ上で処理するようにした。

URI::Fetch + Cache::FileCache + XML::RSS を用いて実装。 キャッシュ期間は1日に設定。キーワードページを最初にアクセスした際にははてなブックマークからのフィード取得があるので、ちょっと時間がかかるが2度目のアクセス以降キャッシュを使っている間はそれほど余計な時間はかからないはず。

自分のWeb日記とブックマークの組み合わせだと当然扱うネタが近いので、きちんと関連する情報が表示されるはずだ。 他の検索サーバのRSSフィードを利用する事も考えてはいるけど、しばらくはこれでいいかな。

スポンサード リンク


[ 10月30日全て ]

2006年3月3日 (金)

サーバ高負荷状態につき DiKicker 機能修正とサーバ設定変更 このエントリーを含むはてなブックマーク

www.naney.org をホスティングしているサーバが重いと思ったら、同じサーバ上のあるユーザの CGI プログラムが5プロセス無限ループしてるっぽい……。 load average 20前後。

あおりを受けて、nDiki が大変なことになっている。

nDikiSpeedyCGI を使っているのだが、バックエンドの speedy_backend が捌ききれず、フロントエンドの speedy が大量に待ちに入ってしまっている。

MaxBackends を調整しても駄目(下手にバックエンドプロセス数を増やしても、結局処理が追いつかない)。

ということで急遽対策。

@ 高負荷時にはてなブックマークへのアクセスを停止

load average が高い時には、はてなブックマーク上の検索結果を表示させるために行なっているはてなブックマークへのアクセスを休止するように変更。 24時間に設定してあるキャッシュの有効期限が切れていても、高負荷の時にはアクセスにいかないようにする。

これで DiKicker の処理時間を短縮。相手側サーバへの負担も軽減。

@ Google Desktop からのアクセスを一時的に拒否

おかげ様でここ最近 nDikiRSS へのアクセス数が増えてきている。 ありがたい事である。

しかしながら DiKickerRSS レスポンスは、あまり賢くなく毎回データベースから最新記事情報を抽出して生成しているため、それほど処理が速くない。

なのでアクセス頻度を高くしている 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 は無下にする訳にもいかないしなぁ。


[ 3月3日全て ]

2006年3月4日 (土)

さらにサーバ負荷状態悪化。対応に追われる。 このエントリーを含むはてなブックマーク

CPU パワーを消費し続けているプロセスが昨日の 5 個から、今日は 21個に増えている……。

対応するも、焼け石に水か。

@ データベースロックタイムアウト時間を短く

120秒から60秒に。

@ 生成した RSSキャッシュするようにする

生成した RSSCache::FileCache で有効期間30分でキャッシュするように変更。 あわせて Google Desktop からのアクセス拒否を解除。

@ 旬カレンダーナビゲーションをキャッシュするようにする

ページ下部にある各月上中下旬へのリンクは、どこに記事が追加されたかディレクトリをスキャンするしか知りようがないので毎回そのようにしていたのだが、これが結構重くなってきたので、これも有効期間1時間でキャッシュするように変更。

@ 高負荷時のページ更新停止機能を改善

DiKicker では新しいキーワードが追加されると、過去の記事についてもアクセスがあり次第、自動リンクし直していくようになっている。

高負荷時にはこの機能が止まるようにしてあったのだが、「キーワード記事」については止まるようになっていなかった。 また「1記事のみのページ」へのアクセスの場合も(1記事ぐらいの更新ならいいだろうということで)止まるようにしていない。

このためこれらへのアクセスあると、(必要であれば)アップデート処理が発生。 データベースの排他ロックも必要となるため、全体のレスポンス低下につながっていた。

これらも、高負荷時には止まるように修正。


[ 3月4日全て ]

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 オープン時にどちらで開いているかを通知するようにし、キャッシュ情報などの書き込み時にはこれらを参照して間違えた書き込みをしないようにした。


[ 11月21日全て ]

2007年2月2日 (金)

DiKickergrep 検索機能を追加 このエントリーを含むはてなブックマーク

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 が検索エンジンにそれなりに捕捉されて、定期的にアクセスがあるようになれば、ファイルがメモリにのっている割合が増えるであろうから平均して実用に耐えられる速度が出るかもしれない。

今後は様子をみながら検索結果のキャッシュ等を処理を整備していく予定。


[ 2月2日全て ]

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 ニコンようかんは写真界では有名。

[ 11月6日全て ]

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。

  1. cron で定期的に Twitter から RSS フィードをとってきて、Perl スクリプトで HTML フラグメントに変換。
  2. DiKicker が読み込む(サイドバーを含む)フッタファイルに挿入。

と簡単に実装してみた。機能的には概ね満足。

今後は L:~ や URL自動リンク化、キーワードの自動リンク化を適宜したい。


[ 11月9日全て ]

2008年1月5日 (土)

aufsinotify を使ってブランチ上の直接の変更をすぐに反映させる このエントリーを含むはてなブックマーク

最近 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 の方でも反映されるようになった。

メデタシメデタシ。


[ 1月5日全て ]

2008年6月13日 (金)

今日のさえずり - NEW MEGALOPOLIS かぶった このエントリーを含むはてなブックマーク

@ 2008年06月12日

@ 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]

[ 6月13日全て ]

2008年8月15日 (金)

今日のさえずり - 泣きながら 100g 少なくなったアタックを買った このエントリーを含むはてなブックマーク

@ 2008年08月12日

  • 12:26 家から水羊羹もってくるの忘れた。
  • 20:10 「ダーリンは外国人」の新しいバージョンの車内放送見た。前から本読んでみたいと思ってる。[mb]

@ 2008年08月13日

  • 10:33 水やりを頼まれているイチゴがげんなりしている。マズイ。
  • 19:45 泣きながら 100g 少なくなったアタックを買った。さくっとスプーンとかどうでもいい。[mb]

@ 2008年08月14日

  • 11:22 早弁する。
  • 19:36 これからイトーヨーカドーに寝間着買いに行く。[mb]
  • 19:51 寝間着買った。半袖長ズボンいいのがなかったので、半袖半ズボンで妥協した。[mb]

@ 2008年08月15日


[ 8月15日全て ]

Related web page

mixi Engineers’ Blog » libmemcachedで快速キャッシュ生活
みんな大好きなmemcached。今日はBrian AkerのC言語用クライエントライブラリについて書きたいと思います。日本語の情報がとても少なく、ドキュメンテーションも英語だけという事で興味はあるけど手をつけていないという方のお役に立てれたらなと思います。 本題の前に why libmemcached? 既にlibmemcacheが存在するのに何故、libmemcached?かと言うと理由の一つは最近libmemcacheの開発が止ま
http://alpha.mixi.co.jp/blog/?p=119
Kazuho@Cybozu Labs: 負荷に応じてキャッシュを自動調節する Perl モジュール
 最近かりかりとサーバサイドの実装をしています。修行の成果、だいぶ複雑な SQL も書けるようになってきました。DBMS の気持ちを考えながら SQL 最適化するのは楽しいですね。しかし、いくら SQL を工夫したところでパフォーマンスの限界はあるわけです。  となると、採りうる選択肢はスケールアウト・スケールアップ・キャッシングの3つになります (もちろん組み合わせも
http://labs.cybozu.co.jp/blog/kazuho/archives/2007/05/cache_adaptive.php
Java用のシンプルなキャッシュ機構 - ehcache-constructs 0.6公開 (MYCOM PC WEB)
キャッシュ
http://pcweb.mycom.co.jp/news/2005/08/17/011.html
pdnsdでDNSキャッシュ - Linux Home Server Memo - 自宅サーバ
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ページに持たせるためのタグだ。&lt;meta http-equiv=&quot;name&quot; content=&quot;content&quot;&gt;という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)

この日記のはてなブックマーク数 Add to Google RSS

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)