1_运行环境系统调优

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

系统调优及实践经验分享之一运行环境系统调优讲师姓名:汪涛部门:研发三部电话:021-64835658-2183邮箱:twang2004@longtop.com目录„系统调优概述„操作系统调优„数据库调优(Oracle10g)„应用服务器调优(WebLogic)„IntelliFlow引擎调优23系统调优概述4影响应用系统性能的主要因素„机器硬件配置…CPU,内存,硬盘数量和容量,I/O通道性能„网络环境…网络带宽,交换机性能„操作系统…企业版、专业版、桌面版„数据库服务器…内存配置、表空间、索引、连接数„J2EE应用服务器…线程总数、连接池大小、JVM内存量、Web容器线程数„工作流引擎…调度线程数、Cache大小、集群„应用层代码…高效代码、正确使用DB连接性能调优准则„全面考虑…很多参数是互相制约的,不能片面调整…把握系统参数的协调性„一次更改一个参数…不要一次更改多个性能参数,以便建立可对比的评估基础„按级别测量…以便建立可对比的评估基础…可使用的系统级别列表:„硬件,操作系统„应用程序服务器,数据库管理系统„SQL语句,应用程序5关注重点„操作系统调优„数据库调优(以Oracle为例)„应用服务器调优(以WebLogic为例)67操作系统调优操作系统调优„使用服务器版本的操作系统…桌面版本的操作系统一般对并发量会有限制„设置最大数量的服务器授权用户数…例如Windows2000[Advanced]Server在安装过程中,系统会提示输入对服务器访问的授权用户数„打最新的补丁89数据库调优(Oracle10g)一般性指导原则1/2„使用服务器版的数据库系统,不要使用开发版或单机版的数据库系统。„如果数据库有补丁,要尽量打补丁。„建立多个物理设备,例如对于IntelliFlow的数据库,建议把数据区和索引区建立在不同的物理设备上。„系统控制数据库和用户数据库建立在不同的硬盘上。„临时库、系统库、日志库要足够大,日志库设为自动清除。„数据库系统要设置足够多的锁资源。设置合理的锁数量,以避免锁不够用造成锁升级和发生阻塞的可能性。10一般性指导原则2/2„设置合理的锁升级阀值,避免过度的锁升级„确保配置的数据库的连接数目够用,一般保持在250个用户连接即可。如果发现有出现“不能获得数据库连接”的类似信息,可适当的调大连接数。„按照查询情况建立相适应的索引,索引要使用行锁,并且是非聚簇索引,以提高并发行。聚簇索引适用于数据较少更新,批量查询多的情形,一般更新操作多的在线交易表不用聚簇索引。„更新和插入频繁的库表要设为使用行锁,例如下面的IntelliFlow中的库表要用行锁:Wf_Process、Wf_Activity、Wf_ProcessVariable、Wf_ProcessVariableObject、Wf_Task。11以IntelliFlow为例解说Oracle优化配置„假设…数据库系统安装目录:C:\oracle\product\10.2.0\db_1…数据库实例名:ORCL…超级用户sys和密码:sys/longtop„更改配置前的备份工作…登录:sqlplussys/longtop@ORCLASSYSDBA…先要把PFILE转换成SPFILE:createspfilefrompfile;„C:\oracle\product\10.2.0\db_1\database\initorcl.ora文件中只有一行引用的描述:SPFILE='C:\oracle\product\10.2.0\db_1/dbs/spfileorcl.ora‘…备份C:\oracle\product\10.2.0\db_1/dbs/spfileorcl.ora,当参数调整有问题时可以随时恢复12常用的查看系统参数命令„查看内存分配情况…SQLshowsga„查看参数…SQLshowparameters[shared|area_size|……]13影响Oracle性能的几个主要方面„Oracle系统本身…内存分配…连接数量,SESSION数量,事务数量…物理设备分配(表空间)…库表存储区的数据块管理…游标和锁数量„应用系统(在第二部分讲解)…索引和查询语句相匹配…锁粒度(更新频繁的库表用行锁)…SQL语句(尽量用预编译SQL)14内存分配„SGA(SystemGlobalArea)…一般专用的数据库服务器,考虑分配一半的物理内存给SGA;32bit通常SGA有1.7G的限制…SQLaltersystemsetsga_max_size=1024mscope=spfile;…SQLaltersystemsetsga_target=1024mscope=spfile;…SQLaltersystemsetshared_pool_size=200mscope=spfile;„缓存已经被解析过的SQL,不能设置shared_pool_size过大,通常应该控制在100M~200M,除非是有很多存储过程、函数、包的ERP系统,可以适当增大…SQLaltersystemsetshared_pool_reserved_size=20mscope=spfile;大约shared_pool_size的5~10%左右,不能超过50%…SQLaltersystemsetjava_pool_size=32m;„缺省是32M,不用Java时足够了15内存分配„PGA(Process/ProgramGlobalArea)…为process预留的空间,存放每个process的环境信息,process是操作系统进程…没有启用MTS的时候,session的信息也放在PGA中(如果启用了MTS,那么session的信息放在SGA的sharedpool中)…MTS–Multi-ThreadedServer(共享服务器模式),只有当并发连接数超过了操作系统的支持时,才建议使用MTS;无MTS就是专用服务器模式,是Oracle的缺省模式,一个连接对应一个process…影响process内存分配的参数还有SORT_AREA_SIZE和SORT_AREA_RETAINED_SIZE,当process执行排序的时候,至少分配SORT_AREA_RETAINED_SIZE指定的内存,最大可扩展到SORT_AREA_SIZE指定的内存数量…SORT_AREA_SIZE默认值64K,HASH_AREA_SIZE默认值是128K…OLTP用缺省值即可,OLAP对SORT_AREA_SIZE需求要大,可调大16内存分配„对于通常的联机交易处理PGA的分配量是:PGA_AGGREGATE_TARGET=(total_mem*80%)*20%,对于2G内存:…SQLaltersystemsetpga_aggregate_target=328mscope=spfile;„OS使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M)0.7*总内存17连接数量,SESSION数量,事务数量„session是客户端和服务端之间的会话连接,服务端有一个对应的process来处理会话;每个用户和Oracle服务器建立连接会在服务器上产生一个process„SESSIONS=(1.1*PROCESSES)+5„TRANSACTIONS=1.1*PROCESSES„J2EE服务器的连接池大小小于process的数量„SQLaltersystemsetprocesses=150scope=spfile;„SQLaltersystemsetsessions=170scope=spfile;„SQLaltersystemsettransactions=165scope=spfile;18物理设备分配(表空间)„原则:提高并行I/O,建立多个表空间,放在不同的物理设备上„对应用系统的库表使用情况进行分类:更新较少的集中在一起,更新频繁的尽量分开,索引放在单独的表空间上„以IntelliFlow为例:…WFDBTABLE.DBF„流程模型数据库表和较少更新的流程实例库表…WFDBPROCESS.DBF„Wf_Process…WFDBACTIVITY.DBF„Wf_Activity…WFDBTASK.DBF„Wf_Task…WFDBINDEX.DBF„存放工作流库表缩索引…WFDBTEMP.DBF„临时表空间19库表存储区的数据块管理„PCTFREE和PCTUSED…PCTFREE参数用于指定块中必须保留的最小空闲空间比例。之所以要为块保留一些空闲空间,是因为在对块中存储的数据进行修改时(UPDATE操作),有可能会需要更多的存储空间,这时如果块中存储空间不足,就必须分配新块,此时会产生指针,降低性能。而如果每块在最初填写数据时均不填满,保留一部分可用空间,比如20%,则可以尽量避免上述问题。较大的PCTFREE(例如30%)可防止update时发生rowchain和rowmigration的情况发生。…当一个块写到PCTUSED所指定的值时(如:80%),这个块就被标记为已用,不可以再朝里边INSERT记录,以为日后修改此块内的某条记录提供条件。…如果预计只有很少的更新操作会增加行的大小,则可将PCTFREE设置为较低的值(如5或者10),使得ORACLE填满每个块的更多的空间。但是,如果预计更新操作将会经常增加行的大小,则将PCTFREE设置为较高的值(如20或30)20库表存储区的数据块管理„将IntelliFlow中更新频繁的库表设置为较大的PCTFREE可提高性能…ALTERTABLEWf_ACTIVITYPCTFREE30;…ALTERTABLEWf_PROCESSPCTFREE30;…ALTERTABLEWf_TASKPCTFREE30;…ALTERTABLEWf_TRANSITIONPCTFREE30;…ALTERTABLEWf_PROCESSHISTORYPCTFREE30;…ALTERTABLEWf_PROCESSVARIABLEPCTFREE30;21游标和锁的设置„设置游标数量,参数open_cursors…一般来说设为session数量的4倍就够用了…及时关闭游标:显式关闭所有JDBC对象,包括Statement和ResultSet„设置锁的相关参数…在Oracle中,锁的数量不受限制且不会自动升级;Sybase中锁的个数是受到限制的,为了能够维护这些资源,当用户在某个表上的行级锁达到一定数量后,这些行级锁就会被升级为该表上的1个表级锁,而取消这些行级锁…dml_locks:一般设为transaction数量的4倍2223应用服务器调优(WebLogic)影响J2EE应用服务器性能的几个主要方面„为JVM分配足够的内存,并使用产品模式„合理配置线程„根据并发量设置合适的数据库连接池大小„客户端连接相关的设置„JTA事务超时„服务器日志级别(ERROR)„关闭不需要的服务器监控功能24为JVM分配足够的内存,运行在产品模式„专用服务器,一般设置为不超过物理内存的70%左右…为了获得更好的性能,BEA公司推荐最小Java堆等于最大Java堆…参数范例:-Xms1024m–Xmx1024m…一般Windows下1200-1500M左右,Linux下最大能到2600M…32位系统,受限于操作系统的进程模型,最大设置为2G„运行在产品模式25线程设置„执行线程数…表示执行队列能够并发执行的操作数量。但此值不是设的越大越好,应该恰到好处的去设置它,太小了,执行队列中将会积累很多待处理的任务,太大了,则会消耗大量的系统资源从而影响整体的性能。…产品模式下默认为25个执行线程…监控最大负载时执行队列的吞吐量和队列中的等待请求数,据此确定理想的数值…线程数越多,花费在线程切换的时间也就越多;线程数越小,CPU可能无法得到充分的利用。为获取一个理想的线程数,需要经过反复的测试。…建议以25*CPU个数为基准进行调整,微调时以5*CPU个数为基准调整

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功