1

次を使用して、かなり大きなデータテーブルをアプリケーションキャッシュにキャッシュしています。

HttpContext.Current.Cache.Insert(GlobalVars.Current.applicationID + "_" + cacheName, itemToCache, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(240));

ご覧のとおり、キャッシュに 4 時間保持されるはずですが、奇妙な結果が見られます。

CPU と RAM の使用率が低いサイト (0 ~ 150 ユーザーなど) では、エラーは発生しません。

CPU が高く RAM の使用率が低いサイト (CPU ~90%、ユーザー数 300 ~ 600) では、20 ~ 60 分ごとに次のエラーが発生します。

    Cannot find column EditorOrder.

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.IndexOutOfRangeException: Cannot find column EditorOrder.
   at System.Data.DataTable.ParseSortString(String sortString)
   at System.Data.DataView.set_Sort(String value)
   at delima_v1._01.templates.results.editors_picks.Page_Load(Object sender, EventArgs e)
   at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.HandleError(Exception e)
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

EditorOrder は、結果が SQL から取得された後に手動でデータテーブルに追加される列です。したがって、列が何らかの形で削除されているのか、キャッシュ全体が失われているのかはわかりません。エラーは、列が失われていることを示しているようです。私が言ったように、それは高負荷の下にあるように見えるだけなので、IIS / Windowsが何らかの影響を与えるかどうかは不明です....

サイトは 64 ビット AppPool で ASP.NET 4.0 を実行しています

よろしくお願いします。

デイブ

4

0 に答える 0