客户端线程占用过多引起等待,从而出现请求缓慢的情况

简介: 客户端线程占用过多引起等待,从而出现请求缓慢的情况

一、故障具体现象

上午8点49分到9点55分钉钉版生产环境出现系统无法登录的情况

二、故障分析过程

查看会话管理,发现存在大量异常会话

image.png



查看异常会话所在服务器的资源使用情况,并未发现明显异常

image.png

image.png

image.png


查看8点30分到8点50分之间的慢sql执行情况,未发现有明显的执行时间过长的慢sql

image.png


查看ice线程使用情况发现在8点30分到8点50分之间expense服务存在较多线程池使用量超过告警水位的情况

image.png


根据ice线程的告警信息,得出在异常发生之前出现了大量ice接口调用,在一段时间内这些调用没有返回,导致ice线程无法及时释放,导致出现请求缓慢的情况


三、故障原因

经过以上分析,本次故障很可能是短时间内expense服务出现了大量ice接口调用,ice客户端线程占用过多引起等待,从而出现请求缓慢的情况


四、解决方案

进行数据库主备切换,重新部署expense服务,增加expense服务ice最大线程数设置,增加expense服务实例数



相关文章
|
1月前
|
安全 Java API
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
51 6
|
7月前
|
Java
Java Socket编程与多线程:提升客户端-服务器通信的并发性能
【6月更文挑战第21天】Java网络编程中,Socket结合多线程提升并发性能,服务器对每个客户端连接启动新线程处理,如示例所示,实现每个客户端的独立操作。多线程利用多核处理器能力,避免串行等待,提升响应速度。防止死锁需减少共享资源,统一锁定顺序,使用超时和重试策略。使用synchronized、ReentrantLock等维持数据一致性。多线程带来性能提升的同时,也伴随复杂性和挑战。
124 0
|
5月前
|
Java
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
Java使用FileInputStream&&FileOutputStream模拟客户端向服务器端上传文件(单线程)
103 1
|
5月前
|
API Windows
揭秘网络通信的魔法:Win32多线程技术如何让服务器化身超级英雄,同时与成千上万客户端对话!
【8月更文挑战第16天】在网络编程中,客户/服务器模型让客户端向服务器发送请求并接收响应。Win32 API支持在Windows上构建此类应用。首先要初始化网络环境并通过`socket`函数创建套接字。服务器需绑定地址和端口,使用`bind`和`listen`函数准备接收连接。对每个客户端调用`accept`函数并在新线程中处理。客户端则通过`connect`建立连接,双方可通过`send`和`recv`交换数据。多线程提升服务器处理能力,确保高效响应。
60 6
|
6月前
|
云计算
云计算问题之线程请求的栈深度大于虚拟机所允许的深度如何解决
云计算问题之线程请求的栈深度大于虚拟机所允许的深度如何解决
36 1
|
6月前
|
Java C# Python
线程等待(Thread Sleep)
线程等待(Thread Sleep)
|
6月前
|
测试技术
三种等待方式(‌线程等待、‌隐式等待、‌显式等待)
三种等待方式(‌线程等待、‌隐式等待、‌显式等待)
304 4
|
7月前
|
安全 Java
使用notifyAll唤醒所有等待线程
使用notifyAll唤醒所有等待线程
|
6月前
|
安全 Java
使用notifyAll唤醒所有等待线程
使用notifyAll唤醒所有等待线程
|
6月前
|
存储 安全 Java
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
Java面试题:假设你正在开发一个Java后端服务,该服务需要处理高并发的用户请求,并且对内存使用效率有严格的要求,在多线程环境下,如何确保共享资源的线程安全?
87 0

相关实验场景

更多