如何获得比Errno :: ECONNRESET更多的信息:现有连接被远程主机强制关闭。 - SSL_connect`

问题描述:

我有一些ruby测试代码碰到API端点并发送JSON。如何获得比Errno :: ECONNRESET更多的信息:现有连接被远程主机强制关闭。 - SSL_connect`

RestClient.post(url, json, :content_type => :json, :accept => :json) { |response, request, result| 
    @last_response = response 
} 

它偶尔会有时会发生此错误。

Errno::ECONNRESET: An existing connection was forcibly closed by the remote host. - SSL_connect 

我能得到关于发生了什么的更多信息?

通过设置RESTCLIENT_LOG=stdout环境变量,你会看到在终端RESTClient实现调试数据。或者,您可以用文件路径替换stdout以将其写入日志文件。

原因可能是无效的SSL证书,或者只是一个脆弱的API端点,在返回响应之前有时会断开连接。

对这类网络错误进行故障排除可能很具有挑战性。如果它保持不变,您可以尝试使用Wireshark或tcpdump捕获网络流量,这可能会对发生的事情有所了解。

一般ECONNRESET通常意味着远程服务器关闭,而你的客户仍然有排队的数据发送给它的连接。