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 / 问题 / 574621
Accepted
cherouvim
cherouvim
Asked: 2014-02-11 23:40:26 +0800 CST2014-02-11 23:40:26 +0800 CST 2014-02-11 23:40:26 +0800 CST

正好 90 秒重新启动 apache httpd

  • 772

我有一个 openSUSE 13.1 VM(主机运行 Virtualbox 4.2.18,也在 openSUSE 13.1 上)并且重新启动 httpd(Apache/2.4.6)总是需要 1.5 分钟:

foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    1m30.778s
user    0m0.004s
sys     0m0.000s

立即随后重新启动是正常的(非常快):

foobar:~ # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    0m1.023s
user    0m0.004s
sys     0m0.000s

5 分钟后,重新启动时间再次精确到 90 秒:

foobar:/tmp # time /etc/init.d/apache2 restart
redirecting to systemctl restart apache2.service

real    1m30.684s
user    0m0.000s
sys     0m0.000s

到目前为止我一直在寻找什么:

  • top虽然 apache 正在重新启动并没有显示很多(~0% 的使用率)。
  • netstat也没有显示出与外界的任何联系。

请注意,这是一个当前流量为 0 且内存和磁盘中有大量可用 GB 的 VM。

我还发现“重启”的“停止”部分需要 90 秒。

知道为什么会发生这种情况,或者我接下来应该在哪里看?

编辑:我发现当stop需要 90 秒时,我始终会得到以下内容/var/log/apache2/error_log:

[core:notice] [pid 3179] AH00052: child pid 3203 exit signal Segmentation fault (11)
virtual-machines
  • 3 3 个回答
  • 2909 Views

3 个回答

  • Voted
  1. Best Answer
    cherouvim
    2014-02-12T03:27:03+08:002014-02-12T03:27:03+08:00

    经过大量的试验和错误,我发现它是由php5正在加载的模块引起的/etc/sysconfig/apache2。删除它完全停止了这种行为。

    不过我需要这个php5模块,所以为了减轻这种延迟,我在中添加了以下内容etc/apache2/server-tuning.conf:

    GracefulShutdownTimeout 2
    

    现在,当停止 apache 时发生段错误时,它只会挂起 2 秒。

    • 1
  2. cssyphus
    2018-03-09T17:52:24+08:002018-03-09T17:52:24+08:00

    同样的事情发生在我身上,结果我将 /etc/hosts 文件保留为默认设置。

    在我更新了类似这样的主机文件后,延迟立即消失了:

    127.0.0.1   localhost
    ::1         localhost
    172.16.333.444  www.mysite.com mysite.com
    

    参考:

    服务多个域的单个 IP 服务器的 /etc/hosts 条目

    https://unix.stackexchange.com/questions/57439/slow-start-of-midnight-commander#answer-397879

    • 1
  3. CpnCrunch
    2021-07-18T10:54:00+08:002021-07-18T10:54:00+08:00

    使用优雅重启时,父 apache 进程停止接受新连接并永远等待所有子进程退出。所以基本上网络服务器已经死了(除了现有的连接),直到所有现有的孩子都退出。

    在短期 http/https 连接的正常用例中,在正常关闭或重新启动时这不是问题……通常需要一秒钟。问题是当你有一些东西会延迟孩子退出时,比如持久的 websocket 连接。在这种情况下,服务器将永远无法真正优雅地停止/重新启动......它将永远处于半死状态。

    您可以使用 GracefulShutdownTimeout 指令调整延迟:

    https://httpd.apache.org/docs/2.4/mod/mpm_common.html#gracefulshutdowntimeout

    默认情况下,它设置为 0(无限)。5 秒是一个更合理的值。

    请注意,当使用 systemctl 重新启动服务器时,默认情况下它只会等待最多 90 秒,然后才会强制它杀死子进程(而不是永远),这就是您看到这个 90 秒延迟的原因。这是在 /etc/systemd/system.conf 中设置的:

    #DefaultTimeoutStopSec=90s
    

    这也可以使用 TimeoutStopSec 选项为单个单元更改。

    • 1

相关问题

  • Xen - 无法创建域,因为“无法连接 vdb”

  • 我可以安全地为我的虚拟机使用什么范围的 MAC 地址?

  • 将 VMDK 转换为 VHD 后启动虚拟机时出现问题

  • 在 VM 中运行 Fedora 目录服务器

  • 如何提高 Hyper-V 性能

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