我们有一个长时间运行的进程(Rake 任务),使用 Faraday 和 net_http_persistent 适配器向远程主机发出 HTTPS 请求。在运行几个小时到几天后,它会停止发出请求。
该过程还使用 Excon 发出一些请求(向我们的异常报告服务报告异常),并且两个 HTTP 客户端都记录了相同的错误,但措辞略有不同。这两个错误是:
Faraday::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=error: 证书验证失败
Excon::Error::Certificate: SSL_connect SYSCALL returned=5 errno=0 state=error: 证书验证失败 (OpenSSL::SSL::SSLError) 无法验证证书。这可能是远程主机或 Excon 的问题。Excon 捆绑了证书,但可以自定义:
我们的异常报告服务没有收到任何这些异常。所以我们只在日志中发现了这些错误。