うちにあるパッケージシステム(Web アプリケーション)をバージョンアップするという仕事が入ったので、ちょっとヘルプにかり出されていたんですよ。
まあ、私の役目はサーバ周りなんですけどねー。
●今までの環境
Windows 2000 Server / Windows Server 2003
IIS 5.0 / 6.0
Visual Studio 2003(ASP.NET / VB.NET)
SQL Server 2000
●バージョンアップした新環境
Windows Server 2008
IIS 7.0
Visual Studio 2008(ASP.NET / VB.NET)
SQL Server 2008
せっかく 2008 シリーズにしたのに、64bit の検証せずに 32bit アプリですよ。
かなり残念なのです。
とまあ、私は開発環境を作ったんです。
●開発環境(サーバ)
Windows Server 2008(x86)SP1
IIS 7.0
CPU:Xeon X5500 シリーズ(デュアルコア)
メモリ:3GB
Windows Server 2008(x86)SP1
CPU:Xeon X5500 シリーズ(デュアルコア)
メモリ:4GB
SQL Server 2008 SP1
2台構成です。
これで問題なく動いていたんです。
ところが、お客様のところへ納品に行ってテストしたら、かなり動作不安定。
セッションは切れるわ、重い日次処理流したら5分くらい戻ってこないわ・・。
はっきり言って、使い物にならないと激怒されたとか。
●本番環境(サーバ)
Windows Server 2008(x86)SP1
IIS 7.0
CPU:Xeon E5500 シリーズ(シングルコア)
メモリ:4GB
SQL Server 2008 SP1
まあ、1台構成な上に、1CPU です。
最初のテストでメモリ使用率が 70% を超えて 80% 近くをうろうろしていたので、IIS のワーカプロセスのメモリを 30 分間隔でリサイクルするように設定しました。
そしたらセッションがバシバシ切れてテストどころじゃ無くなっちゃいました。
どうも、リサイクルのたびにワーカープロセスである「w3wp.exe」が再起動するような挙動を見せるんですよ。
正確に言うと、プロセスで「w3wp.exe」が1つ動いていて、30分後にもう一つ「w3wp.exe」が動く。
そして先に動いていた「w3wp.exe」が終了する。
これがセッション切れを起こす原因のようです。
よくよく調べてみると、実はセッションを別のプロセスで管理するモードがあるらしい。
「ASP.NET State Service」というサービスで、web.config などにこのモードを使うよって明記をすればよいとか。
しかし、テストしている時間がナッシング。
というわけで、リサイクルをするのを止めて、SQL Server 側でメモリ制限をかけました。
1,536MB までしか使うなよって!
これで不安定感は無くなりましたが、一部の限定ユーザのみが使う、日次処理などの特殊な処理を流すと、CPU 使用率が 100% で張り付きまくり、5分くらい帰ってこないという現象がっ!
再びリソースモニタで監視していると、やはり CPU がボトルネックになっているっぽい。
メモリの空き容量やネットワークはまだ余裕があり HDD のアクセスが少しすごいかな?程度。
というわけで、CPU をデュアル構成にしてもらったのだが、CPU 使用率が下がっただけで応答速度は変わらないとか。
というわけで、また私が現地入りして調査してきまっす。
まさか、ここまでこの作業にハマるとは思わなかった・・・。
悲しすぎる(´・ω・`)
まあ、私の役目はサーバ周りなんですけどねー。
●今までの環境
Windows 2000 Server / Windows Server 2003
IIS 5.0 / 6.0
Visual Studio 2003(ASP.NET / VB.NET)
SQL Server 2000
●バージョンアップした新環境
Windows Server 2008
IIS 7.0
Visual Studio 2008(ASP.NET / VB.NET)
SQL Server 2008
せっかく 2008 シリーズにしたのに、64bit の検証せずに 32bit アプリですよ。
かなり残念なのです。
とまあ、私は開発環境を作ったんです。
●開発環境(サーバ)
Windows Server 2008(x86)SP1
IIS 7.0
CPU:Xeon X5500 シリーズ(デュアルコア)
メモリ:3GB
Windows Server 2008(x86)SP1
CPU:Xeon X5500 シリーズ(デュアルコア)
メモリ:4GB
SQL Server 2008 SP1
2台構成です。
これで問題なく動いていたんです。
ところが、お客様のところへ納品に行ってテストしたら、かなり動作不安定。
セッションは切れるわ、重い日次処理流したら5分くらい戻ってこないわ・・。
はっきり言って、使い物にならないと激怒されたとか。
●本番環境(サーバ)
Windows Server 2008(x86)SP1
IIS 7.0
CPU:Xeon E5500 シリーズ(シングルコア)
メモリ:4GB
SQL Server 2008 SP1
まあ、1台構成な上に、1CPU です。
最初のテストでメモリ使用率が 70% を超えて 80% 近くをうろうろしていたので、IIS のワーカプロセスのメモリを 30 分間隔でリサイクルするように設定しました。
そしたらセッションがバシバシ切れてテストどころじゃ無くなっちゃいました。
どうも、リサイクルのたびにワーカープロセスである「w3wp.exe」が再起動するような挙動を見せるんですよ。
正確に言うと、プロセスで「w3wp.exe」が1つ動いていて、30分後にもう一つ「w3wp.exe」が動く。
そして先に動いていた「w3wp.exe」が終了する。
これがセッション切れを起こす原因のようです。
よくよく調べてみると、実はセッションを別のプロセスで管理するモードがあるらしい。
「ASP.NET State Service」というサービスで、web.config などにこのモードを使うよって明記をすればよいとか。
しかし、テストしている時間がナッシング。
というわけで、リサイクルをするのを止めて、SQL Server 側でメモリ制限をかけました。
1,536MB までしか使うなよって!
これで不安定感は無くなりましたが、一部の限定ユーザのみが使う、日次処理などの特殊な処理を流すと、CPU 使用率が 100% で張り付きまくり、5分くらい帰ってこないという現象がっ!
再びリソースモニタで監視していると、やはり CPU がボトルネックになっているっぽい。
メモリの空き容量やネットワークはまだ余裕があり HDD のアクセスが少しすごいかな?程度。
というわけで、CPU をデュアル構成にしてもらったのだが、CPU 使用率が下がっただけで応答速度は変わらないとか。
というわけで、また私が現地入りして調査してきまっす。
まさか、ここまでこの作業にハマるとは思わなかった・・・。
悲しすぎる(´・ω・`)