您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 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服务器建立连接会在服务器上产生一个processSESSIONS=(1.1*PROCESSES)+5TRANSACTIONS=1.1*PROCESSESJ2EE服务器的连接池大小小于process的数量SQLaltersystemsetprocesses=150scope=spfile;SQLaltersystemsetsessions=170scope=spfile;SQLaltersystemsettransactions=165scope=spfile;18物理设备分配(表空间)原则:提高并行I/O,建立多个表空间,放在不同的物理设备上对应用系统的库表使用情况进行分类:更新较少的集中在一起,更新频繁的尽量分开,索引放在单独的表空间上以IntelliFlow为例: WFDBTABLE.DBF流程模型数据库表和较少更新的流程实例库表 WFDBPROCESS.DBFWf_Process WFDBACTIVITY.DBFWf_Activity WFDBTASK.DBFWf_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_运行环境系统调优
链接地址:https://www.777doc.com/doc-6040804 .html