reload是平滑重载,通过USR1信号使worker完成当前请求后加载新配置,不中断连接;restart是硬重启,强制终止所有进程并重新初始化,会导致连接RST和请求失败。
reload 是平滑重载,不中断连接
apache 的 reload 实际调用的是 graceful 机制(前提是 systemd service 文件中 execreload 正确指向 apachectl graceful 或等效信号)。主进程保持运行,向子进程发送 usr1 信号,让正在处理请求的 worker 继续完成当前任务,同时启动新 worker 加载新配置。整个过程客户端无感知,tcp 连接不断开,http 请求不会返回 502/503,websocket 和长轮询也能持续。
适用场景包括:
- 修改虚拟主机配置(
DocumentRoot、ServerAlias) - 调整目录权限或重写规则(
AllowOverride、RewriteRule) - 更新 SSL 证书文件路径或日志格式
- 启用/禁用已加载模块(如
mod_rewrite、mod_headers)
restart 是硬重启,会强制中断服务
restart 等价于先 stop 再 start:主进程收到 SIGTERM 后立即终止所有子进程,释放监听端口和文件描述符,然后全新启动。此时所有活跃连接被 RST 重置,正在进行的上传、下载、事务型请求可能失败,用户看到连接被拒绝或超时。
必须使用 restart 的情况有:
- 修改了全局监听参数(
Listen、ServerName、Port) - 变更运行身份(
User/Group)或 PID 文件路径 - 启用了编译时未包含的新模块(如首次启用
mod_ssl) - 升级 Apache 二进制文件或核心依赖库
底层信号与资源行为差异明显
reload 依赖 USR1 信号触发优雅切换,进程 PID 不变,内存状态部分保留,网络套接字复用,文件句柄持续有效;restart 则通过 SIGTERM → SIGKILL 彻底清理,PID 必然变化,所有资源从零初始化,包括监听队列、共享内存段、模块运行时上下文。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
注意:如果 systemctl reload httpd 表现为硬重启,说明 service 单元里 ExecReload= 被错误设为 apachectl restart 或 httpd -k restart,需检查并修正为 apachectl graceful。
业务影响直接决定发布策略
日常配置微调(比如加一个跳转规则、换一张证书)用 reload,可随时执行,不影响用户体验;涉及架构变动(如改监听端口、切 MPM 模式、升级版本)必须安排维护窗口,用 restart,并配合负载均衡器摘流与健康检查回滚机制。
不确定是否支持热更?先 apachectl configtest 校验语法,再尝试 reload;若失败或服务无响应,再 fallback 到 restart。










