缓存

在具有成千上万个通知的系统中检索视图模块的通知会非常昂贵,特别是在贯穿所有可用课程的通知指示板级别检索时更是如此。为了有助于缓解运行该查询的负担,通知系统包含一个按用户、按会话的缓存:

  • 该缓存会存储针对某个特定用户、会话和环境的通知查询结果。这就意味着系统为每个用户、为用户登录的每个课程,并且在全局、通知指示板级别保存单独的缓存。
  • 用户可以手动刷新缓存。刷新操作会清除某个特定会话所有环境的缓存。
  • 新通知抵达后不会更新缓存。用户必须手动刷新才能看到新通知或等待缓存超时。请参阅下表以便了解默认的超时值。
  • 缓存将响应手动通知删除。因此,如果用户从特定的视图中删除某个通知,那么该通知还将从所有环境的缓存中删除。

缓存通过 bb-config.properties 配置文件中的属性进行配置。

缓存属性
属性 密钥 默认值
最大元素数 bbconfig.cache.nautilusCache.elements 500 秒
生存时间 bbconfig.cache.nautilusCache.timetolive 600 秒
空闲时间 bbconfig.cache.nautilusCache.timetoidle 600 秒
永久 bbconfig.cache.nautilusCache.eternal

如果证明与显示模块相关的性能有问题,管理员便可以调整这些设置来延长缓存通知的寿命。这里要付出的代价是:缓存时间越长,显示的通知可能会越陈旧。

缓存设置对通知分发没有任何影响。


调整通知大小

通知存储可能增长得非常大。本部分包含防止该情况发生的策略。

禁用不需要的通知

默认情况下,系统出厂时已启用所有通知,这意味着为所有受支持的事件可以创建、即将创建的每个通知。根据您机构的大小和学期开始时设置课程的方式,会导致表格非常大以及相关性能降低。

关闭不需要的通知是个非常好的办法。要关闭不需要的通知,请转到“课程设置”=>“默认通知设置”“组织设置”=>“默认通知设置”页面,并将所有可用分发者的这些通知设置为始终关闭

另一种方法是在繁忙期关闭某些通知。例如,在完成课程模板期间关闭内容项可用通知,因为在那段时期这些通知很可能会形成大部分通知负载。

缩短通知有效期

通知功能会定期删除存在时间长于特定天数的通知。默认设置为 120 天,大约是一个学期的时间长度。您可以通过更新通知清除间隔来控制这些通知的有效期。要使通知从系统中更快地删除,请降低该设置。要了解详情,请参阅设置通知选项

请慎用该设置。已删除地通知无法恢复或轻松地重新发送出去。


通知后台任务

通知系统取决于 bb-tasks.xml 配置文件中定义的两项任务。

通知后台任务
任务名称 内部(分钟) 用途
NotificationRemoveStaleDataTask 5 该任务具有多种功能:
  • 发送到期事件提醒。项目到期之前的 x 天发送提醒,其中 x 是用户可以在其个人通知设置中进行配置的数字。
  • 将到期时间已过的到期通知转换为过期通知。
  • 在安排好的时间发送摘要电子邮件。在管理员设置的时间,每天发送一次摘要电子邮件。
  • 删除陈旧的收件人数据。在该上下文中,陈旧是指在系统中已经存在 x 天的收件人记录,其中 x 是管理员可以进行配置的数字。默认情况下,设置为将收件人保留整个学期。该操作被配置为每天运行一次。
DistributionSendNotificationTask 60 向所有已注册的分发者发送未处理通知。

NotificationRemoveStaleDataTask

管理员可以在常规通知设置页面上设置在通知生成后经过多长时间就将其清除。

到期日期过去后,所有到期通知都会转变为过期事件。其中包括:作业到期测试到期可评分项目到期调查到期

该任务的最后一种功能“删除陈旧的收件人数据”每天执行一次。每次唤醒该任务时,它都会检查是否已到此功能的执行时间。如果是,则执行此功能。执行时间由 nautilus_config.properties 配置文件中的 nautilus.staleDataRemove.executionTime 属性指定。

任务周期

更改该任务的周期将有以下影响:

  1. 更改到期通知变成过期通知的执行等待时间。在默认配置中,到期日期过去后最长五分钟就会转变通知。
  2. 更改发送提醒的执行等待时间。在默认配置中,提醒时间过去后最长五分钟就会分发提醒。
  3. 更改陈旧数据删除任务运行的执行等待时间。在默认配置中,该任务会在指定时间的五分钟内运行。

性能注意事项

每天晚上,在 nautilus_config.properties 配置文件中 nautilus.staleDataRemove.executionTime 属性指定的时间,该任务的通知清除部分都会运行。默认情况下,该部分设置为每天凌晨 1:00 运行一次。

该查询的性能非常密集,因为实际上它会扫描整个 eud_item_recipient 表格来查找过期通知并将其删除。

如果您已注意所有这些注意事项,但仍发现该任务严重影响您的系统性能,则可以执行以下几种操作:

  1. 更改其执行时间。很多机构都有晚上运行的其他维护任务,如果该任务与其发生冲突或者与其一起导致您的数据库服务器性能下降,您便可以将该任务设置为在其他时间运行。事先声明:Blackboard 强烈反对在白天或者您预料到人们会频繁使用该系统的任意时段运行该任务。
  2. 采取措施减少存储的通知大小。您拥有的通知越少,该查询的运行速度就越快。有关进行该操作的技巧,请参阅调整通知大小

DistributionSendNotificationTask

为确保该任务不会运行太长时间,在任何特定的执行中该任务仅处理有限的通知数量。管理员可以在 nautilus_config.properties 配置文件中的 nautilus.distribution.notificationsPerDistribution 属性中配置此设置 。默认设置为 10,000。

分发任务会向所有已注册的分发者发送通知。对于多数机构来说,这意味着仅向电子邮件分发者发送通知。可以预测,每次将新分发者添加到该组合时,性能都会稍微有所降低。

任务周期

更改该任务的周期将更改系统发送通知的频率。在默认配置中,将通知引入系统中之后最晚一个小时就会分发通知。系统管理员可以通过编辑 BB_HOME/config/ 文件夹中的 tasks.xml 文件,来设置在 Learn 系统中分发通知的时段。期间值在 blackboard.platform.nautilus.service.internal.DistributionSendNotificationTask

每次调用时分发的通知数量也会影响发送通知的时间。管理员可以在 nautilus_config.properties 配置文件中的 nautilus.distribution.notificationsPerDistribution 配置此设置 。

性能注意事项

该任务运行得非常频繁,但是它对于一次执行中所处理的通知数量有限制。当通知负载特别大时(例如在新课程刚上线的学期开始时),使用这种双管齐下的分发方法,系统可以在通知变为可用不久之后将其发送出去,而不会导致系统瘫痪。

如果该分发流程降低了性能,则减少执行周期,通过牺牲及时性来换取性能。如果分发时间太长,则只需减少每次执行时所处理的通知数量即可。

或者,如果您发现通知的抵达速度有点慢,则缩短该任务的周期并减少每次执行时所处理的通知数量。

某些收件人仅在名义上删除。也就是说,其关联的记录实际仍然存在,只是被标记为已删除状态。