我想知道,如果重新配置 apache2 服务器,然后发出 /etc/init.d/apache2 reload 命令,外部客户端会在相当繁忙的站点上看到什么效果?
我知道从理论上来说,当前的操作应该不会出现问题,但这对网站的总体影响是什么?
为了这个例子,我们假设我想每分钟执行一次重新加载。这会大大降低网站性能吗?
谢谢
答案1
你好,
我怀疑每分钟重新加载一次会影响你的网站性能,但这在很大程度上取决于:
- 您的配置:您使用的是哪种 MPM?prefork 还是 worker?您指定的子进程数是多少?对于 worker,每个子进程的最大线程数是多少。这将影响进程因正常关闭而必须停留多长时间。
- 人们在你的网站上做什么:他们是否正在下载大文件?这自然会导致会话时间变长,从而导致进程退出和重新启动的时间变长
- 您正在记录的内容:这和上一点有点相关,但如果您正在记录提供的字节数,那么只有在下载会话完成后才会进行日志条目。
- 您是否正在使用 Apache 2.2.12 或更高版本:然后,您就可以指定在进程被终止并重新启动之前“优雅”运行的最大时间。
所有这些都会影响您对重新加载的响应时间。我认为每分钟重新加载一次有点过分,只会降低您的网站性能。
我建议,当我们推出新的配置时,将服务器 HUP 作为流程的一部分。
在重大新闻事件期间,我们曾看到过最高流量水平达到每秒 380 万次点击,并且在一个多小时内达到每秒 700 万次点击,而这种配置更新方法不会影响我们的服务器。
高血压
干杯,
答案2
使用/etc/init.d/apache2 reload
相当于优雅重启。正如你所说,当前连接会在子进程死亡之前一直保持到最后。子进程死亡后,它们会被具有新配置的新子进程取代(请参阅 apache 文档了解如何重新启动)。
实际上,它可能会稍微慢一点,因为它需要一些资源来重新启动子进程、重新加载配置以及关闭和打开日志文件,但客户端几乎不会注意到这一点。
至于您的示例,它可能取决于您的服务器上有多少可用资源以及日志文件和配置的大小,但在我看来,它不会影响网站性能。