負荷テストについて

KLab×はてな エンジニア応援ブログコンテスト


ちょうど自分の俺々プロジェクトについてはてなでまとめようと、
はてなダイアリーを準備したときに、「KLab×はてな エンジニア応援ブログコンテスト
が開催されていたので、締め切りぎりぎりに少し書いてみたいと思う。


まずは、今の仕事のこと。


新人で投入されたプロジェクトで、パフォーマンス問題が起きた。
それからは、システムの改善とその改善を示すための負荷テスト。


それまで、JMeterをちょこっと使ったことがあっただけだったのが、
MSの負荷テストツールを使ってがっつり負荷テストをすることに。
システムにアクセスできるのはサーバー室のみなので、毎日出社しては毛布を持ってサーバー室にこもる毎日。


WindowsIISASP.NetSQLServerのMSオンリーなシステム。
学生時代にずっと扱ってきたのはLAMPだったので、ちょっと慣れるのにとまどった。


一番大変だったのは、負荷をかけるマシンが一台しかないこと。
正直それは負荷テストにならないだろうと考えたが、
携帯用の軽いサイトだったので、何とかなっていた。


しかし、「システムの限界を知りたい」という顧客の鶴の一声により、
どんどん負荷をあげていく羽目に。
あるところで、OutOfMemoryエラーが発生する事に。
OSは64bit、物理メモリは12GByte、これで足りないはずがないと思っていたが、
しかしタスクマネージャーでは負荷ソフトのプロセスは1.5GByteくらいしか消費していない。
しばらく悩んだ末、負荷ソフトが32bitプロセスだということに気付く。


では、この状況で使えるマシン1台で、これ以上の負荷をかけることは可能だろうか。


そこで試したのが、仮想化によりマシンを1台の中で増やすこと。
すぐにHyper-Vでの仮想化を調べ、試し、仮想マシンを使った負荷テストファームを一台の中に作り上げた。


それが突破口になり、首尾良くより大きな負荷をかけることができるようになった。


結局、それでなんとか結果を出すことができたが、
新人にはなかなかハードな経験となった。