R1 rebuilder memo 2013年8月1日


一、测试目标
    为了保证每次的生产环境均为一个可靠的代码版本,同时为了有效的节省上线时间,我们基于TDD测试驱动开发模式进行敏捷测试。
    每一次测试结论均为了尽早的发现问题,解决问题。
    每一次测试的目标均为代码和性能级别的,希望可以及时整改。整改方式分两阶段进行:1、代码修改,这种修改主要涉及到数据库SQL代码和ASP.net代码。建议先优化SQL代码,至于开发代码,我们建议在上线前基于最优选的.net Framework平台进行。2、平台优化修改,目前监理机和生产用服务器环境不一样,因此平台级别旨在数据库、操作系统环境,而非硬件环境。
二、测试方法
    功能测试:我们将R1系统部署在生产环境的服务器上,基于千兆交换机进分发至各个功能测试人员终端中,网段为192.168.20.1XX。由各个业务人员进行功能模拟及演练测试。
    性能测试:基于专业工具进行,目前我们使用过的工具有:
    1、Rational Robot 黑盒功能及性能测试
    2、Rational PuriflyPlus 代码内存溢出、代码覆盖率测试,修正代码质量
    3、Loadrunner 压力测试,目前使用Web HTTP协议1000并发用户许可
    4、Quest Spotlight on Oracle 数据库性能监控及性能诊断平台
    5、Web Performance Tools & WCAT 应用服务器及ASP.net性能工具

三、测试结论
1、代码
1、CSS样式表未保存为UTF-8模式,导致首页显示错误。已修复。
2、存在部分调用DLL的内存的请求IIS 6.0版本的内存猛增情况,建议优化DLL或基于IIS 7.0/7.5进行测试。Ipedf.Core.dll,FreeTextBox.dll特别突出
3、部分SQL有必要进行调优,详细SQL见下图,但此处的SQL调优不是最终模式,建议在生产环境下重构,如基于11GR2构建建议选择基于成本的优化器。
2、数据库
1、IO在监理机中成为了重要瓶颈,希望这个问题在存储环境下可以得到提升。
2、数据库SGA/PGA已经在监理机中达到最优化设计,但依然无法避免内存占用及释放缓慢的事实,这个情况需要参数化优化解决。此问题在增加一个并发用户数的情况下愈发严重,目前经过测试。47个用户并发访问的混合场景下,IIS已经无法响应新的连接请求。
4、IIS调优和Oracle调优迫在眉睫。

3、R1结论
目前按照开发计划,此R1(0731)版本可以部署为R1版本。我们周一需要在生产环境下进一步调优和性能优化。优化内容如下:
1、SGA/PGA参数化调整
2、IIS参数化调整,部署IIS性能包
3、增加数据库成本优化器的SQL优化措施。

四、测试过程截图
负载及数据库伸缩性测试:
 
C:\Documents and Settings\Administrator\My Documents\My Benchmark Factory Trial\Data
    
CPU利用率较高,此数据库的扩展性取决于CPU资源而非内存资源。这应该是DLL调用程序无法支持多核计算的原因,如果将Visual Studio新版本重新编译DLL作为目标X64编译器和多核计算特性,则DLL效率会更高。

30个页面的不同用户的并发访问,系统利用率已经居高不下,这与监理机虚拟化环境有关,需要重新在服务器上进行测试。

很慢的SQL语句如下:
    
当并发降低后,我们可以看到会话直线下降
   
重做日志文件资源很平均,这说明日志交换效率很高。

   
INSERT INTO mgmt_bug_adv_home_patch
            (advisory_name, bug_number, host_name, home_location,
             home_location_display, patch_guid, prereq_release, target_guid,
             patch_id, patch_release_id, patch_platform_id, container_guid,
             patch_valid_status)
   SELECT advisories.advisory_name AS advisory_name,
          advisories.bug_number AS bug_number, homes.home_host AS host_name,
          homes.home_directory AS home_location,
          homes.home_name AS home_location_display,
          patches.patch_guid AS patch_guid,
          CASE
             WHEN (   (patches.patch_type = 'Patchset')
                   OR (INSTR (homes.home_version, aru_rel.release_name) <> 1)
                  )
                THEN aru_rel.release_name
             ELSE NULL
          END AS prereq_release,
          homes.host_target_guid AS target_guid, patches.patch_id AS patch_id,
          patches.patch_release_id AS patch_release_id,
          patches.patch_platform_id AS patch_platform_id,
          homes.home_id AS container_guid,
          patches.patch_valid_status AS patch_valid_status
     FROM mgmt_aru_releases aru_rel,
          mgmt_aru_products aru_products,
          mgmt_bug_advisory_bug advisories,
          mgmt$cpf_patch_info patches,
          TABLE (CAST (:b1 AS cpf_home_array)) homes
    WHERE patches.patch_fixes_bug = advisories.bug_number
      AND (   patches.patch_platform_id = 2000
           OR (    homes.home_platform_type = '0'
               AND homes.home_aru_platform = patches.patch_platform_id
              )
           OR (    homes.home_platform_type = '1'
               AND patches.patch_platform_id IN (453, 23)
              )
          )
      AND aru_products.em_target_type = homes.home_target_type
      AND patches.patch_product_id = aru_products.product_id
      AND aru_rel.release_id = patches.patch_release_id
      AND EXISTS (
             SELECT 1
               FROM mgmt_bug_fix_applic_comp_list facl
              WHERE facl.ap_guid = patches.patch_ap_guid
                AND facl.bug_number = patches.patch_fixes_bug
                AND NOT EXISTS (
                       SELECT 1
                         FROM mgmt_aru_oui_components p,
                              mgmt_bug_fix_applicable_comp fac
                        WHERE fac.component_list_guid =
                                                      facl.component_list_guid
                          AND fac.oui_component_release_id = p.component_id
                          AND NOT EXISTS (
                                 SELECT 1
                                   FROM mgmt_inv_component c,
                                        mgmt_inv_versioned_patch patch
                                  WHERE c.container_guid = homes.home_id
                                    AND c.component_guid = patch.component_guid(+)
                                    AND p.component_name = c.NAME
                                    AND p.component_release =
                                           DECODE (patch.VERSION,
                                                   NULL, c.VERSION,
                                                   patch.VERSION
                                                  )
                                    AND ROWNUM = 1)
                          AND ROWNUM = 1)
                AND NOT EXISTS (
                       SELECT 1
                         FROM mgmt_inv_patch ip, mgmt_inv_patch_fixed_bug ibf
                        WHERE ip.container_guid = homes.home_id
                          AND ip.patch_guid = ibf.patch_guid
                          AND ibf.bug_number = facl.bug_number
                          AND ROWNUM = 1)
                AND ROWNUM = 1)
 
IIS在压力测试达到229个业务同时进行的时候,出现了内存告警。IIS成为了瓶颈,同时IIS已经无法连接到TNS数据库侦听了,数据库无法响应请求。数据库和IIS成为了信息孤岛。因此需要优化 Oracle .NET Provider,并减少连接数。将长连接增加timeout时间断开以释放资源。

100个用户无法通过测试

INSERT INTO H_Lineitem
(l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,l_shipdate,l_commitdate,l_receiptdate,l_shipinstruct,l_shipmode,l_comment)
VALUES (:l_orderkey,:l_partkey,:l_suppkey,:l_linenumber,:l_quantity,:l_extendedprice,:l_discount,:l_tax,:l_returnflag,:l_linestatus,TO_DATE(:l_shipdate,'mm/dd/YYYY'),TO_DATE(:l_commitdate...
     
内存分页文件、磁盘的性能很低下。这是NTFS的问题,SCLM系统小文件的DML操作很多,建议基于NTFS 2008版本或基于Linux系统构建磁盘系统。ORACLE基于LINUX需要作为备选。
 
select  1-(sum(decode(name, 'physical reads', value,0))/   
(sum(decode(name, 'db block gets', value,0)) +   
(sum(decode(name, 'consistent gets', value,0)))))   
"Read Hit Ratio"    
from  v$sysstat;  
 
Read Hit Ratio         
----------------------
0.5727084284578206785954506891429477684885

1 rows selected

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PS D:\tool\other\BETAFPV_Configurator-main> .\node_modules\.bin\electron-rebuild.cmd ✖ Rebuild Failed An unhandled error occurred inside electron-rebuild node-gyp failed to rebuild 'D:\tool\other\BETAFPV_Configurator-main\node_modules\@serialport\bindings'. For more information, rerun with the DEBUG environment variable set to "electron-rebuild". Error: Could not find any Visual Studio installation to use Error: node-gyp failed to rebuild 'D:\tool\other\BETAFPV_Configurator-main\node_modules\@serialport\bindings'. For more information, rerun with the DEBUG environment variable set to "electron-rebuild". Error: Could not find any Visual Studio installation to use at NodeGyp.rebuildModule (D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\module-type\node-gyp.js:120:19) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async ModuleRebuilder.rebuildNodeGypModule (D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\module-rebuilder.js:98:9) at async ModuleRebuilder.rebuild (D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\module-rebuilder.js:128:14) at async Rebuilder.rebuildModuleAt (D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\rebuild.js:149:13) at async Rebuilder.rebuild (D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\rebuild.js:112:17) at async D:\tool\other\BETAFPV_Configurator-main\node_modules\electron-rebuild\lib\src\cli.js:158:9
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值