Archive for 3 月, 2007

5.0からHEAPテーブルでも可変長レコードがサポートされたのだが(BLOBとTEXTは未サポート)、VARCHARでフィールド作っても固定でメモリを食われている気がする…まだちゃんと調べてないけど。

とりあえず、MySQLのデフォルト文字コードをUTF-8にしている場合、HEAPテーブルを使う際には注意が必要だと言うことはわかった。注意が必要って言うか、要はテーブルとフィールドのデフォルト文字コードに気をつけようって言うだけ。日本語を扱わないのであれば、UTF-8のまま使っているとメモリをかなり喰う。30バイト以内のランダムな文字列 + URL、っていうテーブルをHEAPで使っていたのだが、最初はテーブルの定義をVARCHAR(100) + VARCHAR(2048)とかにしていたら、show table statusするとAvg_row_lengthが5kとかになっていた。それをVARCHAR(30) + VARCHAR(512)に変えると2kくらいに減少。ALTER TABLEでテーブルとフィールドの文字コードをUTF-8からASCIIに変えてあげたら550バイトくらいまで小さくなった。やっぱ日本語が絶対に入らないとわかっているのなら、UTF-8を使うのはメモリ(ディスク)の無駄だ。拡張性はあるんだけど、URLとかidとかはASCIIで済むのだから。

, , , ,

モンスターハンターポータブル 2nd
モンスターハンターポータブル2nd、超面白い!なにげにMHシリーズ初めて買ったけど、なんでもっと早く買ってなかったのかと思える出来映え。正直これだけのためにPSP買ってもいいと思える。基本アクションなんだけども、アクション苦手な俺でも十分楽しい。アイテムも豊富だし、なにより面白いのは「自分がうまくなってる感」が良く出てるところ。RPGだとキャラが強くなっていくのが楽しいのだけど、このゲームはそういうRPG的な「キャラが強くなっていく感」(実際は武器や防具が強くなっていくだけだけど)と、敵の動きを見極めて動けるようになる「自分がうまくなっていく感」がうまい具合にブレンドされていると感じた。名作だ。

PSPというハードの特性をうまく利用して、ネットワークを用いての協力プレイも魅力の1つ。MMORPGなんかでありがちな、リアル友達としか遊べないとか、いつも決まった人としか遊べないという感じじゃなくて、一期一会な感じがあってそれも新鮮。本当にちょっと空いた時間で気軽に遊べる、というのが実に良い感じだ。数人で集まってアドホック通信で、会話で連携を取りながら一緒にプレイすることも出来るのでそれもまた良し。PSPでもっとも売れているソフトは伊達ではなかった。

30時間ほど遊んでいるが、また初心者用クエストから抜け出せない。村☆2クエストは全部終えたところで、集会場のクエストを消化しているところ。太刀が気に入ったのでメインで使っていて、今は今は斬破刀を使っている。んで今日はドドブランゴ討伐に向かってみたが、普通に3死*2でやる気萎え。強ぇよ…脚引きずり出すところまでは弱らせたけどトドメが刺せない。シビレ罠・落とし穴+爆弾をうまく使わないと勝てないかも。とりあえず正面に立つと死ねるってことはわかったので、側面から少し離れてチクチク行くか、足下に張り付くのが良さそう。あとペイントボールが掻きむしりで効果が消されるので、多めに持って行くこと>俺

なんか噂によると集会場のクエストの方が難しいらしいので、とりあえずシカトして村☆3を進めた方が良いのかも…しかしこのまま諦めるのもなんか悔しい。明日は罠と爆弾とペイントボールを大量に用意して挑んでみよう。

, ,

ブライアン・ジュベールだっけ。フランスの人。今大会で使われてたのはMetallicaの「Creaping Death」「Nothing Else Matters」「unforgiven」。もちろんオーケストラアレンジで、全然メタルな感じではないのだけども…すげー違和感あるわw

なんかこの人は、ダフトパンクとかピンクフロイドとかも使ってたことがあるらしい。趣味なのかしら…。つか金メダルだし!今大会じゃないけど他にもoneをBGMに滑る女子選手もいるのな。スケート奥深いぜw

来年辺り誰かdragonforceやらねぇかな…100万回録画するぜw

,

22時頃、保守フェーズに入っているあるウェブアプリケーションの担当者から、アクセスできなくなっていると電話。サーバには職場からしか繋げないのだが、たまたま職場に後輩が残っていたため、電話して口頭で作業させた。そのウェブアプリの構成は以下のようになっている。

              +---------------+
              | Load Balancer |
              +---------------+
                      |
             +--------+--------+
             |                 |
         +------+          +------+
         |apache|          |apache|
         +------+          +------+
             |     mod_jk      |
             +-----------------+
                     |
   +-------- +-------+--------+---------+
   |         |       |        |         |
+------+ +------+ +------+ +------+ +------+
|tomcat| |tomcat| |tomcat| |tomcat| |tomcat|
+------+ +------+ +------+ +------+ +------+
   |         |   hibernate    |         |
   |         |       |        |         |
   +-------- +-------+--------+---------+
                     |
+------------------------------------------+
|                                          |
|                 +-----+                  |
|                 |mysql|                  |
|                 +-----+                  |
|                    |                     |
|               replication                |
|                    |                     |
|            +-------+-------+             |
|            |       |       |             |
|         +-----+ +-----+ +-----+          |
|         |mysql| |mysql| |mysql|          |
|         +-----+ +-----+ +-----+          |
|                                          |
+------------------------------------------+

実際はもっとサーバの台数も多いのだが、まぁ主要なサーバはこんな感じだ。なんのことはない、割と一般的なJavaのウェブアプリといえる。とりあえずトラブルシューティングとしてやったことを列挙。ちなみにサーバはRHEL4、apacheは2.0、tomcatは5.0、mysqlは4.1、javaは1.5。

  • apache: ps -ef|grep httpd|wc -l
  • apache: /usr/local/apache2/bin/apachectl graceful
  • tomcat: /etc/init.d/tomcat restart && apache: /usr/local/apache2/bin/apachectl graceful
  • mysql: mysql -uroot -p -e’show processlist’|grep Locked

ここまでやって、とりあえずDBで詰まってるわけではないことが判明。単純なプロセス再起動で復旧しないことから、アクセスの異常増加かハードウェア異常じゃないかと疑ってみる。httpdのプロセス数はMaxClients 512に設定してあるが、2台ともFULL。全サーバでtop/sarを確認するも特に異常なし。そこで思い立って hdparm -t /dev/sda してみる。通常は50MB/sec~80MB/secくらい出るのだが、webの1台だけ1.5MB/secとかいうふざけた野郎がいるのを発見。とりあえず shutdown -r now したらIOの速度は復旧。デバイスドライバのbugっぽげ。

ここまでやって、自宅からVPNで接続できる担当者と連絡が付いたので、後輩はお役後免にする(なにをやらかすかわからない子なのでw)。リブートまでしたものの、状況は先ほどと変わらず。訳がわからないので、とりあえずもう1台のwebもリブートしてみよう、ということになり実施する。が、担当者がshutdownのオプションを間違えて(多分solarisと間違ってる…)リブートじゃなくてまともに電源断。サーバの置いてある現地とは連絡が付かないため状況はさらに悪化…

webが片肺になってしまったので、httpd.confでMaxClientsとServerLimitを倍に設定。だがプロセス数300前後で反応がなくなる。問題はapacheではなさそうなので、次に散々泣かされているmod_jkを疑ってみる。netstat -a|grep ESTABLISHED とかすると、tomcatサーバの1台がコネクションを捕まえっぱなしになっていることが判明。ブラウザからjkstatusの管理画面を見ると、1台はrecovering、1台okで残りはerrorになっている。原因究明は後で良いので復旧第一ということで、tomcatを全部再起動してその後apacheも再起動。そうするとあら不思議、今までの重さがウソのように完全に復旧しましたとさ。とりあえず10分ほど動作確認して、問題なさそうなので解散。電源は朝入れれば良いと言うことで…

実際はもう少し色々試行錯誤があったのだけど、ダイジェストにするとおおよそこんな感じ。22時だからまだ良かったよ…寝てても容赦なく電話くるから。しかし根本原因がよくわからない。IO性能が異常に劣化してたのはbugだとしても、1回目のtomcat全部再起動で復旧しなかったのが謎。なんかtomcatって、stop/startを素早くやりすぎるときちんと再起動しないことがあるような気がするのだが、それなのかなー。てか、もうmod_jkは止めたい。でもapache2.2はまだちょっと怖いし、sticky session使ってるし…代替案でいいのがない。

, ,