負荷テストについて
ちょうど自分の俺々プロジェクトについてはてなでまとめようと、
はてなダイアリーを準備したときに、「KLab×はてな エンジニア応援ブログコンテスト」
が開催されていたので、締め切りぎりぎりに少し書いてみたいと思う。
まずは、今の仕事のこと。
新人で投入されたプロジェクトで、パフォーマンス問題が起きた。
それからは、システムの改善とその改善を示すための負荷テスト。
それまで、JMeterをちょこっと使ったことがあっただけだったのが、
MSの負荷テストツールを使ってがっつり負荷テストをすることに。
システムにアクセスできるのはサーバー室のみなので、毎日出社しては毛布を持ってサーバー室にこもる毎日。
Windows+IIS+ASP.Net+SQLServerのMSオンリーなシステム。
学生時代にずっと扱ってきたのはLAMPだったので、ちょっと慣れるのにとまどった。
一番大変だったのは、負荷をかけるマシンが一台しかないこと。
正直それは負荷テストにならないだろうと考えたが、
携帯用の軽いサイトだったので、何とかなっていた。
しかし、「システムの限界を知りたい」という顧客の鶴の一声により、
どんどん負荷をあげていく羽目に。
あるところで、OutOfMemoryエラーが発生する事に。
OSは64bit、物理メモリは12GByte、これで足りないはずがないと思っていたが、
しかしタスクマネージャーでは負荷ソフトのプロセスは1.5GByteくらいしか消費していない。
しばらく悩んだ末、負荷ソフトが32bitプロセスだということに気付く。
では、この状況で使えるマシン1台で、これ以上の負荷をかけることは可能だろうか。
そこで試したのが、仮想化によりマシンを1台の中で増やすこと。
すぐにHyper-Vでの仮想化を調べ、試し、仮想マシンを使った負荷テストファームを一台の中に作り上げた。
それが突破口になり、首尾良くより大きな負荷をかけることができるようになった。
結局、それでなんとか結果を出すことができたが、
新人にはなかなかハードな経験となった。