调用他人平台的http接口,有时会报socket hang up,求教
发布于 7 年前 作者 wlpeter 5959 次浏览 来自 问答

如题,本人使用的是axios这个库,request库也有尝试,也会报该错误(socket hang up);

该错误经常出现在调用高峰期;

本人也做了相关调查,这个问题貌似主要是网络问题和他人服务器问题,不太确定到底是什么问题?

我服务器是阿里云的,而且我没有启用多核,因为是使用消息队列,所以请求也是单条单条发送的,调用高峰期频率比较快,就会出现该问题,求教

代码如下:

const axios = require('axios');
const qs = require('querystring');
const http = require('http');

/***省略***/

let result = yield axios.post(`/${url}`, qs.stringify({ json: json }), {
      timeout: 20000,
      httpAgent: new http.Agent({ keepAlive: true }),
      baseURL: api,
	  headers: {   
        'Content-Type':'application/x-www-form-urlencoded',
        'Content-Length': qs.stringify({ json: json}).length  
      }
});
3 回复

问题已找到,他人平台的服务器超负荷了

@wlpeter 如果 http.Agent 没有收到任何服务端的数据体而服务端又直接断开了 tcp 连接 ,那么会报出 socket hang up 错误

回到顶部