浏览模式: 标准 | 列表分类:系统工程师

sybase优化指南--某测试

Sybase自身调优

所有的数据库设备均使用direct IO

锁级别

更改锁级别为 行锁。

 

alter table dbo.WFWorkItem                   lock datarows;

 

见数据库目录  表锁类型.sql

 

注意,如果执行失败,可以通过更改数据库的属性来解决。

其他调优

见数据库  优化集合.sql

sp_configure "default network packet size", 10240 --默认网络包

sp_configure "max network packet size", 10240 --最大网络包

sp_configure "max memory",0,"6553M"  --(设置为共享内存的75%,重启生效)

sp_configure "allocate max shared mem",1   --(启动的时候自动分配max memory指定的最大内存)

sp_cacheconfig "default data cache","3200m" --(设置数据缓存为max memory的一半)

sp_cacheconfig "default data cache","cache_partition=2"     --(SMP的环境中还有一个问题就是螺旋锁的竞争,当用sp_sysmon观察到资源缓存螺旋锁争夺超过10%时就需要分区。)

sp_poolconfig "default data cache","128m","16k" --(增加一个16K I/O缓存池,解决排序等大IO操作,需要在长期观察后才能使用性能最佳化.)

sp_configure "procedure cache size",102400 --(过程高速缓存,通常是Max mem20%,这里是200M)

sp_cacheconfig 'tempdb_cache','200m','mixed'  --(创建一个200M命名高速缓存tempdb_cachetemdpb使用)

sp_bindcache 'tempdb_cache',tempdb --(tempdb_cache绑定到tempdb)

--2CPU(默认值为1)

--当服务器的CPU个数多于一个时,可以考虑多CPU进行并行处理。(并行查询、并行dbcc、并行建立索引、并行bcp)

--可根据实际CPU数来修改,若CPU>1时,一般设置为N-1。实际上OS会自动调度。

sp_configure "max online engines",8

sp_configure "number of engines at startup",8

sp_configure "number of worker processes",200 --(并行度*并发连接数*1.5)

sp_configure "max parallel degree",1  --(允许CPU并行)

--3、连接数(默认数为25,可根据应用需要来修改,连接数不宜太多

sp_configure "number of user connections",600

--4、锁

sp_configure "number of locks",100000

--5、索引对像

--数据库空闲状态下运行:sp_countmetadata "open indexes"

--正常运行时运行:sp_monitorconfig "open indexes"

--来确定一个最佳值,增加10%左右。

sp_configure "number of open indexes",20000

sp_configure "number of open objects",20000

sp_configure "number of open partitions",15000

--锁升级大小

sp_configure "page lock promotion HWM",10000

sp_configure "page lock promotion LWM",5000

sp_configure "row lock promotion HWM",10000

sp_configure "row lock promotion LWM",5000

 

库表调优

索引删除

删除无用索引:

 

在目前的用例中:

 

'WF_IDX_ACTINST_ACTDEFID'

'WF_IDX_ACTINST_PROCID'

'WF_IDX_H_ACTINST_ADEFID'

'WF_IDX_H_ACTINST_PROCID'

'WF_IDX_H_TRANC_PROCID'

'WF_IDX_H_TRANS_PROCID'

'WF_IDX_H_WI_ACTID'

'WF_IDX_H_WI_PROCID'

'WF_IDX_PART_GLOBALID'

'WF_IDX_PROCINST_PRODEFID'

'WF_IDX_TRANC_PROCID'

'WF_IDX_TRANS_PROCID'

'WF_IDX_WI_ACTID'

'WF_IDX_WI_PROCID'

'IDX_WFHWI_PARTIC'

'IDX_WFWI_PARTICI'

'PK_WF_H_WIParticipant'

 

使用最多的索引:

 

ObjectName,LogicalReads,PagesRead,UsedCount

'IDX_WFWI_4ABC',3018890,2000,201048

'WF_IDX_ACTINST_ACTDEFID',2562953,1010,0

'PK_WFACTIVITYINST',2543354,4,553495

'PK_WFWORKITEM',2519425,4,503057

'WF_IDX_WI_ACTID',2417832,4,0

'WF_IDX_WI_PROCID',2414082,4,0

'WF_IDX_ACTINST_PROCID',2324417,3,0

'PK_WFWIPARTICIPANT',1902591,3,301572

'IDX_WFWIPART_WIID',1714977,3,251310

'IDX_WFWI_PARTICI',1609752,457,0

 

其他的索引,基本可以删除,相机而删。

绑定缓存

sp_bindcache 'default data cache','bps','WFWorkItem'

sp_bindcache 'default data cache','bps','WFActivityInst'

sp_bindcache 'default data cache','bps','WFProcessInst'

sp_bindcache 'default data cache','bps','WFTransCtrl'

sp_bindcache 'default data cache','bps','ABC_LOAN_APPLY'

 

绑定default data cache bps。这一部操作需要在master库中进行。

 

然后把default data cache 绑定到 对应的表。

增加索引

wfworkItem增加索引:

 

USE bps

go

CREATE NONCLUSTERED INDEX IDX_LOAN_APPLY

    ON dbo.ABC_LOAN_APPLY(APPLY_ID)

go

IF EXISTS (SELECT * FROM sysindexes WHERE id=OBJECT_ID('dbo.ABC_LOAN_APPLY') AND name='IDX_LOAN_APPLY')

    PRINT '<<< CREATED INDEX dbo.ABC_LOAN_APPLY.IDX_LOAN_APPLY >>>'

ELSE

    PRINT '<<< FAILED CREATING INDEX dbo.ABC_LOAN_APPLY.IDX_LOAN_APPLY >>>'

Go

此索引为查询待办使用。

 

以下操作在公司内部可以在控制台安装数据库时已经ok,所以没有使用。

 

tempmaster中剥离出来:

tempdb数据和日志分离:
USE master
Go

DISK INIT name = 'tempdbdev01', physname = '/opt/sybase/data/tempdbdev01.dat' , size = '1G',dsync = 'false'
Go

DISK INIT name = 'tempdblogdev01', physname = '/opt/sybase/data/tempdblogdev01.dat', size = '1G',dsync = 'false'
Go

ALTER DATABASE tempdb ON tempdbdev01 = '1G' LOG ON tempdblogdev01 = '1G'
Go

USE tempdb
Go

删除tempdb上使用的master段:
EXEC sp_dropsegment 'logsegment', 'tempdb', 'master'
go

EXEC sp_dropsegment 'system', 'tempdb', 'master'
go

EXEC sp_dropsegment 'default', 'tempdb', 'master'
Go

如果已针对 tempdb 建立了设备,则只需禁用 dsyncio,但需要重新启动 Adaptive Server
EXEC sp_deviceattr 'tempdbdev01', 'dsync', 'false'
Go

EXEC sp_deviceattr 'tempdblogdev01', 'dsync','false'
Go

杭州历险记

上午10点接到电话,回家收拾了2件衣服地铁去火车站。火车晚上6点才发车,无奈汽车过往。出租车不认路,东北小伙很能想办法,在每个红绿灯都摇下车窗问路,感觉很不错。为解决问题使用上所能想到的每一个办法才是王道。

下午4点10分到达工厂门口,然后开始拨电话,无人接听。很纳闷。然后打电话给D,问同行工程师电话,D不知,电话助理,助理不知,电话原来呆过的ps,总算接通,才算是正式入场。

入场歇了会,然后组织人员开会,了解最原始的需求,硬件环境,软件环境,目前性能情况,项目架构。

会后开始干活。

第一天,把周边的邮件系统搞死了。

和在场工程师加床拼个房间。

小插曲:P同学订房没订上,前台大发脾气。我在想,要是能讹几份免费早餐会更好。

第二天,firewall +dns 死了。

小插曲:和客户人员聚餐,技术化的人沟通比较有意思。:)

第三天,数据量不大的情况下数据库deadlock。

小插曲,客户IT部头请吃饭,白话了技术的,管理的,经文很多玩意,不管是不是酒话,算是对客户的帮助吧。

第四天,定位死锁问题,

小插曲,IT部的头早上开车来接,晚上P同学请吃饭。发现最近自己的话忒多了点。

第五天,搞定死锁问题,召集性能结束会议。

eos+bps的性能还是不错的,如果有大的性能问题,一定是使用和架构的问题。:),说这句话,我很有底气。

下午,拎着客户送的礼品踏上回家的路。

---------------------------------------------------------------------------

1)就算是业务,客户不一定比自己更精通。

2)搞定问题的方式有很多,要学着全面看问题。

3)不迷信任何牛人,所谓愚者千虑亦有一得,多想想,那一得才是必须的。

如何导出windows性能数据到excel文件

如何把perfmon的性能数据导出到excel中?

在性能测试的过程中,由于客户的要求不能开放对应的服务。Remote Procedure Call(RPC)和Remote Registry Service。loadrunner连接不上windows资源进行监控。

那我们只能将性能数据导出到excel中,用excel强大的图表进行分析。

废话不多说,开始吧。

开始,运行,perfmon,打开性能监控工具。

点击计数器日志,右边一般会出现一个文件 system overview 的日志文件。

在右边空白处,点击右键,新建日志设置。

输入该设置名称。然后添加计数器。

主要监控processor,disk和memorry的状况,那就添加对应的计数器即可。

调整数据采样间隔,和loadrunner的数据采样间隔保持一致。

窗口头上,tab切换到日志文件。

选择文件类型,选择文本文件。

例如中就会出现C:\PerfLogs\PTest_000002.csv 类似这种值。

然后启动该日志配置。在工具栏中。

压力测试之后,用excel打开对应的csv文件。

查看对应的列,使用excel图标对应该列生成折线图即可。

Tags: perfmon, 性能数据, excel

bes+eos测试点滴

bes是borland公司的应用服务器,此次测试基于aix 5.3 + bes6.7 + eos6.0测试。

本文档记录在测试中发现的问题和结果的过程。积累思路。

--------------------bes 安装------------------

borland的哥们给的安装包很智能,一个sh文件即可。通过host模块方式部署文档,war包无法加载。

打印出classloader,war包中的lib无法加载,

$jar -xvf  ***.jar  解开报错。

问题所在,ftp 上传,没有设置bin模式。

ftp>bin

设置bin模式,再次上传,用jar能解开,即可不是war包。

---------------------数据库----------------------

1)快照描述,大量性能损耗在日志轮换。

oracle的日志,redo.log,需要放在IO最好的磁盘中。

通过em或者命令行,添加redo.log文件,切换,删掉原有redo.log即可。

2)命令行模式安装快照。

sql>@C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\spcreate.sql

安装如出现not connecting

需在spcreate.sql 中加入连接字符串。

connect perfstat/&&perfstat_password@eos  即可。

-------------------服务器调优----------------

bes的服务器,接入端包装的为tomcat。

可以通过修改 /bes/BES6.7/var/domains/base/configurations/BPS6.0/mos/standard/adm/tomcat/conf

目录下的server.xml来做调整。

比如连接池,超时时间,更改此文件,可以参考tomcat的更改方式。

压力测试需要调整log的级别。

/home/bes/BES6.7/var/domains/base/configurations/EOS6.1/mos/standard/adm/logs,日志相关配置可以通过修改/home/bes/BES6.6/var/domains/base/configurations/EOS6.1/mos/standard/adm/properties/

logConfiguration.xml来完成。

如果日志量很大,可以考虑调低日志级别

 

--------------------应用调优------------------

 

通过调整应用中的业务逻辑,省掉数据库操作,来调整。

-------------------loadrunner脚本验证-------------

在压力测试中,loadrunner脚本变量设置,可能会出现变量越界的情况。

和数据库配合统计,来保证测试结果的正确。

------------------------------------------------------------------------

一次性能测试,涉及的因素可能有以下几个方面:

1)硬件,包括app服务器,database 服务器,loadrunner client,网络等。

2)软件,包括app 应用服务器,database应用服务器,loadrunner 设置等。

3)测试案例。

4)测试脚本。

隔离问题,才能解决问题。

再访郑州

33号下午3点到。在那里工作了20个小时,具体工作如下:

   33号,工作时间,3小时。

1.       了解需求,客户提出按照他们的开发场景,按照通用测试方式测试,根据word版本的要求,开发测试用例。

   34号,工作时间,9小时。

1.       更改用例,录制脚本;

2.       windows2003 应用服务器宕机,查明原因是因为没有补丁,打补丁。

3.       本地压力试跑,压力100,本地网络使用99%,重新创建windows2003 虚拟机,在千兆网段。

4.       表空间不够,新建100G的表空间。

5.       容量测试完成,并发压力测试,windows2003的操作系统内核参数调整失败,无法接受到大于1600的集合点并发请求。

35号,工作时间,8小时。

1.       由于app server操作系统的问题,在aix上重新安装weblogic10.3eos 6.1

2.       并发压力测试压力机不够,联系系统部门安装分配新的虚拟机3台。

3.       完成最大并发测试。由于网络流量和loadrunner 虚拟机数量的限制,并发用户到了5000,没有错误。

4.       基于windows2003的应用服务器完成容量测试。

5.       和多方沟通关于版本测试的问题。下载不到weblogic923for aix的版本,没有做关于1.5JDK的测试。

6.       和对方沟通关于EJB远程部署,交接测试的环境。

定的35号晚上11点半回到上海。

这次住的地方貌似还不错,是原来的驻马店酒店。

一起工作的小伙是85年的,年轻有为,也挺好。

虽然是私企,但给人感觉国企的氛围十分重。一些领导三句落不到关键点上,拿客户忽悠。不太靠谱。

当然,这些都不关我的事情。

Records:7912345678910»