• ベストアンサー

IISがフリーズ

漠然としていて申し訳ありませんが、 Windows Server 2000 + IIS5.0 + ASPで イントラネット用のサイトを構築していますが、 一日に一度くらいの割合で、サイトが反応しなくなり、 IISを再起動が必要になってしまいます。 システムのイベント IISのログ 等に不正だった痕跡は残っていません。 現在、分離プロセスで動かしています。 また、たまに DLLHISTがCPU100%の状態が続くことがあり、 ワームの感染について調べましたが、 その可能性はないようです。 どなたか、このような状況についてご存知の方がいらっしゃったら、アドバイスをお願いいたします。

  • jun_j
  • お礼率78% (56/71)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.7

#3、#5、#6です。 > その様な場合、タスクマネージャの"DLLHOST"のメモリ使用量は、600人の時は人数に応じて増加し、 > 終了後は、完全に元に戻るのでしょうか? 完全な統計をとったわけではないのですが、600→100人にアクセス数が落ちるとメモリ使用量は減少していました。 Cで作成したDLLの不具合の件です。 どこにメモリリークするか、と聞かれての推測ですが おそらくDLLHOSTかと。 DLLの開発はしたことがないので以下、推測になります。 断言はできないですが、メモリリークというかIISがフリーズした原因はおそらくコレでしょう。 DLLでのミスはOSに致命的なダメージを与えます。 ご存知かと思いますが、C言語は非常に融通の効く言語です。 ASPと違って幅広く開発できる一面、バグがあるとシステムを不安定にさせる要因にもなります。 WinSockはおそらくAPIを使っていますよね? APIはシステムに密接に関連するところですし、メモリまわりで不具合が出て、 OSやIISの動作にも影響が出たと推測するのが妥当、かと。

jun_j
質問者

お礼

いろいろありがとうございました。 DLLは本当に怪しいのですが、 メモリリーク等の具体的な現象も把握できない状況では なかなか修正の許可が下りない(フリーズの対処として) ので困っていましたが、 やはり一度DLLを直し様子を見ようと思います。 (できればプールプロセスも)

その他の回答 (7)

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.8

慣例に従い、#2、#4です。(汗) >また、少し話がそれそうですが、最後にもう一つ、 >実は、ソケット関連の処理にミスがあり、 >クライアント側で recv 前に ソケットを再定義してしまい、 >recv で Winsock の WSAENOTSOCK"10038" のエラーが発生しました。 >当然その後の close も出来ず、 WSACleanup も出来ませんでした。 Cで作成したDLLをCOMコンポーネントとして登録しているんですよね。これに不具合があれば致命的なんでしょうね。 以下、IIS 5.0 Documentation からです。 パフォーマンスとアプリケーションの保護レベルは、両方を十分に満たすことのできないトレードオフの関係にあります。Web サービスのプロセス (inetinfo.exe) でアプリケーションを実行するとパフォーマンスは向上しますが、アプリケーションが誤動作した場合に Web サービスが利用できなくなるリスクが増大します。inetinfo.exe、また必須のアプリケーションは、そのもののインプロセスで、その他のアプリケーションは共有のプール インプロセスで実行することをお勧めします。 また、 > APで用意した改ページボタン、ブラウザの戻るボタン、ガンガン押された場合、 にサーバに負荷がかかる件ですが、 改頁ボタンの対策は、#3、#5、#6さんのおっしゃる手法が定石かと。。。戻るボタンを無効(左右されないようにする)にする方法もいろいろあるかと。。。

jun_j
質問者

お礼

いろいろありがとうございました。 >Cで作成したDLLをCOMコンポーネントとして登録しているんですよね。これに不具合があれば致命的なんでしょうね。 やはりそうですか。 これを修正し様子を見ることにします。

回答No.6

#3、#5です。 > やはり負荷の問題と思われますが・・・。 どれぐらいの負荷がかかるのでしょうか? 私の環境では、一時間に600人がガリガリ動かしても 全く問題なかったですよ(^^ (メモリ使用量はそれなりに増加しましたが、全然余裕でした。) その時はサーバ処理能力うんぬんより、ネットワークがかなり遅くなりました。SSL通信しているので、さらに遅くなります。。。 > APで用意した改ページボタン、ブラウザの戻るボタン、ガンガン押された場合、 > (以下略) 参照のみであれば、整合性うんぬんはないと思います。ただし、2回ボタンをクリックすれば、処理は2回走るはずです。(推測) 参考までに。 こちらのシステムではJavaScriptで、ボタンを1回しか押せないよう制御をかけています。 外部公開向けシステムなので、クライアント側でJavaScriptが無効になっていると意味がないですが。。。

jun_j
質問者

お礼

何度も申し訳ありません。 >私の環境では、一時間に600人がガリガリ動かしても >全く問題なかったですよ(^^ その様な場合、タスクマネージャの"DLLHOST"のメモリ使用量は、600人の時は人数に応じて増加し、 終了後は、完全に元に戻るのでしょうか? また、少し話がそれそうですが、最後にもう一つ、 実は、ソケット関連の処理にミスがあり、 クライアント側で recv 前に ソケットを再定義してしまい、 recv で Winsock の WSAENOTSOCK"10038" のエラーが発生しました。 当然その後の close も出来ず、 WSACleanup も出来ませんでした。 この、ポートがクローズ出来ていない事や、 ソケット(パケット?)が中に浮いてしまった事での メモリリークの可能性は大きいでしょうか? また、もしリークするとしたら、 タスクマネージャのどのプロセスに現れるのでしょうか? すっかり甘えていますが、この辺りもお詳しい様でしたらお願い致します。

回答No.5

> また、1Gのメモリを実装していて、28M程度の使用メモリで落ちているようなのですが、 > 実際、使いすぎでしょうか? いえ、問題ないと思います。 ソース側で問題ないとしたら、、、 #2さんがおっしゃる「プールプロセスで安定」を試すのがいいと思います。 ちなみに、私の環境もメモリ1Gで、プールプロセスで動いています。 参考までにお尋ねしたいのですが、IISがフリーズするタイミングは特定の条件なのでしょうか? このasp実行時にフリーズするとか、更新画面で停止するとか。。。 原因の切り分けができるといいのですが。。。

jun_j
質問者

お礼

度々ありがとうございます。 タイミングですが、 イントラネットという事で切り分けは難しいのですが、 私のテスト環境では全く起きませんので、 やはり負荷の問題と思われますが・・・。 ちなみに、ASPでは、 例えば、せっかちなユーザさんがいて、 APで用意した改ページボタン ブラウザの戻るボタン、 ガンガン押された場合、 処理の整合性を保つためにアプリ側での 必須の処理等はあるのでしょうか? (処理的には、ブラウザからの要求で、Cで作ったソケット関連のDLLを介し、サーバのDBに参照のみ行う感じです。)

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.4

#2です。 「プールプロセス」にすれば安定することはあり得ます。 一説によると、IIS 4.0の「分離プロセス」では、bugとかで安定しないことがあるようです。 IIS 5.0については定かではありませんが。。。 IISで不可思議な挙動=プログラムの仕業ではなかったことって結構ありました。(これは私だけ?かも。。。)

jun_j
質問者

お礼

度々ありがとうございます。 >IISで不可思議な挙動=プログラムの仕業ではなかったことって結構ありました。 やはりそうですか・・・ ソケット解放を対応したAP+プールプロセスで安定してくれればいいのですが・・・。 とりあえず様子見ですね。

回答No.3

> あるクライアントで無限ループに陥った場合、 > それは、全てについて影響し、IISのリセットにつながるのでしょうか? メモリリークしてIIS、というかサーバ(OS)自体が停止することがあります。 無限ループに限らず、プログラム内でのオブジェクトの解放し忘れがあっても、 小さいことが積み重なってメモリリークが大量に発生して サーバが停止することがあります。 大量アクセスのWin系サーバでは一日に一回、夜間で再起動を行うのが一番堅いです。 (私のてがけるシステムでは、そのようにしています。) DLLHOSTがCPU100%になる、というのは通常はあまりありえませんね。 プログラムに何か問題があるかもしれません。 どのプログラム(ソース)に問題があるのか、原因を突き止める必要があるかもしれませんね。 少しずつ画面を動かして、DLLHOSTが100%になるタイミングを手作業で調べてみてはいかがでしょうか。

jun_j
質問者

補足

ありがとうございます。 ソースを見たところ、 ソケットを解放していない場合がありこれを解消しテスト環境で動かした所、 プロセスが使うメモリが少なくなった感じはありません。 タスクマネージャのプロセスで"DLLHOST"の使用メモリが増えていく=メモリリークと考えて間違えないでしょうか? また、1Gのメモリを実装していて、28M程度の使用メモリで落ちているようなのですが、 実際、使いすぎでしょうか? 以上、申し訳ありませんが宜しくお願いいたします。

  • LemonT
  • ベストアンサー率49% (39/79)
回答No.2

はじめまして。 >この分離プロセスでは、 > クライアントがサイトを開く毎に"DLLHOST"のプロセスがサーバで立ち上がるのでしょうか? そのご解釈でよろしいかと思います。 > そしてもし、これらも含めてリソース不足等の問題が発生しIISの動作に影響した場合、I > ISのログやサーバイベントになんらかの痕跡が残っているものなのでしょうか? IIS自体に影響する問題が発生した場合、正しい痕跡が残される可能性はあまり高くないと思われます。 「プールプロセス」ではマズイ事情がおありなんでしょうか?

jun_j
質問者

補足

ありがとうございます。 >IIS自体に影響する問題が発生した場合、正しい痕跡が残される可能性はあまり高くないと思われます。 やはりそうなのですね。 >「プールプロセス」ではマズイ事情がおありなんでしょうか? 問題ないはずです。こちらの方が安定しますか?

回答No.1

ソースに無限ループになる可能性のある記述って無いですか? レアなケースで起こりえるとかも考えられますので、チェックしてみてはどうでしょうか? ソースが無ければこれくらいの事しかいえませんが…。

jun_j
質問者

補足

早速有難うございます。 IISやASPについて不勉強なもので初歩的な質問ですが、 あるクライアントで無限ループに陥った場合、 それは、全てについて影響し、IISのリセットにつながるのでしょうか? また、質問が少し変わりますが、 分離プロセスで動かすと、 サーバのリソースを多く消費するとMSのサポート等にあります。 この分離プロセスでは、  クライアントがサイトを開く毎に"DLLHOST"のプロセスがサーバで立ち上がるのでしょうか?  そしてもし、これらも含めてリソース不足等の問題が発生しIISの動作に影響した場合、I  ISのログやサーバイベントになんらかの痕跡が残っているものなのでしょうか? 申し訳ありませんが、宜しくお願い致します。    

関連するQ&A

  • IIS6のログ管理

    お世話になります。 IIS6を使ってイントラネットサイトを構築しています。一応アクセスログをとる設定にしているのですが、一日で1万前後のログが発生しており、集計がうまく出来ません。たまにならば、Excelなどに取り込んでクロス集計してもいいのですが、かなり手間です。 出来るだけ簡易な操作でログ分析(アクセス分析)が出来るパッケージソフト(もしくはフリーウェア)はないでしょうか?

  • IISの停止を監視する

    IISの停止を監視する IISを使って社内用Webサーバーを使用しております。 Windows Server 2003 Standard SP2 IIS 6.0 深夜にIISを停止させ、NTBackupでバックアップを実行、再起動させるというバッチファイルを組んで タスクで毎日実行させているのですが、IISが止まったままになってしまうことが多々あります。 原因を調べようとイベントビューアでログを確認しているのですが IISに関連するログは残っていません。 そこでIISのプロセスを監視して、いつとまっているのかログを残したいのですが 良い方法がありましたら、教えてください。 当方サーバー管理は初心者です。

  • ファイルのアップロードをできるだけ高速に行いたい!

    IIS5.0 + ASP(VBScript)で、BASP21を使ってファイルをアップロードする、イントラネットのサイトを作っています。5~8MB程度のファイルをアップロードするのですが、どうも Request.BinaryRead で数十秒程度の時間がかかっています。これを短縮するには、分離プロセスを「低」にするか、COMを自作するしかない、という結論に達しました。ちなみに、「低」にすると2~3秒に縮まりました。 そこで、質問なんですが、 (1)サーバのマシンスペック(CPU、メモリ)を上げると、さらに(「中」以上の設定でも)高速になりますか? (2)他のスクリプト言語を使うと、高速になりますか? (3)ASP.NET にするのは賢明でしょうか? よろしくお願いします。

  • IISワーカープロセスが原因でCPUが100%に

    ASP.NETを用いたWebサイトをIIS上で運用した際、開発したアプリケーションが少しでも動いた後にアプリケーションを停止せずサイトを停止すると、ワーカープロセスが原因でCPUが100%となります。 CPUが100%の状態のまま放置してもCPUの負荷が無くなりません。(アプリケーションプールを停止させることによってCPUの負荷が無くなります。) この事象に関してネットで原因を調査した結果、明確な解決方法が見当たらずこちらに質問させていただく次第でございます。IISの設定に関して詳しい方がおられましたら、この事象の原因と考えられる要素などをご教授下さい。 動作環境 Windows2008 R2 IIS7.5 .NET FrameWork4.5 開発環境 VisualStudio2012 ASP.NET(.NET FrameWork4.0) FORMSで開発 Oracle ODP

  • WIN2000 SERVER でイントラネット内でFQDNでWEBサーバをたてたい

    お世話になります。 イントラネット内でWIN2000 SERVER にて(http://*****.co.jp)といったような 形式でIISを用いてWEBサーバを運用したいと思っています。 ちなみにサーバは一台でネットワークはワークグループです。 現状は(http://192.168.0.200)/(http://コンピュータ名)ではイントラネット内でWEBサイト(***.htm/***.asp)は閲覧できます。 FQDN(http://*****.co.jp)を実現する場合、 DNSをサーバに用意すればいいのはわかるのですが、どのような手順でDNSを設定すればよいのでしょうか? そもそも、ワークグループで(http://*****.co.jp)な形のサーバ構築は可能なのでしょうか? また、(http://*****.co.jp)としたい場合の(*****.co.jp)コンピュータ名となにか関係があるのでしょうか? 過去ログを調べたのですが、なかなかピンとこなかったもので・・・。 申し訳ありませんが、よろしくおねがいします!

  • Win2000Server+IIS5.0不定期にダウン

    現在、Win2000server(SP2)とIIS5.0という構成になっており、クライアント端末の特定のWebページが真っ白くなる現象が不定期に(端末・日時・曜日・時間帯共に)起こっています。 IIS5.0のログを参照しますと、[ASP_0147]500 Server Error というログが表示されているのですが、原因不明なため応急処置としてIIS5.0の再起動を行い、現状を凌いでいる状況です。 IIS5.0の再起動を行うと、クライアント端末は通常のWeb表示がされます。 高トラヒックによりダウンしているのかと思い、Microsoftの負荷ツール「Application stress tool」を使用し試験を実施しましたが、現状考えられる最大負荷の約10倍の高負荷にも関わらず、IIS5.0はダウンしませんでした。 また、ウィルスにも感染しているかと思いウィルスチェックも行いましたが、全端末(サーバ、クライアント共に)感染がない事を確認済みです。 今後は(1)Win2000ServerのSP3をあてる(2)MS-IISの修正に関するMS01-026修正パッチをあてることを想定していますが、根本的な解決には繋がらないと思っています。 もし、この問題に対する解決方法をご存知でしたら、是非お教え頂きたいと思っています。宜しくお願い致します。

  • イントラネットのHPにサイト内検索を実装するには?

    OS:Win2K IIS 5.0 SQL Server 8 はじめまして。 現在、ASPにて社内のWebを作成しております。 イントラネットの為、Googleなどの "サイト内検索"は使えません。 イントラネットのHPにサイト内検索を実装するには どうすれば可能でしょうか?

  • IIS,Tomcat,Oracleの共存

    IIS上でTomcatを動かし、ASP、JavaServletの共存するOracleを用いたデータベースWebシステムを構築しようとしています。 下記URLを参考にし、同一手順で構築しているのですが、Tomcatのほうがうまく動いてくれません。 現状でこのような状態です。 (1) IIS(ASP)、Oracle、J2SDKは問題なく動いています。 (2) http://localhost:8080/へアクセスするとパスワード要求が出る。  <詳細>  ネットワークパスワードの入力   ユーザ名とパスワードを入力してください。   サイト:localhost   領域:XDB  ちなみにOracleのID,パスワードをいれると認証がとおります。  認証通過後はどこかのディレクトリ参照のような画面になるが、どこを指しているのかわからない。   public/、sys/、xdbconfig.xml という表示が出ているのだが、全ドライブで[xdbconfig.xml]を検索しても引っかからない。 (3) 立ち上がっているOracleのサービスをすべて停止しても同じ症状が出る。 (4) 下記URLの仮想ディレクトリの設定部分に   アクセス権:ISAPIアプリケーションを追加、   とあるが、具体的にどうすればよいかわからない。 このような状態にあります。 最終的には、ASPからPOSTなりGETなりのリクエストでServletを呼び出したいのです。 すべて同じサーバでの動作です。 以上、原因がわかる方がいらっしゃったら、ご指示の方をよろしくお願いいたします。 環境 OS:Windows 2000 pro アプリ:IIS5.0、Tomcat4.0.3、Oracle9i、J2SDK1.4.1 参考URL http://homepage2.nifty.com/ann/Windows/tomcat/tomcat-iis.html

  • IISサーバのWindows統合認証で認証失敗したときの画面の変更

    お世話になります。 Windows 2000 Server IIS5.0でWindows統合認証を利用したイントラネットサイトの構築を行っているのですが、 認証画面でパスワード入力を3回ミス、もしくはパスワード入力ポップアップ画面のキャンセルを選択すると、 「このページを表示する権限がありません」 というページが表示されます。 このページを自分で作成し画面を差替えることは可能でしょうか?

  • CPUが100%になってほとんどフリーズ状態になってしまう

    今使用しているPCについてのご質問です。 ネットを見ているときに限ってですが、ものすごく 動きが悪くなります。タスクマネージャを立ち上げると、 CPUの使用率が100%になっています。(パフォーマンス を見ると) 閲覧しているサイトを閉じても、タスクマネージャーの のプロセスには「iexplore.exe」が示され、それがCPUを 食っています。それを選択してプロセスの終了をクリック すると、元に戻り動きが軽くなります。(CPU使用率も元に 戻ります) これは何が原因なのでしょうか。あるときを境に突然起きた 現象なのですが、ウィルス感染でしょうか(ちなみにアンチ ウィルスソフトで検索をしてもウィルスは発見できません) 教えてくださると大変ありがたいです。 よろしくお願いします。

専門家に質問してみよう