缓存Web事件

在开始处理WEB事件 时,要将WEB事件 定稿数据库(如SQL Server)或通过电子邮件发出去,这会使数据库爆满或出现大量的电子邮件 (尤其是应用程序出现某个错误的永久循环时,就更是如此)。这就是使这些提供程序继承于BufferdWebEventProvider的原因。
      在执行指定的操作之前,BufferedWebEventProvider 可以缓存所收集到的web事件,缓存它们 的原因是避免出现数据库爆满或邮箱爆满的情况。

<system.web>
   
    <healthMonitoring enabled="true">
      <bufferModes>
        <clear/>
        <add name="Critical Notification" maxBufferSize="100" maxFlushSize="20" urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00" maxBufferThreads="1"/>
        <add name="Notification" maxBufferSize="300" maxFlushSize="20" urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00" maxBufferThreads="1"/>
        <add name="Analysis" maxBufferSize="1000" maxFlushSize="100" urgentFlushThreshold="100" regularFlushInterval="00:05:00" urgentFlushInterval="00:01:00" maxBufferThreads="1"/>
        <add name="Logging" maxBufferSize="1000" maxFlushSize="200" urgentFlushThreshold="800" regularFlushInterval="00:30:00" urgentFlushInterval="00:05:00" maxBufferThreads="1"/>
      </bufferModes>
      <eventMappings>
               
      </eventMappings>
      <providers>
        <clear/>
        <add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
        <add name="SqlWebEventProvider" connectionStringName="MyEpicDesignsConnectionString" maxEventDetailsLength="1073741823" buffer="false" bufferMode="Notification" type="System.Web.Management.SqlWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"/>
      </providers>
    </healthMonitoring>

</system.web>
每隔30分钟把信息发送给数据库(或通过电子邮件发送),这也称web事件的刷新。30分钟的时间间隔是用regularFlushInterval属性定义的。每隔30分钟给数据库发送200个消息(或通过电子邮件 发送)。一次发送的消息不会超过200个,这个数字是在maxFlushSize属性中指定的。30分钟的时间间隔内有超过200个的消息等待发送时,ASP.NET仍国发送200个消息,多出来的消息不会被 发送。在队列中存储的最大消息数不能超过1000数。这个数字是通过maxBufferSize属性设置的。但是,队列中的消息总数超过800个后,ASP.NET会每隔5分钟刷新一次,而不是每隔30分钟。发送消息的频率变化是由urgentFlushThreshold属性指定的,在达到urgentFlush Threshold属性值时,用于发送消息的时间间隔就通过urgentFlushInterval属性来定义。

 

粗体显示部分,首先,最重要的属性是buffer。在默认情况下,消息的缓存是关闭的,因为buffer属性设置为flase。bufferMode属性可以指定在<burrdrModes>段中创建的一个缓存模式。这里引用 的是Notification缓存模式。把buffer属性改为true,可以根据Notification缓存模式定义的时间间隔,将事件发送到SQL Server中。

posted @ 2010-03-26 11:22  flora_asp.net  阅读(303)  评论(1)    收藏  举报