ホスティングサービス会社からメール。 12月16日0:00-0:20にかけて、naney.org に設置しているCGI プログラムが原因でサーバが過負荷になり動作不安定な状態になったため、実行権限を落としたとのこと。
あちゃ。
メールでは naney.org に設定しているハイパー日記システムのうち一方(この日記でない方)が原因との報告だったが、アクセスログをみるとそちへの最終アクセスは 12/15 18:25:19 でどうも違う感じ。 逆にこちらの hns の方に、61.116.156.147 から 23:42:32 - 00:17:37 の間に少なくとも523回のアクセスがあり、どうやらこちらが過負荷の原因になってしまったようだ。
ここ最近1日に1度から数度、普通のISP経由で連続アクセスがある。 UAはIEをなのっているが、ロボットのようでもある。 なかなか弾きにくい相手である。
できれば連続アクセスだけ拒否するようにしたいのだが、そう簡単でもない。
hns は SpeedyCGI では動くようなコードでもなさそうだし。
とりあえず index.cgi を書き換えて サーバの load average が高くなっている状態では 503 Unavailable を即座に返すように修正。
BEGIN { my $average = `uptime`; $average =~ /(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?)/; if ($1 > 50) { print "Status: 503 Unavailable\r\n\r\n"; print "Server is busy, please retry later."; exit 0; } }
を追加。load average が 50 (値は調整)を越えたら 503 になるようにしておいた。
ということで、この日記が 503 だったらきっとサーバがイッパイイッパイということです。
Naney's Diaryの方、NaneyOrgWiki からエクスポートしたページをインクルードしたり、AutomaticLink をしたりなどいろいろ動的処理をつけ加えてあるのでハイパー日記システムのキャッシュ機能をオフにしてあった。
しかし最近日に日にレスポンスが悪くなっている感じ。 最新日記の公開はこのnDikiに移行したのにともない、Naney's Diary の方は過去ログ表示専用になるためキャッシュ有効に戻しておくことにした。
これでレスポンスがよくなるかな?
朝、Naney's Diary をチェックしたらエラーが出てしまっている。 昨日 WiKicker をアップデートした事による影響か。
チェックしたところ、ハイパー日記システムではライブラリに HTTP というパッケージがありその中で Request サブルーチンが定義されていた。 これが HTTP::Request モジュールと被っており、今回 WiKicker の更新で間接的に使用されることになった Log::Log4perl の中での new HTTP::Request と衝突する事に。
名前空間大事。
hns の方の HTTP::Request サブルーチンはそのパッケージ内でしか呼ばれていないようなので、HTTP::RequestSub と名前を変更して対処。
去年末から1日1記事を復活した訳だが、ネタが無かった日のあの苦しみもまた復活したのであった。ネタが無い日はこういう風に、ついメタな日記になってしまうのも以前と変わらない。
ありがちだけど Twitter で書いちゃってるというのはあるね。ハイパー日記システム(hns)時代は1ネタになっていたのが今は Tweet 1発で終わっちゃう。もともとそんなに長文じゃないものも多かったしね。
マイクロブログ系の投稿から(ただリストを貼るだけではない)日記を起こせる仕組みがあればいいな。とりあえずマイクロブログで書いておいて、それを下書きとして、構成推敲できる仕組み。そのあたりがスマートフォン上でできるようにしたい。
この Web 日記(nDiki)がスマートフォンで見にくいのがずっと気になっていたので、さくっと Bootstrap 3 に移行した。CSS を Bootstrap 3.0.2 のものに変えて、navbar を使うようにコードをちょっと変更程度の軽い対応。
もともと tDiary テーマ CSS 用の HTML 構造を生成していたんだけれど、そのあたりが問題で崩れることはなく Bootstrap の CSS を当てることができた。もともと Wiki 記法で書いたソースドキュメントを HTML に変換しているので、変な構造の HTML は吐かないようになっていたというのもサクっといけた点かな。
細かいところういうと画像の回り込みに対応させなければならなかったり、テーブルなど適宜 Bootstrap のクラスを指定した方がいいところがあるけれど、まあ追い追いで。
あとそもそも iPhone や Android などのスマートフォンで見にくかったのは CSS の問題というよりは、viewport の指定がなかったからだった。Bootstrap に差し替えただけではやはりスマートフォンでは見にくくて、Bootstrap の Getting started の通り、
<meta name="viewport" content="width=device-width, initial-scale=1.0">
と書いたら文字サイズなど見易くなった。
2004年2月22日にハイパー日記システム(hns)から自作の DiKicker に移行してからもうすぐで10年。そういえば2004年2月22日は奇しくも mixi がプレオープンした日だっとはなあ。何かの縁か。
Web 日記システムを2004年2月22日に今の自作のもの変えたのだが、それ以前の記事の移行が不完全なままで止まっておりでずっと気になっていた。やはりちゃんと移行しよう。
考えると過去に進まなかった原因の1つが「1日単位」の日記エントリから、「トピック単位」の日記エントリに分割することだった。
「移行すると1日の中の順序情報が失われるなー」「分割した記事ごとに URL (ファイル名)を決めるのが大変だなー」「ハイパー日記システム (hns) 時代の日記には Tweet のように短いエントリ(セクション)もいろいろあって、そのまま分割すると細分割しすぎ感が出たりするよなー」あたりがモヤモヤしていた。
自動リンク機能によりキーワードで記事を串刺し表示する今の Web 日記システム的には、1日単位ではなくトピック単位で分割した方が情報構造的にいいのだけれど、まあ「日記」なので記録として残っている(移行済みである)ことの方が大切だな。
「古いものは無理して分割せず1日1エントリにする」「そこから適宜トピックを取り出して別エントリにする」で移行しなおすことにしよ。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。