首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Solaris SMF如何确定要维护的内容还是要重新启动的内容?

Solaris SMF如何确定要维护的内容还是要重新启动的内容?
EN

Stack Overflow用户
提问于 2013-04-18 05:40:09
回答 4查看 3.6K关注 0票数 1

我有一个我写的守护进程正在由SMF执行。问题是当发生错误时,我有失败的代码,然后它将需要从头开始。现在它正在发送sys.exit(0) (Python),但是SMF一直在维护模式下抛出它。

我使用SMF的经验足够多,我知道它有时会自动重启某些服务(并让其他服务失败,让您像这样处理它们)。如何将此进程归类为需要自动重新启动的进程?它是SMF设置,还是失败的方法,还是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-19 03:30:00

事实证明,我连续执行了两次pkill,以确保所有操作都正确终止。第二个原因自然是退出了0之外的其他东西。将其更改为在脚本末尾包含一个exit 0解决了该问题。

票数 0
EN

Stack Overflow用户

发布于 2015-12-18 04:45:48

手册页

Solaris使用startd/critical_failure_countstartd/critical_failure_period的组合,如svc.startd manpage中所述

启动/严重故障计数

开始时间/关键故障周期

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

源代码中的缺省值

默认值可以在源代码中找到,即值depends on whether the service is "wait style"

代码语言:javascript
运行
复制
if (instance_is_wait_style(inst))
    critical_failure_period = RINST_WT_SVC_FAILURE_RATE_NS;
else
    critical_failure_period = RINST_FAILURE_RATE_NS;

缺省值为5 failures/10 minutes or 5 failures/second

代码语言:javascript
运行
复制
#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 as properties中设置这些变量

代码语言:javascript
运行
复制
<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

在检查Startd值之后,如果服务是"wait style",它将是 ,直到它不再以非cfg错误退出。如果服务不是"wait style“,它将是 .

票数 2
EN

Stack Overflow用户

发布于 2013-04-19 02:22:14

假设一个正常的服务清单,我会怀疑您正在放弃维护,因为SMF正在“太快”地重新启动您(这有点随意定义)。如果是这样,svcs -xv应该会告诉你。如果是这样,SMF会重新启动你,然后你又快速退出,它决定放弃,直到问题解决(并且你已经手动svcadm clear了它。

我想知道退出0(并表示成功)是否会导致进一步的混乱,但似乎不会。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16070734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档