码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • java 使用curl 超时无返回结果问题 有请求 无响应 卡死问题


    场景:

    tomcat服务 请求B服务的接口

    B服务接口处理业务需要花费20分钟左右的时间 

    但看到的情况是 B服务接口 接收到请求  处理完数据 并返回了

    tomcat服务并没有正常的显示 接口返回的结果,导致后面的业务没正常处理。

    通过log日志定位 相关代码位置 发现是在curl 请求B服务位置时  不能正常打印结果日志 无论怎么调整都不行 

    但如果B服务处理时间是10分钟左右的 可以正常返回结果

    但是如果用curl直接在tomcat服务器上 请求B服务 处理20分钟的 能正常显示结果在控制台上

    因此考虑是 java的curl机制问题  最后在csdn上找了下 定位jvm的报错

    使用jstack -l java进程id 找到下面的报错点


    "pool-6-thread-1" #93 prio=5 os_prio=0 tid=0x00007f50a01d6800 nid=0x12d22 in Object.wait() [0x00007f50ed0f0000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            at java.lang.Object.wait(Object.java:502)
            at java.lang.UNIXProcess.waitFor(UNIXProcess.java:395)

            - locked <0x00000006886bea30> (a java.lang.UNIXProcess)
            at com.xxxx.framework.utils.HttpConn.execCurl(HttpConn.java:271)
            at com.xxxx.framework.utils.HttpConn.postJson(HttpConn.java:250)
            at DeviceCollectService.deviceCollectOrgin(DeviceCollectService.java:197)
            at DeviceCollectService.lambda$null$5(DeviceCollectService.java:140)
            at DeviceCollectServiceLambda$961/1537756698.accept(UnknownSource)atjava.util.Iterator.forEachRemaining(Iterator.java:116)atjava.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)atjava.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)atDeviceCollectService.lambda$deviceCollect$6(DeviceCollectService.java:138)atDeviceCollectServiceLambda$960/957562996.accept(Unknown Source)
            at java.util.HashMap.forEach(HashMap.java:1289)
            at .DeviceCollectService.deviceCollect(DeviceCollectService.java:135)
            at .DeviceCollectService.access$000(DeviceCollectService.java:38)
            at .DeviceCollectService$1.call(DeviceCollectService.java:83)
            at DeviceCollectService$1.call(DeviceCollectService.java:79)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

    通过

    jstack -l pid 查到的日志 卡死问题

    在tomcat的日志并没有任意的异常

    注意:UNIXProcess.waitFor(UNIXProcess.java:395)

    这个类并没有在jdk1.8的包中找到 有些说是反射出来的

    参考以下文章

    相关文章:

    记一次JAVA使用ProcessBuilder执行Shell任务卡死问题分析_scx_white的博客-CSDN博客_java processbuilder 卡死

    java 调用 RunTime.getRuntime().exec 报错at java.lang.UNIXProcess.exitValue_穷小伙不穷志的博客-CSDN博客_unixprocess

    java – 运行时 Runtime.getRuntime().exec 挂起 一直加载中 执行阻塞问题,需获取执行结果_ai_lian_shuo的博客-CSDN博客_java runtime.getruntime.exec

    最后的做法是:

    把错误的流读出来  然后再去读输入的流

    要不然错误的流 因为等待的时长过长  pie管道只有4K长度会阻塞 导致后面的流无法正常读取

    这个问题其实从上线2021年6月开始就存在 一直没定位到

    到昨晚开始定位 有了之前的经验的之后 很快定位到相关的代码块 再加上大佬们的指点 才得以解决 

  • 相关阅读:
    由[哈希/散列]模拟实现[unordered_map/unordered_set] (手撕迭代器)
    Docker将本地的镜像上传到私有仓库
    springboot基于微信小程序的驾校报名小程序+java+uinapp+Mysql+计算机毕业设计
    React(2)-函数组件
    怎么把视频转换成音频
    C语言:二维数组封装成函数(全局变量)
    windows 安装多个独立微信,设置不同快捷键
    promise最初理解
    排序算法-计数排序
    YOLOv5算法改进(22)— 更换主干网络MobileNetv3 + 添加CA注意力机制
  • 原文地址:https://blog.csdn.net/wdd668/article/details/126889566
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号