高并发问题排查过程

在测试部的压测下,重现了高并发导致的paygate假死问题。开发和运维人员通过检查内存溢出、数据库死锁情况,发现数据库存在死锁现象,并提供了相应的解决步骤,包括查找并结束死锁进程,以及分析jstack输出以定位可能的DBCP连接池问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、测试部配合压测,重现高并发问题

测试部使用apache jmeter压测app前置登录接口(app前置会请求paygate接口)和paygate异步通知接口。压测2个小时,复现20171210号paygate假死的现象。

二、开发人员和运维人员根据复现的现象,排查原因。

(1)查看catalina.out 中是否有内存溢出的问题

(2)查看数据库是否被锁死

用dba用户执行以下语句

select username,lockwait,status,machine,program from v$session where sid in
(select session_id from v$locked_object)

如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:
Username:死锁语句所用的数据库用户;
Lockwait:死锁的状态,如果有内容表示被死锁。
Status: 状态,active表示被死锁
Machine: 死锁语句所在的机器。
Program: 产生死锁的语句主要来自哪个应用程序。
2)用dba用户执行以下语句,可以查看到被死锁的语句。
 select  sql_text from v$sql where hash_value in 
(select sql_hash_value from v$session where sid in
(select session_id from v$locked_object))

死锁的解决方法
     一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可
能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。
 经常在Oracle的使用过程中碰到这个问题,所以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值