优雅重启与关闭
在生产环境中,优雅重启(graceful restart) 和 优雅关闭(graceful shutdown) 是保障服务连续性的关键操作。
Pingora 支持平滑地处理这些操作,以避免正在进行的请求被中断。
优雅重启(Graceful Restart)
当你更新了配置文件或二进制程序时,可以通过 HUP 信号 触发 Pingora 的优雅重启:
kill -HUP $(cat /var/run/pingora.pid)
`
该命令的行为包括:
- Pingora 接收到信号后,会启动一个新的工作进程;
- 新进程接管新连接;
- 旧进程继续处理正在进行的请求;
- 当旧进程完成所有请求后自动退出。
这种机制确保了在部署更新时不会导致连接中断或丢失。
优雅关闭(Graceful Shutdown)
如果需要下线或停止服务,也可以通过 TERM 信号 进行优雅关闭:
kill -TERM $(cat /var/run/pingora.pid)
Pingora 收到该信号后会:
- 停止接受新的连接;
- 等待现有连接完成;
- 在所有请求完成后安全退出。
这种方式适用于系统维护、版本切换或手动关闭服务场景。
超时关闭机制
在部分情况下(例如连接长时间未结束),可以设置超时时间,Pingora 会在超时后强制退出。 该参数通常在配置文件中设置,例如:
shutdown_timeout: 30s
表示等待最多 30 秒后强制终止进程。
示例:安全部署脚本
你可以编写一个简单的部署脚本来实现自动优雅重启:
#!/bin/bash
echo "Reloading Pingora gracefully..."
kill -HUP $(cat /var/run/pingora.pid)
sleep 5
systemctl status pingora
通过优雅重启与关闭机制,Pingora 能够在不中断服务的前提下完成配置更新与维护操作,大大提升了系统的稳定性与可用性。
相关内容
- 高级主题 (WIP) 探索 Pingora 的高级特性,包括内部机制、异步运行时、线程模型和自定义扩展。
- 后台服务 学习如何在 Pingora 中配置和运行后台服务,包括定时任务、异步执行和守护进程管理。
- 异步上下文中的阻塞代码 学习如何在 Pingora 异步运行时中处理阻塞代码,确保高并发请求环境下的性能和稳定性。
- 构建 HTTP 代理 学习如何使用 Pingora 构建 HTTP 代理服务,包括基本请求转发、上游配置和自定义过滤器。
- 配置文件 了解 Pingora 的配置文件结构、主要参数及其作用,学习如何为不同场景编写高效、清晰的配置。
- 连接池与复用 学习如何在 Pingora 中使用连接池和连接复用,提高代理服务的性能和资源利用率。