0

私は最も奇妙な問題を抱えています...私はモノレールのWebサイト(ASP.NET MVCに似た.NETソリューション)を持っており、ページの1つに保存ボタンがあります。保存ボタンをクリックすると、コードが実行されてオブジェクトがデータベースに保存され、別のページにリダイレクトされます。ただし、保存ボタンをクリックした直後にすべての保存コードを実行し、しばらくそこに留まってから、別のページにリダイレクトしてそのコードを実行します。この状況を特に奇妙にするいくつかの事実を次に示します。

  1. 保存をクリックして終了とリダイレクトを待つプロセスを実行するたびに、前回試行したときよりも 2 ~ 4 秒長くかかります。したがって、最初は2秒かかり、次に5秒、次に8秒など...
  2. アプリ プールをリサイクルすると、再び高速に実行されますが、事実 #1 が始まり、回数を重ねるほど遅くなります。
  3. ログに追加すると、保存とリダイレクトのコードが 1 ミリ秒で実行され、しばらく待ってから、新しいページのコードがすばやく実行されます。
  4. google.com にリダイレクトするように変更しようとしましたが、それでもこのように動作します。
  5. まったくリダイレ​​クトしないようにして、保存後に既存のページを再度表示するようにしましたが、それでもこのように動作します。
  6. 保存をクリックするたびに、CPU (具体的には w3wp プロセス) が急増します。
  7. 他のページは、他の保存方法であっても、このようには動作しません。
  8. データベースに保存するコードをコメントアウトすると、待機することなく正しく機能します。

それで、誰がこれを引き起こすのか考えていますか?保存コードは Active Record と NHibernate を使用しています。私が言ったように、コード自体は1ミリ秒未満であると超高速で実行されますが、コードの実行が終了した後に非同期で何かが発生し、長時間ハングするようです..

コードはhttp://pastebin.com/XGLWPgKにあります。

4

1 に答える 1

0

私のモノレールは少し錆びています...

リクエストごとに ActiveRecord/nHibernate コンテキストを破棄していますか、それともセッション状態でキャッシュしていますか? リクエストごとに新しいコンテキストを作成する必要があります。

データ エンティティを積極的に読み込んでいますか? データを保存している場合、関連するすべてのエンティティを取得している可能性があります。

于 2011-01-19T06:47:57.617 に答える