您现在的位置是:首页 >

如何查看系统进程占用内存 Oracle9i进程内存占用问题解决方法

火烧 2023-01-05 07:31:41 1060
Oracle9i进程内存占用问题解决方法    年 月 日 发现Oracle公布了有关此问题的一些说明和部分解决方法 大致的内容是 AIX 可以打个补丁来获得更好的效果 而其他版本只能通过设置以下环境

Oracle9i进程内存占用问题解决方法  

如何查看系统进程占用内存 Oracle9i进程内存占用问题解决方法
   年 月 日 发现Oracle公布了有关此问题的一些说明和部分解决方法 大致的内容是 AIX 可以打个补丁来获得更好的效果 而其他版本只能通过设置以下环境变量来减少消耗     AIXTHREAD_SCOPE=S;export AIXTHREAD_SCOPE    NUM_SPAREVP= ; export NUM_SPAREVP(AIX 和 )     详细内容参考Metalink文档 Memory Consumption on AIX 此文档是 DEC 创建的 最近更新 JAN      年 月 日 我们拿了一台新的M 安装了AIX 开始测试这一结果 设置这些环境可以起一定的作用 但没有明显效果     根据文档说明 安装AIX APAR IY 补丁 执行如下步骤     从这里下在相关脚本    ) save your current version of $ORACLE_HOME/oracle    ) create a working directory $ORACLE_HOME/relink    ) cd to $ORACLE_HOME/relink    ) unzip the relinking package    ) link $ORACLE_HOME/bin/oracle to /oracle    ) run the script /genscript to generate some required files and scripts    ) run /relink sh to generate the new oracle binary oracle new $$    ) copy oracle new $$ to $ORACLE_HOME/bin/oracle and verify that the permissions match the original oracle binary     验证结果很明显 内存占用改善了很多 没有打补丁的一个空连接server进程占用最低都是 M多 而现在只有 M多 改善了 %!  hawk > ps v (没打补丁的空连接)  PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM MAND   A : xx oracle  localhost> ps v (打过补丁的空连接)  PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM MAND   A : oracleor    虽然说这里ps v看到的结果不是很准确 但是二者使用相同的标准计算 并不影响对比结果 而且和我们使用NMON的统计结果也是一致的     至此 Oracle i在AIX上的内存占用问题算是基本解决了 前后经历了快一年的时间 这恐怕是我关注一个Oracle问题时间最久的一次 理由很简单 这是工作需要 生产需要 要知道这么随便一搞 给我们剩下了很多麻烦 之前为了允许更多的连接 我们不得不将内存从 G扩容到 G 现在一降下来可以为企业节省很多硬件投入 毕竟这玩艺内存卖的还是挺贵的 而这是无成本的     过去这段时间 我工作的其中之一就是在为一个电信业务系统的升级做准备 在两台IBM M ( CPU* G MEM AIX L)上对ORACLE I RAC做详细的测试工作 开始的时候一切都很顺利 但后来却遇到一个难题 就是Oracle i的单个进程占用的内存过多     经过一段时间测试 在先后解决了其它问题后 最后的主要问题集中到了内存上 ORACLE i在AIX L上每个进程都占用了很多内存 一个空连接进程就会用到 M多的内存 而众所周知 Oracle i的单个进程占用的内存一般是 ~ M 所以这就引起了我们的高度重视 因为如果按此计算 个连接什么事不做就要 G内存了!而我们的实际应用连接数比这还要多     在出现问题之后 我先后对ORACLE进行了不同方向的调整 也问过了一些朋友以及IBM和ORACLE的技术支持 翻遍了国内外我所知道的论坛 都没有看到任何有意思的消息 更不要说解决方案了 这让我开始怀疑是Oracle i的BUG 果然在 月底Oracle公布了这个BUG(我是在 月底看到的 因为 月份的大部分时间在处理别的事)!造成这个问题是因为AIX上C的编译器问题 使得本来可以共享的部分 最后都没有共享 造成每个进程都浪费了大约 MB的内存 详情参见本文最后BUG 的描述     为了验证确实是AIX的问题 我在另外一台HP UX B 上进行了同样的测试 结果显示Oracle i的单个进程仍然占用很多内存!经过分析发现这是由于两方面原因造成的      Oracle i的初始化参数CURSOR_SPACE_FOR_TIME从默认的FALSE改成了TRUE      HP UX上的Oracle i将虚拟内存数据页(virtual memory data pages)的默认值从原来的D( KB)改成了L( GB)     使用/usr/bin/chatr $ORACLE_HOME/bin/oracle查看oracle程序的内部属性 我们发现虚拟内存的text段从原来的 M改成了 M 而DATA段从原来的 M改成了L(最大可达到 GB) 经过测试验证 DATA段这个参数直接影响了Oracle i单个进程所占用的内存的大小 对于空连接来说 MB是扩展的临界点 因为空连接是扩不到 MB( MB的下一个可设DATA段大小)     Oracle i和Oracle i虚拟内存默认值对比    i     shared library binding:  deferred  global hash table disabled shared vtable support disabled segments:  index type address flags size    text z r c M    data m M  executable from stack: D (default)kernel assisted branch prediction enabled lazy swap allocation for dynamic segments disabled     i     shared library binding:  deferred  global hash table disabled shared vtable support disabled segments:  index type address flags size    text z r c M    data m L (largest possible)executable from stack: D (default)kernel assisted branch prediction enabled lazy swap allocation for dynamic segments disabled    我们可以使用/usr/bin/chatr +pd newsize $ORACLE_HOME/bin/oracle来更改DATA段的可用内存大小 对于text段的内存大小我们也可以使用chatr +pi来改 但gototop并不建议你这样做 因为text段是给命令用的     至此 我就在想了 自然在HP UX上是因为这个原因造成的 那么在AIX上除了C编译器的原因之外 是否也存在着同样的问题呢?到目前为止 gototop还没有的等到任何可靠的消息来证明这一点 但我猜想可能性很大     附 BUG: 描述   / / jpg>   问题陈述:    ORACLE ON AIX DOES NOT SHARE MANY CONST STRUCTS PER PROCESS MEMORY OVERHEAD          *** / / : am ***     =========================       PROBLEM:      Clear description of the problem encountered:     Oracle on IBM AIX platforms (AIX L and ) use a large amount of memory per dedicated connection For Oracle on AIX L the memory required per idle Oracle process appears to be about Mb A significant portion of this is related to non shared const structures (probably about Mb)       This bug is to track the issue of the non shared const structures lishixinzhi/Article/program/Oracle/201311/18891  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码