开发者社区> 问答> 正文

edas应用中的tomcat的http线程数,跑压测时全部被打满后,出现了大量的dubbo引起的?

问题1:edas应用中的tomcat的http线程数,跑压测时全部被打满后,出现了大量的dubbo引起的http线程被blocked,大佬们谁了解这一块?0be5356642d05dc39df1b9e5731839cb.png 问题2:tomcat线程数耗尽,应该是io阻塞导致的,因为dubbo调用后,有openfeign的请求,请求到响应之间的时间都比较长,比如20s,但是这个会阻塞openfeign之前的dubbo请求,对吗

展开
收起
真的很搞笑 2023-06-06 18:49:03 143 0
3 条回答
写回答
取消 提交回答
  • 针对问题1:

    在EDAS应用中的Tomcat中,如果HTTP线程数被打满,而且出现了大量的Dubbo引起的HTTP线程被阻塞的情况,可能是因为Dubbo请求生产者的线程池大小过小或者任务处理时间过长导致的。此时可以考虑调整Dubbo生产者的线程池大小,或者优化Dubbo服务的实现逻辑,减少处理时间。

    具体的解决方案包括:

    1. 调整Dubbo生产者线程池大小:如果Dubbo生产者线程池的大小不足以满足消费者的请求,那么HTTP线程就会被阻塞等待Dubbo生产者线程执行完毕。可以通过调整dubbo线程池大小,确保足够的线程池大小以处理请求。

    2. 优化Dubbo服务的实现逻辑:如果Dubbo服务的实现逻辑比较耗时,可以考虑优化Dubbo服务的代码,减少处理时间,或者使用异步调用方式,将耗时的操作放在异步线程中执行,主线程尽量保持快速响应,避免影响HTTP线程的处理。

    针对问题2:

    如果在Tomcat中出现线程数耗尽的情况,通常原因是I/O阻塞导致的。在Dubbo调用后,OpenFeign请求的响应时间较长,可能会阻塞之前的Dubbo请求。解决方案:

    1. 首先可以优化服务实现逻辑,减少I/O操作的耗时,例如使用缓存来减少数据库访问等。

    2. 其次,也可以通过将OpenFeign请求设置为异步请求,避免阻塞同步请求对Tomcat线程池的占用。

    另外,为了保证应用的稳定性和性能,建议在开发和测试阶段进行压力测试,并监控应用在不同负载下的性能表现,及时识别和解决问题。

    2023-06-07 10:42:24
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    根据您提供的信息,这是一段 Java 程序的线程堆栈信息,其中包含了多个线程的执行状态和调用关系。由于缺乏上下文信息,我无法准确判断具体的问题所在,以下是一些可能的解释:

    在等待锁时被阻塞:可以看到某些线程状态为 BLOCKED,正在等待某个对象的锁,可能是由于多个线程同时竞争同一个锁导致的阻塞。需要检查代码中是否存在多个线程同时竞争同一个锁的情况。

    依赖项缺失:在堆栈信息中可以看到使用了 Dubbo、Pinpoint 等框架,可能是由于某些依赖项缺失导致的问题。需要检查代码的依赖项是否正确配置,并且是否存在版本冲突的情况。

    网络或异步调用超时:可以看到某些线程状态为 WAITING 或者 TIMED_WAITING,可能是由于网络或异步调用超时导致的阻塞。需要检查代码中是否存在网络或异步调用超时的情况,并增加相应的超时处理逻辑。

    2023-06-06 22:15:42
    赞同 展开评论 打赏
  • 回答1:这个一般是你们的业务异常。用arthas看一下线程都堵在哪儿了,看看是不是超时时间设置不合理、发生full gc、IO阻塞或者其他问题导致耗尽线程数,再根据业务场景进行调优 回答2:嗯...池子里的没处理完,新的请求来了处理不了,就blocked了 稳定复现吗?看代码defaultAppModel为null才出现这个问题,从代码看,像是某种不清楚的原因导致defaultAppModel为null,你可以尝试社区问下是否有相同案例。https://github.com/apache/dubbo/blob/891277912add64efde92121c6a5428332bb70657/dubbo-common/src/main/java/org/apache/dubbo/rpc/model/FrameworkModel.javaf4888d207c8d8a0aca0b1a28456c33a3.png ,此回答整理自钉群“EDAS SpringCloud & Dubbo交流二群”

    2023-06-06 19:05:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
CDN助力企业网站进入HTTPS时代 立即下载
基于阿里企业级分布式应用服务的敏捷服务开发与架构实践 立即下载
EDAS—轻松搞定分布式应用服务 立即下载