トップ «前の日記(2006-07-06) 最新 次の日記(2006-07-08)» 編集

いしなお!

2002|01|02|03|04|05|06|07|08|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|02|03|04|07|
2009|03|10|

2006-07-07 [長年日記]

_ [URL] URLのパーツごとの統計

旧1470.netではURLをvarchar(255)で格納していたんだけど、新1470.netではprotocol、hostname、port、path、querystring、fragmentというパーツに分割し、URL自体はそれらへのIDへのリンクとして持つようにした。

URL情報をハンドリングするには、必ず6つのテーブルへの参照が必要と、処理的には冗長なんだけど、従来のやり方だと無限に増え続けるURL情報がDBサイズを圧迫するんで、とにかくDB上のURL関連データのサイズを圧縮する方が、スケールを考えたときには圧倒的に有利だったので。

で、しばらく走らせてみて、いろいろなURL関連の情報がたまってきたところで、URL数に対しての各パーツの数ってのは、結構面白い情報だなーと思ったので、現在の値を晒してみる。こういうのって研究している人いるのかなー。

URL112,679
プロトコル*12
ホスト名*221,378
パス78,979
QUERY_STRING8,214
フラグメント23,510

ちなみに、URL情報は形式的にvalidであれば、実体がなくても(404とか返ってきても)登録はされるようになっているんで、すべてが有効なURLであるとは限らない。

あと、うちのDBに登録されるURLってのは、基本的に

  • 誰かが興味を持ったURL
  • RSSなどで配信されているURL

なので、そういう偏りがあることにも注意が必要だろう。

*1 現在のところhttpとhttpsしか扱っていないので

*2 小文字に統一して扱っている

_ [1470.net][障害報告][バグ] メモのパーマリンク情報の不整合を修正中です

メモのパーマリンク生成処理にバグがあったため、メモに関連するURIデータベースに重複(同じメモに関するURI表現が複数存在する)等が発生しています。現在修正スクリプトを走らせているので、しばらくしたら正しいパーマリンク表現一つに収束すると思います。

_ [1470.net][障害報告] 1台外れのサーバーがありました

1台deployに失敗してエラーを返すサーバーがあり、先ほどまで1/3の確率でエラーを返す状態になっていました。

ちなみに現在の構成では、フロントのpoundでバックエンドのWebサーバー×3に分散させていて、

   Session
     Type IP
     TTL 300
   End

といった感じでIPアドレスベースで接続サーバーを固定しているんで、IPアドレスが変わらない限りは、基本的に同じサーバーに接続するようになっています。

ので、外れのサーバーをひいた場合はずっとエラーが出っぱなし、あたりのサーバーをひいた場合は特に問題がない、みたいな感じの挙動になっていました。