AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 512304
Accepted
sorin
sorin
Asked: 2013-06-01 06:19:05 +0800 CST2013-06-01 06:19:05 +0800 CST 2013-06-01 06:19:05 +0800 CST

守护程序启动脚本允许的最长启动时间是多少?

  • 772

守护程序启动脚本允许的最长启动时间是多少?

我确实有一个 tomcat 服务器需要很长时间才能启动,我可以在启动脚本中包含逻辑来检查服务是否成功启动。

尽管如此,我仍然担心守护程序启动可能会出现无限循环,如果将其配置为在引导时运行,它甚至可能会影响系统的启动。

不过,我确实想返回正确的退出消息(成功/失败)。

我可以实现一些超时逻辑,但我不知道对于守护程序脚本来说什么是可接受或不可接受的启动时间。

此外,在此服务仍在初始化时停止其他服务的初始化也没有太大意义。

service
  • 2 2 个回答
  • 163 Views

2 个回答

  • Voted
  1. Best Answer
    mdpc
    2013-06-01T08:30:49+08:002013-06-01T08:30:49+08:00

    系统启动脚本没有“最大允许启动时间”。然而,对于长时间运行的脚本,启动脚本通常会将需要很长时间的程序分拆为后台进程甚至“at”进程。因此,这可以防止缓慢运行的进程在系统“准备好”运行之前花费很长时间。

    • 1
  2. Soham Chakraborty
    2013-06-01T09:15:49+08:002013-06-01T09:15:49+08:00

    如前所述,守护进程没有最大或可配置的启动时间。如果您认为该守护进程导致其他守护进程启动,您可以在最后更改其启动顺序。

    要调试问题,我现在可以想到三种方法。

    1) 显而易见的步骤是为应用程序启用调试日志。我主要使用 RHEL,/etc/sysconfig/<daemon-name>可以设置日志级别。

    2)当你手动启动守护进程时,用strace启动它。

    strace -ffttTo /tmp/daemon.out /etc/init.d/daemon start
    

    现在在 daemon.out 文件中,观察在每个系统调用结束时打印的时间。以微秒为单位。找出消耗大部分时间的调用。

    当你发现这一点时,再次启动守护进程,这次使用 ltrace。现在您知道了有问题的系统调用,找出它卡在哪个库中。

    3)写一个systemtap脚本。除非用户有一些使用 stap 编写/调试的经验,否则这不是那么容易。

    probe syscall.*
    {
    ( (pid) == target() )
    printf("%s\n",name)
    }
    

    这将显示目标 pid 将抛出的所有系统调用。

    注意 - 首先不要去 stap。我刚才提到它是因为它是一个很棒的内核调试工具,我还没有在网站上看到它的参考资料(或者可能被忽略了)。您需要安装 kernel-debuginfo、kernel-debuginfo-common、kernel-devel、systemtap 包。然后运行脚本作为

    stap <script_name.stp> -x pid
    

    我们可以进一步检测有问题的系统调用。

    http://sourceware.org/systemtap/documentation.html

    • 1

相关问题

  • 计划终止端口连接

  • 如何提供可搜索的 IRC 日志?

  • GlassFish 服务在控制台注销时停止

  • “工作站”和“服务器”服务不断停止

  • 如何删除或卸载孤立服务?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve