2016-09-01 11 views
0

作業中のASP.NET 3.5 Webサイトでメモリ/ RAMの問題が発生しているようです。現在のところ、仮想サーバー上にWindows 2012をインストールした2サーバーファームを稼働させています。より多くのユーザーがログオンし、アプリケーションの使用を開始すると、特に集中的なデータベース作業を実行すると、そのw3wp.exeプロセスのメモリ使用量が非常に高くなります(最大2.5-3 GB)。仮想サーバ上のRAMの増加のためのストアドプロシージャ(ASP.NET)を実行中にメモリ使用量が多い

  • 要求
  • すべてのデータベース接続を確認して、読者が「使用」の文
  • をしている:

    は、私はすでにこの問題を解決するために多くのことを試してみました

  • セッション変数、他のさまざまなセッション変数のクリーンアップに保存されるデータセットの部分を調整した
  • WinDbgなどを使用してメモリダンプを解析しようとしましたが、ログに飛びついた重要な問題はありません

私が気づいたことは、集中的なデータベース作業が行われているときにメモリが本当に高くなっているようです。私は、クリックするとストアドプロシージャを呼び出すだけです(FYI - これはSQLデータベースではなくInformixです)。 ASP.NETページから

-

Dim SWS As New PurchaseOrders 

Protected Sub btnFunction_Click (ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFunction.Click 

     SWS.MyFunctionCall() 

End Sub 

にApp_Codeファイルのメソッド呼び出しで -

Using Conn As New IfxConnection(ConnectToInformix()) 
      Conn.Open() 

      Dim cmd As New IBM.Data.Informix.IfxCommand() 
      cmd.Connection = Conn 
      cmd.CommandTimeout = 0 
      cmd.CommandText = "auto_order" 
      cmd.CommandType = CommandType.StoredProcedure 

      cmd.Parameters.Add("@storeID", IfxType.Integer) 

      cmd.Parameters("@storeID").Value = store_id 

      Dim value As String 
      value = cmd.ExecuteScalar() 

      If (value = "1") Then 
       Return True 
      Else 
       Return False 
      End If 
    End Using 

ストアドプロシージャが細かい実行されますが、ユーザーが継続的に連続してこれを実行します。その間に他のユーザーによって実行される他のデータベース機能があります。だから、これが起こっているときには、メモリは2.5〜3GBまで高速にジャンプします。 IISでメモリー制限のしきい値を追加することにしました.Webサーバー上で約3.5GBのメモリー使用量が過ぎると、オブジェクト参照エラーが返されるためです。だから一度それがメモリの限界に達すると、それはリサイクルし、もちろんユーザーをログアウトします。

誰でもアイデアがありますか?どんな洞察力も大変ありがとうございます。ありがとう。

答えて

0

informixドライバでメモリリークの問題が発生する可能性があります。あなたはいくつかのメモリプロファイラでプロファイリングを試すことができますか?いくつかの良いメモリプロファイラを試して数日無料で使用できます。

+0

あなたの洞察をいただきありがとうございます。この情報が当てはまると思いますか? http://stackoverflow.com/questions/37597695/informix-memory-leak – misosouper

関連する問題