也是前不久的事情了:
在应用服务器端发现服务器负载较大。
发现存在大量的如下脚本占用了cpu。
26617 fmsappl 25 0 55152 34m 8044 R 100 0.4 33436:34 f60webmx
5109 fmsappl 25 0 60172 39m 8044 R 100 0.5 174:51.08 f60webmx
4266 fmsappl 25 0 47088 25m 7708 R 100 0.3 70325:31 f60webmx
13700 fmsappl 25 0 54320 33m 8012 R 100 0.4 68691:14 f60webmx
13219 fmsappl 25 0 52072 31m 7932 R 100 0.4 41437:57 f60webmx
26685 fmsappl 25 0 53312 32m 7884 R 100 0.4 33081:35 f60webmx
19394 fmsappl 25 0 47796 26m 7736 R 100 0.3 32691:33 f60webmx
29866 fmsappl 25 0 47432 26m 7844 R 100 0.3 31117:05 f60webmx
25096 fmsappl 25 0 51340 30m 7936 R 100 0.4 21561:08 f60webmx
6872 fmsappl 25 0 51284 30m 7932 R 100 0.4 21195:07 f60webmx
3046 fmsappl 25 0 47276 26m 7704 R 100 0.3 11500:57 f60webmx
8004 fmsappl 25 0 47256 26m 7708 R 100 0.3 9682:46 f60webmx
4647 fmsappl 25 0 55576 34m 8004 R 100 0.4 21767:17 f60webmx
同时查询数据库,发现数据库基本没有活动的会话。那到底这些进程在执行啥动作呢。
疑问:
到底这些进程在干嘛呢?
在网上查到的语句为:
select a.spid,a.TERMINAL,a.PROGRAM,a.username,b.OSUSER,b.PROCESS,b.username,b.machine,
b.MODULE,b.action,b.CLIENT_INFO,b.logon_time,b.sid,b.serial#,c.SQL_TEXT
from v$process a,v$session b,v$sql c
where a.ADDR = b.PADDR
and b.sql_address = c.address(+)
and b.process = '66206' ----- process即为在应用服务器端的进程号。
对于查不到的进程
select b.OSUSER,b.PROCESS,b.username,b.machine,
b.MODULE,b.CLIENT_INFO,b.logon_time,b.sid,b.serial# from v$session b where process='25167'
如果还没有,可以直接杀掉进程。
查询该进程对应数据库会话的等待事件,可以发现等待事件为等待客户端返回信息的空闲等待事件。
实际上由此带来的理解既是通过v$session的process列既可以查到中间件服务器端对应的进程号。
疑问:
如果查到中间件端的进程,是否可以查到进程的线程号呢。同理,如果知道了线程号,是否有可能查到该线程到底是有哪个客户端发起的。
是否给某些操作确定最终操作的用户端提供了一定的线索???
Script. How To Identify The apps User Using The O/S PID For Forms Users In 11i [ID 185762.1]
--------------------------------------------------------------------------------
修改时间 15-DEC-2008 类型 SCRIPT 状态 PUBLISHED
"Checked for relevance on 16-DEC-2008"
PURPOSE
-------
This document is a how to find the Oracle Applications username for a Forms
session, when you know the O/S process id.
SCOPE & APPLICATION
---------------------
This note can help in case that your f60webmx process id very intense or high
CPU usage / memory and you want to identify who has created that session.
The script. output can also help to determine the apps user that used
Ctrl-Alt-Del to close an Oracle Applications 11i session and that session
hung on the Forms-tier/DB-tier.
-----疑问:根据结果如何发现这些进程是僵死的呢。
How To Identify The apps User Using The O/S PID For Forms Users In 11i
----------------------------------------------------------------------
You have to pass the UNIX process id to this script.
------------------------------------Cut here--------------------------
column "User Name" format a10
column "ClPID" format a8
select
d.user_name "User Name",
b.sid SID,b.serial# "Serial#", c.spid "srvPID", a.SPID "ClPID",
to_char(START_TIME,'DD-MON-YY HH:MM:SS') "STime"
from
fnd_logins a, v$session b, v$process c, fnd_user d
where
b.paddr = c.addr
and a.pid=c.pid
and a.spid = b.process
and d.user_id = a.user_id
and (d.user_name = 'USER_NAME' OR 1=1)
and a.SPID = &PID
-----应用服务器进程号查处是什么用户发起的请求。
但是查询民安的v$session视图,发现中间件连接过来的process均是1234.真是怪事情了哦。如何克服这一难题呢?
查询metalink后发现,对于jdbc thin连接方式,默认的process就为1234
要想改变这样的行为,就需要特殊处理。具体件后附的描述。
对于weblogic而言实际上很简单。只要在连接属性里强制增加这些关注的东西就可以了。
如下:
实质上,这样的设定应该做为以后中间件配置的建议方式。ip地址加上端口号作为process的值,而功能模块作为program的值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/288166/viewspace-705053/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/288166/viewspace-705053/