nDiki : www.naney.org

2006年10月26日 (木)

Web 解析サービス Google Analytics を申し込む

昨年無料サービス開始時には申し込みが殺到して新規登録を一時中止したという経緯があった Google Analytics、当時はそのうち試してみたいと思っていたのだが気がつけばもうすぐ1年だ。

アクセス解析を見るのは結構楽しいもので、周期的に見たいという衝動がくる。 analog やら AWStats やら自作やらで過去にもいろいろ解析してみた経験がある。

会社でも最近アクセスログ解析が話題になっているし、www.naney.org 用に Google Analytics に申し込んでみた。

解析を取りたいページの最後に JavaScript を埋め込むタイプの解析で、404 であったりその他のリソースのアクセス数のチェックには向かないものの、その分 Web サーバアクセスログ解析では得られない統計を得ることができる。

レポートの種類は豊富で、最初は「あのレポートは、どれだっけ?」と何度もいろいろ見直したりしなければならないぐらい。

アクセス傾向が分かるようになるので、重点的に内容を充実させるべきページを把握してサイトを改良していきたい。

スポンサード リンク
[ 10月26日全て ]

2007年1月13日 (土)

[ WiKicker ] spam検索エンジン対応に noindex、nofollow を追加

<a rel="nofollow">

相変わらず www.naney.org 上の WikiForum (NaneyOrgWiki) にも毎日のようにリンク spam 書き込みがある。

気がつき次第削除と、その URL や関連キーワードの書き込み禁止文字列ブラックリストへの登録を行っているが、手間でしょうがない。

これらのリンク先に貢献するのは腹立たしいのでリンク (A 要素)へ

 rel="follow"

属性をデフォルトで設定するように WiKicker を書き換えた。 ようやく。

<meta name="robots" content="noindex,nofollow">

あわせて、検索エンジン対応もしていおくことにした。

編集ページや履歴ページは検索エンジンに登録してもしょうがないので、インデックスから除外されるように HTML の HEAD に

 <meta name="robots" content="noindex,nofollow">

を追加するように修正。

クエリ付きの URL のページで noindex した場合、クエリ無しや他のクエリを持つ URL のページまで一緒にインデックスから外されてしまわないかちょっと心配で、今まで保留にしていたのだけれど、Wikipedia などを見ても大丈夫のようだ。


[ SEO ]

[ 1月13日全て ]

2007年1月21日 (日)

Wiki ではロボット除けをしてはいけない

昨日土曜日から nDiki を含め www.naney.org のアクセス数が激減している。 Google Analytics でみてみると先週の半分以下。 細かくみてみると Google 経由のアクセスが 3分の1になっている。

Google検索してみると今まで上位であった検索結果がことごとくランク外に。 先週土曜日に行った検索エンジン対応のための一部ページへの robots メタタグの追加とそれらのページへのリンクへの nofollow の追加が裏目に出たらしい。

Wiki の過去のリビジョンのページや編集ページなどが予想以上にサイト全体の PageRank を下支えしていたようだ。

あわててこれらの設定を外す。

元に戻るにはまたそれなりにかかるだろう。 ショック。


[ SEO ]

[ 1月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年3月7日 (水)

自動リンク機能改善による悪影響

www.naney.org がどうもまた最近重い。

load average が 30 前後まで上がっている。 しばらくするとだんだん落ちついてくるのだが、3 以下になったところでまた 30 前後までまた一気に上がるというのを繰り返している。 load average で振る舞いを変えるのは WiKicker / DiKicker の特徴なので、これはうちが原因かも。

調べてみると SpeedyCGI のフロントエンドのプロセスが順番待ちで大量に起動している。

どうやら先日追加した自動リンクの機能改善にかかわるコード修正による、若干の処理速度の低下がまずいようだ。

速度が上がるようにちょっと修正してみたけれどまだ駄目なようなので、しかたなく単語の連接チェック部分を一時コメントアウトして対応。

今後、自動リンクまわりの更なる高速化がする必要がありそう。

[ 3月7日全て ]

2007年3月8日 (木)

MSNBot が激しすぎるので deny

ここ数日の www.naney.org サーバ高負荷について様子を見ていたところ、DiKicker の処理がリクエストに追いつかなくなる時には MSNBot が激しくアクセスしてきているようである。

MSNBot のページには robots.txt の Crawl-delay を見ると書いてあるので、以前

 User-agent: msnbot
 Crawl-delay: 20

としておいたのだがどうもこれは効いていないらしい。

ちょっとこの連続リクエストはしんどいし、msn からのアクセスは現状全体の 2.5% 程度なのでしばらく弾くことにする。

[ 3月8日全て ]

2007年3月14日 (水)

[ DiKicker ] ロック獲得リトライをさらに減らす

相変わらずここ最近 www.naney.org の負荷が上がり気味。 今日は Referer spam の爆撃もきていた様子。

DiKicker の挙動やログを見ていて気がついたのだが、さばききれなくなるのはどうも記事更新チェックの時間が長いからのようだ。 排他ロック獲得ループの回数が今の設定でも長い。

どのみち負荷が高い場合は共有ロックの方が勝ち気味で、排他ロックできなくて終わることが多いはずなので、思いきってもっとリトライの回数を減らしておいた。

それとロック獲得ループの中で「結局ロックできなかった時」に余計に1回 sleep() していたのでこれを削除。

[ 3月14日全て ]

2007年4月5日 (木)

サーバの負荷が高くなったら DiKicker が 503 を返して沈静化を待つようにした

www.naney.org を収容しているサーバの負荷が高い状態。

  1. Referer spam 弾きを強化。
  2. 1日半前ぐらいに1度リブートしたようで、Memcached が起動していなかったので起動。

という対処をしたけれどそれでもなかなか負荷が落ちつかない。

傾向としては SpeedyCGI のバックエンド側(speedy_backend)が MaxBackends まで起動して処理が追いつかないと、起動しているフロントエンド側 (speedy) がどんどん増えてしまうという状況のようだ。

DiKicker の高速化も順次着手しているのだけれど追いつきそうにもないので、loave average が高い時は頑張らずに無条件に 503 を返すように修正して対応(以前ハイパー日記システムの時にも同じことをした)。

本当は SpeedyCGI フロントエンドの数に応じて負荷の軽い処理に切り換える等工夫したいんだけれど、フロントエンドの数を取得する方法は簡単にはなさそうなんだよなあ。

[ 4月5日全て ]

2007年12月18日 (火)

Google Analytics のデータからよく検索されるキーワードを表示するようにした

Google Analytics から1日1回キーワードのレポートを TSV 形式でメールで配信するように設定している。 このデータをもとに「よく検索されるキーワード」を抽出して、nDiki の下の方に表示するようにした。

処理の流れ

  1. メールで配信された TSV 形式データをファイルに保存する。
  2. 検索質問とセッション数の組のデータを抽出する。
  3. 1ワード単位でセッション数を集計する。
  4. 上位のワードについて、nDiki のキーワードリストにあるか照合する。
    1. 完全一致するものがあれば、それを参照キーワードとする。
    2. 大文字小文字一致するものがあれば、それを参照キーワードとする。
    3. ワードを含むキーワードがあれば、その中で文字数の差が少ないものを参照キーワードとする。
    4. ワードで記事を grep 検索してマッチするものがあれば、それを(nDiki 内で検索して見つかる)キーワードとする。
    5. でなければ関連キーワード無しのワードとする。
  5. 各ワードについて、対応するリンクを設定してフッタ埋め込み用の HTML フラグメントを生成しファイルを生成する。
  6. ファイルをサーバにアップロードし、サーバ側でフッタにインクルードする。

1日1回の作業なので、メールからスクリプトにかける部分とアップロードする部分は手動で。

そこそこの処理なので、そこそこの精度なのだけれど傾向は何となくわかる感じだ。

実際にはアクセスログの対象となっているのは nDiki 以外の www.naney.org 内のアクセスも含まれているけれどもまあいいであろう。

キーワードの処理

キーワードの処理は細かいことをいうと結構面倒だったりする。

  • 複合語の処理: 検索ワード側も、nDiki キーワード側も複合語を含むので空白で区切られた語の扱いが大変。特に検索ワード側は語順が正しいとは限らないし、各語が個別の語を表しているのか否かの判断が難しい。
  • 曖昧一致処理: 検索ワード(や nDiki キーワード)が正確な語とは限らないので、曖昧一致させる必要がある。検索エンジン側で曖昧一致させて検索結果に上がっている可能性があるのでその辺りも考慮する必要がある。

などなど。

この辺りは精度を上げようとするといろいろ工夫の余地がって楽しそうではあるな。

[ 12月18日全て ]

2008年8月23日 (土)

フィード向け AdSense を追加してみた

Google AdSenseで「フィード向け AdSense」が利用可能になったので、nDiki に追加してみた。

Google AdSenseにログインして nDikiURL を指定してフィードを登録すると、FeedBurner 上にフィードが作成される。

www.naney.org 側では nDiki のフィードへのアクセスがきたら、FeedBurner 上のフィードへリダイレクトするように設定する。 ただし FeedBurner から巡回がきた際にはリダイレクトせずに、nDiki のオリジナルフィードにアクセスさせる。

www.naney.org のトップディレクトリの .htaccess に以下を追加。

 RewriteEngine on
 RewriteCond %{HTTP_USER_AGENT} !FeedBurner
 RewriteRule ^diki/d/rss\.rdf$ http://feedproxy.google.com/nDiki [L,R]

思ったよりあっけなく設定終了。

今のフィード URL が既にフィードリーダーに登録してもらっていることを考えて nDiki (DiKicker) に「FeedBurner 向けに別 URL でのフィード出力機能」と「現在のフィード URL からのリダイレクト機能」を追加する必要があるなと思っていたのが、mod_rewrite が使えれば手間無しだった。

nDiki のフィードと同様の内容に広告が挿入されたバージョンのフィードが http://feedproxy.google.com/nDiki で表示されることを確認。

せっかくなので FeedBurner のレポート機能もチェックしてみることにしよう。

[ 8月23日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

※内容は個人的見解であり所属組織とは関係ありません。

follow us in feedly

月別インデックス
Process Time: 0.071188s / load averages: 0.32, 0.39, 0.45
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker