处理 Panic

在 Pingora 中,与特定请求相关的 panic 不会影响其他正在进行的请求,也不会影响服务器处理其他请求的能力。发生 panic 的请求会释放(关闭)所使用的套接字。这些 panic 会由 Tokio 运行时捕获并忽略。

监控 Panic

为了监控 panic,Pingora 服务器内置了对 Sentry 的集成。以下代码展示了如何启用 Sentry 支持:

  1. my_server.sentry = Some(
  2. sentry::ClientOptions {
  3. dsn: "SENTRY_DSN".into_dsn().unwrap(),
  4. ..Default::default()
  5. }
  6. );

Panic 的使用建议

尽管在 Pingora 中 panic 并非致命问题,但它仍然不是处理诸如网络超时等故障的首选方法。Panic 应仅用于处理意外的逻辑错误。将其作为最后的防线,有助于保持代码的健壮性和清晰性,同时最大限度减少对正常操作的干扰。