CPU比较高,发现大量的oracle 进程总是在new和died

[复制链接]
查看11 | 回复8 | 2010-1-4 13:39:56 | 显示全部楼层 |阅读模式
今天发现ORACLE主机的CPU比较高,登上主机查看下,发现大量的oracle 进程总是在new和died,
不知道是什么原因?
1、Oracle 版本
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - 64bi
PL/SQL Release 10.2.0.2.0 - Production
CORE10.2.0.2.0Production
TNS for HPUX: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production
2、抓的oracle的进程情况
oraclebl1
11479 oracle 37.9 1 0.3 8.0mb 11.8mbdied
oraclebl1
11551 oracle 35.4 1 0.088.3mb 88.3mbdied
oraclebl1
11461 oracle 30.7 1 0.3 1.3mb2.6mbdied
oraclebl1
11569 oracle 29.5 1 0.0 8.1mb 11.9mb new
oraclebl1
11559 oracle 27.4 150.088.6mb 88.6mb new
oraclebl1
11553 oracle 24.4 1 0.088.3mb 88.3mbdied
oraclebl1
11471 oracle 23.4 1 0.0 2.6mb3.3mbdied
oraclebl1
11507 oracle 23.2 1 0.3 8.0mb 11.8mbdied
oraclebl1
11565 oracle 23.2 1 0.3 2.5mb2.6mbdied
oraclebl1
11547 oracle 23.2 1 0.388.3mb 88.3mbdied
oraclebl1
11485 oracle 23.2 1 0.0 8.0mb 11.8mbdied
oraclebl1
11541 oracle 23.0 1 0.388.3mb 88.3mbdied
oraclebl1
11545 oracle 23.0 1 0.388.3mb 88.3mbdied
oraclebl1
11584 oracle 20.2 1 0.0 8.0mb 11.8mb new
oraclebl1
11458 oracle 18.5 1 0.3 8.0mb 11.8mbdied
oraclebl1
11430 oracle 16.2 1 0.0 2.6mb2.6mbdied
oraclebl1
10787 oracle 15.8 155.393.2mb 93.7mb STRMS
oraclebl1
11452 oracle 11.8 1 0.0 1.5mb2.6mbdied

3、通过下面语句,想抓下这些进程的相关信息,可惜总是抓不到
SELECT b.sid,a.pid, a.spid, a.username, b.machine, b.user#, b.username
FROM v$process a
JOIN v$session b
ON a.addr = b.paddr
WHERE a.spid = (&pid);
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
OS 的版本是:HP-UX 11.23
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
new和died 不能说明什么,你用glance看下那些消耗cpu的进程是那些,用你的那个sql抓下能抓到不,做一个ash,看下能抓到东西不,还是什么等待等。
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
看看alert_sid.log
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
做了个实验:
1) 写了一个Shell脚本
$ cat sql.ksh
#!/usr/bin/ksh
main()
{
sqlplus test/123@tst3 <<EOF
select count(1) from dba_users;
exit;
EOF
}
while(true)
do
main
sleep 1
done
2) 执行5个并行
3) glance 观察
4) 发现有5个oracle进程总是new 和 died。
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
说明
1)我们生产环境下的应用程序,在使用短连接;
2)这样总是创建session然后断开session,非常消耗资源
3)是导致CPU过高的一个重要原因
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
通过查看listener.log文件,找到相应的应用程序,进行修改。
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
程序修改后,重新用glance观察数据库服务器,CPU下降同时没有在出现new and died 相关进程。
回复

使用道具 举报

千问 | 2010-1-4 13:39:56 | 显示全部楼层
最后做个总结:
1) 程序在使用数据库时,最好使用连接池,建立长连接
2) 同时考虑好连接池各个属性值的设置,如初始连接数等
to Kevene :
那些session的SQL执行很快,就是一些update等操作。 谢谢你的思路。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行