OTRS守护进程是一组计划和执行后台任务(循环任务或事件触发任务)的独立的系统进程。OTRS守护进程是正确系统操作的基础保障。
在OTRS之前的版本中(从3.1到4)有另外的进程叫做OTRS调度器,它做了OTRS 5中OTRS守护进程的一部分工作。原来的进程被OTRS守护进程替换,从底重写的OTRS守护进程比它的前任更稳定、更具伸缩性和更健壮。
OTRS守护进程能够同时处理多达10个任务,还能与群集中不同前端服务器的OTRS守护进程进行协同工作。
OTRS守护进程在空闲时包含6个进程:
主守护进程(bin/otrs.Daemon.pl
)
这个进程负责启动其它子进程并保持其正常运行。
任务工作者守护进程(Kernel/System/Daemon/DaemonModules/SchedulerTaskWorker.pm
)
这个进程负责按先进先出的原则执行列表中的所有任务。它可以通过创建子进程来处理同时的任务,并每秒检查几次任务列表。任务列表可以由任务管理器进程、事件处理器和系统的其它部分填充。
它的主要使命是尽可能快地处理任务列表中的所有任务。
未来任务管理器守护进程(Kernel/System/Daemon/DaemonModules/SchedulerFutureTaskManager.pm
)
这个守护进程检查在未来某个时间执行的非循环任务(例如:当一个通用接口调用程序试图抵达一个服务器时而不能抵达时,会产生一个5分钟后执行的计划任务)。在到达正确的时间时它将这个任务发送给任务工作者守护进程。
Cron任务管理器守护进程(Kernel/System/Daemon/DaemonModules/SchedulerCronTaskManager.pm
)
这个守护进程计算所有循环任务的下一次执行时间(例如:每周清理一次缓存)。这种任务在系统配置中指定。在每个任务合适的时间它将需要的信息发送给任务工作者守护进程以执行它们。
如果在系统配置中修改了一个任务执行时间定义,OTRS守护进程可能要花最多1个小时才能自动获得修改后的时间。另外也可以通过重启OTRS守护进程来立即应用修改了的执行时间。
自动任务管理器守护进程(Kernel/System/Daemon/DaemonModules/SchedulerGenericAgentTaskManager.pm
)
这个守护进程扫描存储在数据库中的定时自动任务(丢弃所有事件触发的自动任务)。当自动任务运行时间到了时,它将需要的信息发送给任务工作者守护进程以处理任务。
系统配置同步管理器守护进程(Kernel/System/Daemon/DaemonModules/SystemConfigurationSyncManager.pm
)
这个守护进程验证配置文件Kernel/Config/Files/ZZZAAuto.pm
是否与数据库中的部署信息保持同步,否则将更新此文件。
并通知主守护进程使用更新后的配置重新启动所有守护进程。
此外,如果在守护进程运行时修改了Kernel/Config/Files/
中的任何其他.pm文件,它还将通知主守护进程重新启动所有守护进程模块。
活动进程数取决于一个时间点上OTRS守护进程同时执行的任务数。
默认每个守护进程在一个单独的文件(位于
/opt/otrs/var/log/Daemon/*.log
)中记录所有错误消息的日志。这些日志在系统中保留一个预定义的周期。要修改保留时间和/或还要记录非错误消息,请更新系统配置Daemon
-> Core::Log
中的设置参数。
当一个任务因为某个原因不能成功执行时,会给预定义的收件人发送一封邮件来报告这个问题,邮件内容包括错误消息和可用的跟踪信息。
OTRS守护进程是一个自动进程,通常不需要人工交互。但是也可以在需要时查询它的状态和启动/停止它。
为了确保OTRS守护进程正常运行,有一个Cron任务持续检查这个进程是活的。主守护进程甚至在没有数据库连接时就能工作,所以在系统启动时数据库进程启动之前Cron任务就启动OTRS守护进程是完全没有问题的,它还能容忍数据库失连。
如果因为某个原因需要停止OTRS守护进程(例如在系统维护期间),会保存所有未处理的任务,一旦这个进程重新启动它会继续执行所有保存的任务,对于循环任务它只执行最近一次的任务(如果它的到期时间是在停机时间内的话)。
除非OTRS守护停止运行,否则它在OTRS图形界面中不可见。
当系统检测到OTRS守护进程没有运行时,会给预定义组(默认是“admin”组)的用户显示一条通知消息。
要禁用这个通知(不推荐),修改或添加通知的组,请在系统配置中编辑Frontend::NotifyModule###800-Daemon-Check
的设置。
点击这个通知系统会显示一个重叠屏幕来解释启动OTRS守护进程的步骤。
OTRS守护进程命令行工具能让你控制主守护进程(启动或停止)或查询它的状态。还有获取其它四个子进程的详细信息的工具。
要启动、停止或查询守护进程状态,使用bin/otrs.Daemon.pl
脚本。
可用的选项
start - 启动OTRS守护进程。
stop - 停止OTRS守护进程。
status - 查询OTRS守护进程状态。
start --debug - 以调试模式启动OTRS守护进程。
在这个模式下每个守护进程报告不同的消息(取决于已经执行的操作)。这个模式不推荐在生产环境中使用。
stop --force - 不等待子进程完成立即停止OTRS守护进程。
强制停止减少了主守护进程等待其它子进程成功完成的时间,从30秒(正常)减少到5秒(强制)。