资讯专栏INFORMATION COLUMN

Oracle Listener连接风暴的分析

IT那活儿 / 725人阅读
Oracle Listener连接风暴的分析

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!





研究背景



如果客户应用程序存在大量短连接,这会导致数据库、服务器资源飙升,并且会导致监听无法响应更多请求。
本次在测试环境上通过脚本模拟批量连接数据库,复现因连接风暴导致连接数据库报错ORA-12514:  TNS:listener does not currently know of service requested in connect的场景并分析出导致连接风暴的应用服务名。





测试环境




1. 操作系统redhat7


2. 数据库版19.3.0


3. 架构:






测试过程



1. 查看当前数据库参数

2. 编写脚本模拟批量连接-并发执行

编写conn连接脚本:
$vi conn.sh
sqlplus sys/system@192.168.10.130:1521/orcl as sysdba
select * from v$version;
exit;

$vi conn1.sh
sqlplus sys/system@192.168.10.130:1521/orcl1 as sysdba
select * from v$version;
exit;

$vi conn2.sh
sqlplus sys/system@192.168.10.130:1521/orcl2 as sysdba
select * from v$version;
exit;
编写后台并发执行脚本(connect.sh先执行5分钟,然后再执行connect1.sh):
$vi connect.sh
for i in {1..200000}
do
for j in {1..40}
do
sh /home/oracle/conn.sh
done
done
EOF

$vi connect1.sh
for i in {1.. 200000}
do
for j in {1. .40}
do
sh /home/oracle/conn1.sh
done
done
EOF

$vi connect2.sh
for i in {1.. 200000}
do
for j in {1. .40}
do
sh /home/oracle/conn2.sh
done
done
EOF
3. 执行脚本并观察listener.log
执行脚本:
nohup sh connect.sh > /dev/null 2>&1&
nohup sh connect1.sh > /dev/null 2>&1&
nohup sh connect2.sh > /dev/null 2>&1&
观察listener.log。
出现大量ORA告警:
[oracle@orcl:/u01/app/oracle/diag/tnslsnr/orcl/listener/trace]$ tail -20f listener.log
接下来通过服务名登录数据库。
这时连接报错,已经复现出ORA-12514报错:
4. 通过监听日志分析是哪个服务名批量连接导致
将监听日志内容导入txt:
$grep 18-FEB-2022  listener.log | sed s/*.*SERVICE_NAME=/ /g;s/).*HOST=/ /g;s/).*$//g   | awk 
{if(NF==4){print "insert into t_tab
values(
"$1","$2","$3","$4");"}}   >
/home/oracle/insert.sql
建表并导入txt内容:
  • --a1 日期;

  • --a2 时间;

  • --a3 服务名;

  • --a4 客户端ip。

Create table t_tab( a1 varchar2(50),a2  varchar2(50),a3  varchar2(50),a4  varchar2(50));
@/home/oracle/insert.sql
按分钟进行统计个service发起的连接数:
select  a1,substr(a2,1,5),a3,count(1) from t_tab where a3 in (orcl,orcl1,orcl2) group by a1,substr(a2,1,5),a3 order by count(1) desc;
显然,orcl2这个service的连接异常导致本次问题的发生。





测试总结



本次模拟的重点在于通过3.4的方法将监听日志通过grep筛选数据并导入表,查询连接数据库报错的时间段去分析导致连接风暴的服务名称。
日常维护中通过tail -20f listener.log 观察,如持续性快速刷屏则可能已经出现连接风暴,因短连接持续性发起连接耗尽监听ip 1521端口资源,导致监听无法正常处理连接请求。超过每秒50次连接则需要关注。


本文作者:余家豪

本文来源:IT那活儿(上海新炬王翦团队)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129601.html

相关文章

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<