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

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日

    悬赏问题

    • ¥20 白日门传奇少一个启动区服和启动服务器的快捷键,东西都是全的 , 他们说套一个出来就行了 但我就是弄不好,谁看看,
    • ¥100 如何用js写一个游戏云存档
    • ¥15 ansys fluent计算闪退
    • ¥15 有关wireshark抓包的问题
    • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
    • ¥15 向数据表用newid方式插入GUID问题
    • ¥15 multisim电路设计
    • ¥20 用keil,写代码解决两个问题,用库函数
    • ¥50 ID中开关量采样信号通道、以及程序流程的设计
    • ¥15 U-Mamba/nnunetv2固定随机数种子