大黄瓜de冬天 2022-11-23 17:41 采纳率: 88.9%
浏览 8
已结题

Unirest操作大批量报错Socket closed

问题遇到的现象和发生背景

跑定时任务时发送大批量数据给第三方时,到一定数据量会出现:I/O exception (java.net.SocketException) caught when processing request to {}->http://ip地址 Socket closed

用代码块功能插入代码,请勿粘贴截图
Unirest.setTimeouts(0, 0);
        HttpResponse<String> response = Unirest.post(url)
                .header("Datetime", dateStr)
                .header("OperatorId", operatorId)
                .header("Token", token)
                .header("Signature", sign)
                .header("User-Agent", "apifox/1.0.0 (https://www.apifox.cn)")
                .header("Content-Type", "application/json")
                .body(body)
                .asString();
        return response.getBody();
运行结果及报错内容

1766832 [myScheduler-29] INFO org.apache.http.impl.execchain.RetryExec - I/O exception (java.net.SocketException) caught when processing request to {}->http://ip地址: Socket closed
1766832 [myScheduler-29] INFO org.apache.http.impl.execchain.RetryExec - Retrying request to {}->http://ip地址
com.mashape.unirest.http.exceptions.UnirestException: java.net.SocketException: Socket closed

我的解答思路和尝试过的方法

最开始是定时任务一次性查出大批量数据(24000条),以1200条一组多线程去请求上报数据。结果直接崩了,缓了10多分钟才正常,且数据大部分没报上去
优化后:定时任务执行完毕后等待1分钟再次执行,一次查240条,在跑到1200条会出现运行结果及报错内容的内容
看到报错信息后,socket连接关闭,怀疑是过载,所以减少一次数据量。
再次优化:定时任务执行完毕后等待10秒再次执行,一次查12条,跑到1500条出现行结果及报错内容的内容

我想要达到的结果

怎么样让这个Unirest操作大批量不报错,能正常报送数据。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月1日
    • 创建了问题 11月23日

    悬赏问题

    • ¥15 Vue3 大型图片数据拖动排序
    • ¥15 划分vlan后不通了
    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制
    • ¥15 merge函数占用内存过大
    • ¥15 使用EMD去噪处理RML2016数据集时候的原理
    • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大