ERP服务器PRIV工作模式分析2004-09-26环境介绍:HPN4000小型机(主机)主机名:aes04p61内存:4GCPU:550Mhz4颗应用软件:SAP46C中央应用服务,数据库ORACLE8.1.7.2.0,HPOMNI2备份软件接纳在线用户数:50人HPN4000小型机(副机)主机名:aes04p62内存:4GCPU:550Mhz4颗应用软件:SAP46C一般应用服务接纳在线用户数:150人上图表示一次用户的操作的R/3模型.第一层:用户PC和PC上安装的SAP客户端第二层:服务器上安装的SAP服务器程序,根据用户的不同操作,SAP服务提供各种对应的服务进程.如:对应用户前台操作的D服务进程,对应用户更新数据操作的V服务进程,对应用户后台大数据操作的B服务进程等…而一般的用户操作都同D服务进程相关.第三层:ORACLE数据库.下面的问题将集中在第一层和第二层讨论.问题提出:可以看到在系统使用高峰期,太多的用户进入PRIV独占工作模式.何为PRIV独占工作模式?首先看看正常工作模式:1.一用户使用客户端登陆服务器.2.服务器D服务进程1接纳该用户,分配ROLL内存空间存储用户授权相关数据.分配EXTEND内存空间存储用户工作时使用的相关数据.接纳用户,分配内存的一瞬间,D服务进程1处于”忙”状态.(这时该用户独占D服务进程1)3.分配内存完毕,D服务进程1处于”空闲”状态.(这时D服务进程1可以接纳其它用户)在登陆后的事务的使用,一个D服务进程,也可以给多个用户提供服务.在正常的情况下是可以接纳5-10个用户.SAP服务器的内存使用:用户连接服务器,服务器给该用户分配ROLL内存空间存储用户授权相关数据.服务器给该用户分配EXTEND内存空间存储用户工作时使用的相关数据.由于服务器的内存是有限的,给用户分配的空间也有一个限额.当该用户工作,在数据库中抽取的数据比较大时.分配的EXTEND内存空间可能不够使用.这时候会在用户PC机上的内存中开一块空间,叫”堆”内存.并使用它.服务器和客户端的内存被连接起来使用.结果一个D服务进程只能一直连接该客户端….而不能象正常的那样自由切换..因为heap”堆”内存是用户PC上的一块,不由D服务进程所完全控制.PRIV模式的本质:用户工作,在数据库中抽取的数据比较大时,因为服务器上可分给他的EXTEND扩展内存空间不够,该用户PC机上的内存也被用来使用,负责接纳它的D服务进程一直对它提供服务,而其它用户只有找另外空闲的D服务进程使用.当PRIV模式大量出现时,服务器所能接待用户的能力成倍地减小.如果没有空闲的D服务进程,使用客户端的用户只能暂停等待.等待有空闲的D服务进程出现.PRIV独占工作模式有什么影响?现在我们的:61主机的D服务进程10个,接纳在线用户50人.62副机的D服务进程35个,接纳在线用户150人.按照上面的负载平衡配置,运行数据库的61主机所使用的SWAP(磁盘虚拟内存)相对较少.有利于提升整个系统的性能,详情请看BASIS技术文档中基于去减少SWAP区使用而提高性能的调整策略一文.在系统使用高峰时期(每月盘存前后),3个G的EXTEND内存快速被用完…很多D服务进程进入PRIV独占工作模式…服务器接纳的用户数减少…..没有占到D服务进程的用户出现停滞暂停状态.62服务器的D服务进程由原来的10个增加到35个.从服务器内存配置来看,已经无法再增加D服务进程个数,因为D服务进程本来也要占用内存.如何解决?1.增加服务器内存后,扩大系统EXTEND内存区.2.APAB人员开发报表时注意内表的使用.3.关键用户给用户开权限时注意,相同数据的报表,只由一个用户在系统中抽取,在系统外发给其他用户使用.避免在高峰期很多用户都使用相同的事务代码,抽取相同的数据.造成服务器资源浪费.