缓存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中。

转载于:https://www.cnblogs.com/flora_asp_net/archive/2010/03/26/1696829.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值