我有一个由SMF执行的守护进程。 问题是发生错误时,我有失败代码,然后需要从头开始重新启动。 目前,它正在发送sys.exit(0)(Python),但SMF始终将其置于维护模式。

我已经与SMF一起工作,足以知道它有时会自动重新启动某些服务(并让其他服务失败并让您像这样处理它们)。 如何将这一过程归类为需要自动重启的过程? 它是SMF设置,一种失败的方法吗?

===============>>#1 票数:1

假定服务清单正常,我会怀疑您即将进入维护阶段,因为SMF “过快地”重新启动您(这是任意定义的)。 svcs -xv应该告诉您是否是这种情况。 如果是这样,则SMF将重新启动您,然后您又迅速退出,并决定放弃直到问题解决(并且您已手动svcadm clear它。

我想知道退出0(并指示成功)是否可能引起进一步的混乱,但似乎不会。

我认为Oracle Solaris不允许您“太快”地调整SMF认为的内容。

===============>>#2 票数:1

联机帮助

Solaris使用svc.startd联机帮助页中所述的startd/critical_failure_countstartd/critical_failure_period的组合:

startd / critical_failure_count

startd / critical_failure_period

critical_failure_countcritical_failure_period属性一起指定了在svc.startd将服务转换为维护之前的给定时间间隔内允许的最大服务故障数。 如果在critical_failure_period秒的任何时间内失败次数超过critical_failure_count ,则svc.startd会将服务转换为维护状态。

源代码中的默认值

可以在源代码中找到默认值,该值取决于服务是否为“等待样式”

if (instance_is_wait_style(inst))
    critical_failure_period = RINST_WT_SVC_FAILURE_RATE_NS;
else
    critical_failure_period = RINST_FAILURE_RATE_NS;

默认值为5次失败/ 10分钟或5次失败/秒

#define RINST_START_TIMES   5       /* failures to consider */
#define RINST_FAILURE_RATE_NS   600000000000LL  /* 1 failure/10 minutes */
#define RINST_WT_SVC_FAILURE_RATE_NS    NANOSEC /* 1 failure/second */

这些变量可以在SMF中设置为属性

<service_bundle type="manifest" name="npm2es">
  <service name="site/npm2es" type="service" version="1">
    ...
    <property_group name="startd" type="framework">
      <propval name='critical_failure_count' type='integer' value='10'/>
      <propval name='critical_failure_period' type='integer' value='30'/>
      <propval name="ignore_error" type="astring" value="core,signal" />
    </property_group>
    ...
  </service>
</service_bundle>

TL; DR

在检查了起始值之后, 如果该服务为“等待样式”,它将被限制为最大重新启动速度为1 /秒 ,直到不再以非CFG错误退出为止。 如果服务不是“等待样式”,它将进入维护模式

===============>>#3 票数:0

您必须创建一个服务清单。 这比没有复杂。 此示例清单并记录清单结构。

http://www.oracle.com/technetwork/server-storage/solaris/solaris-smf-manifest-wp-167902.pdf

===============>>#4 票数:0 已采纳

事实证明,我连续两次使用了技巧,以确保一切都正确终止。 自然,第二个退出的不是0 将其更改为在脚本末尾包含exit 0可以解决此问题。

  ask by translate from so

未解决问题?本站智能推荐: