サイトリニューアル

晴れ今日は仕事でやっているサイトのリニューアルオープンの日。 2ヶ月くらい構築していて、今日ようやくお披露目。
認知している部分の不具合や表示崩れなどは全て潰したつもりだった。

が、実際公開してみると次から次に出てくる出てくる……
ずっと修正しっぱなしで、あっという間に21時くらいになってしまった。

だけど、大きなトラブルも無く無事終えることができて良かった。

帰りにハローズよってそうめんとそばを買って帰宅。 夕飯はそうめん。

サーバー障害

晴れ朝7時半、なんだか電話が鳴っている。 着信を見ると、知らない携帯電話の番号からだった。 もしや、と思い電話に出たら、サーバー会社からだった。 丁度今朝が定期メンテナンスの日で、実行したのだけど、サーバー再起動後、どうもサイトの閲覧おかしいとのこと。
すぐにPC起動して確認するが、表示されたりされなかったり、サーバーが見つからないエラーが出たり……

寝ぼけた頭で考えたが、現象的にDBサーバーが原因のような気がする。
DBは複数台構成で、問題の切り分けのために台数を減らしていったのだけど、それでも状況は改善せず。

いろいろやった結果、原因はapacheのログだった。 ログを記録する際、logrotateにコマンドを送りログを記述する方式にしてるのだけど、ログ書式が防いで、今朝のメンテナンスで適用されたapacheのバージョンでは、不正なログ書式はエラーを吐くようになっており、エラーログにひたすらエラーが書かれ、アクセスログには書かれず、プロセスも溜まりまくり、結果的にプロセスの上限まで達し閲覧できなくなっていた。

症状的にDBサーバーが原因だと思い込んだのが、原因を判明するまで時間がかかったことになる。
9時15分くらいに復旧。 2時間弱もかかるとは……

いろいろ処理してたら、終わったのが9時40分くらいになり、どう考えても会社には間に合わないので遅刻して行く旨を連絡。

準備して会社に行って、サーバー障害の後始末をして、対策も。
これだけ大規模な障害は久々に起きた気がする。

しかし、7時半以前にも携帯が3度もなっており、いずれも不在着信になっていなかったので、目覚ましだと思って無意識のうちに切ってしまったっぽいね。
サーバー会社の人、何度も連絡してくれたようで、ごめんなさい。

ゴールデンウィーク中日1

晴れゴールデンウィークの間の平日1日目。 今日、明日を休めば、9連休になるらしい。 世の中にはそんな人たちがたくさんいるのが羨ましい。 けど、休日に働いてくれているサービス業の皆様ご苦労様です。

そんな今日は、先週末でだいたいの仕事が終わってしまったため、けっこうやることがなかった。 ついこの間、使いたかったSQLiteのライブラリ作ったりして、仕事の時間をつぶす。
SQLiteのライブラリ、けっこういいものが出来たと思うのだけど、実践投入はいつになるだろうか。 SQLite使う案件がほとんどないからなぁ……n

デコメ受信プログラム

曇り久々の会社。 今日行ったら、明日は祝日というのが最高だ。
仕事では、デコメ受信のプログラムを作っている。 けっこうメール周りは複雑なのだけど、メール受信より、受信したメールを転送する方が複雑だった……
まぁ納期までは約1ヶ月とたっぷりある。 作りこみができるので、納得のいくものができそうだ。

夜、久々に新・三国無双をプレイ。 クロニクルモードの修羅レベルに挑戦したのだけど、敵が強すぎ…… これはもうちょい遊びがいがあるかもしれない。

そういえば、FF13まだプレイしてないな。

富士通クラウドコンピューティングセミナー

雨のち曇り仕事で、「富士通クラウドコンピューティングセミナー」というのに言ってきた。
ちょうどサーバー機器の見積もりを取っており、それの流れで誘われた。
近場だし、まぁ行ってみるかということで、今日参加。

高松駅前のホテルが会場なのだけど、行ってみたら当然だけど、みんなスーツ。 私服なので浮いていた……

そしてセミナーが始まった。 が、技術者より管理職向けの内容で、ウトウトと……
後半の部、クラウドサービスに関する部分は、技術者が聞いてても面白いような内容だった。

メーカー系のセミナー、初めて参加したけど、けっこう豪華だったな。

第2回 岡山PHP勉強会

曇りのち雨昼過ぎから仕事でデータセンターへ。 HDDが故障したらしく、それの交換。
ホットスワップに対応したRAID1構成なので、レバーでHDDを外し、新しいHDDをつけたら、自動的にリビルドが始まった。 3時間ほどでリビルドが完了したらしい。
ホットスワップ+RAID1だとこんなにも簡単なのか。 サーバー止めずに交換できるなんて素晴らしい。

夕方からは岡山へ移動。
「第2回 岡山PHP勉強会」が開催される。 前回は開始時間ギリギリに到着して、最後列付近の席でほとんどスライドが見えなかったので、今回は1本早い電車で。
18時過ぎに到着し、一番乗りだった。 前から2番目の席に陣取り、勉強会が始まった。
内容的には知らなかった部分もあったけど、「これすごい」とかいう情報はなかったかな。

第3回は4月か5月に開催されるみたい。 また行けたらいいな。

データの整合性

晴れ今日公開した某管理ページがあるのだけど、その中で不具合が発生していた。
ページごとのアクセス数の集計をしているのだけど、集計元となるデータを挿入する際の、負荷を分散する箇所で不具合が発生しており、通常よりかなり多いアクセス数を記録していた。
それの重複をとる作業を行った。
プログラム書いて、それを回しただけなのだけど、何しろ時間がかかった。
第一の処理、これが約4時間。 第二の処理、これが日をまたいで、約16時間もかかった。 対称となるデータが300万件近かったし、現在のデータも書き込まれている最中での処理だったので、こんなに時間がかかったのだろうけど……

無事、データの整合性も取れたので一安心。

MySQLのクエリーチューニング

晴れ仕事で使っているMySQLで大量のinsertを処理することになった。 1日120万件くらい。 それを48時間保存し、使い終わったものはdeleteする。
そのMySQLサーバーはレプリケーションを組んでおり、スレーブ2台にバイナリログでデータが配送される。
で、大量のinsert。 全てスレーブにも反映される。 そこまではいいのだけど、バイナリログとディスクに書かれる量がとても多く、HDDのIO待ちが発生している模様。

で、部内で話し合い、一時データとして、ストレージエンジンをmemoryにしたものに書き込み。 それを8秒に1000件ずつ、複数insertの構文で、innodbのテーブルに挿入。 insertしたデータはmemoryのテーブルからは消す。
という処理を加えた。
バイナリログに書かれるもの自体は倍になった感じだけど、insert待ちがだいぶ減った気がする。

普段MyIsamばかりで、innodbはほとんど使ったことがないので、insert、updateなどが遅い以外にも、まだいろいろと悩まされるかもしれないな。