软件系统技术方案软件项目维护方案.docx
《软件系统技术方案软件项目维护方案.docx》由会员分享,可在线阅读,更多相关《软件系统技术方案软件项目维护方案.docx(26页珍藏版)》请在冰豆网上搜索。
软件系统技术方案软件项目维护方案
软件系统技术方案【软件项目维护方案】
软件项目维护方案1.项目背景及目标1.1.项目背景在国家政策的指导和帮助下,信息化也越来越发挥出十分重要的作用。
XXXX不断加大信息化管理工作力度,积极实施“上网工程”,大力推进全市局域网建设,加快办公自动化系统进程,信息技术在改革中发挥了重要的支撑作用,为充分发挥政府公共职能,促进依法理财、科学理财,提供了重要的信息技术保障。
近年来建设各系统随着数据量的逐年增加,陆续出现了性能问题,有必要进行数据库系统的升级及性能优化,以确保应用系统的正常运行,为单位员工提供更好的信息服务。
1.2.项目目标●对各系统数据库进行补丁升级服务,安装补丁前制定详细的升级计划和应急回退计划。
●完成各系统数据库的性能调优工作。
●各业务持续性得到有效的保证。
2.需求分析*****项目,我公司有多年的行业经验。
具有对运维服务对象进行适时监测、指标分析、和及时修复的能力。
Oracle产品日常运行维护项目主要从如下几个方面进行:
(1).每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行查看,发现并解决问题。
(2).每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康查看,对数据库对象的状态做查看。
(3).查看表空间碎片,提出下一步空间管理计划。
对ORACLE数据库状态进行一次全面查看。
(4)由于这些数据库系统承载着XXXX非常重要的业务系统数据,所以在日常维护中需要非常仔细,每周、每月、每季都需要有相应的巡检记录,需要详细记载以下一些内容:
n监控数据库对象的空间扩展情况n监控数据量的增长情况n系统健康查看,查看以下内容:
n数据库对象有效性查看n查看是否有危害到安全策略的问题。
n查看alert、Sqlnet等日志并归档报错日志n分析表和索引n查看对数据库会产生危害的增长速度n查看表空间碎片n数据库性能调整n预测数据库将来的性能n调整和维护工作n后续空间3.整体运行维护服务方案3.1.Lifekeeper维护3.1.1.验证LifeKeeper的安装查看已经安装的LifeKeeper软件包,可以使用命令:
rpm–qa|grepstee3.1.2.启动LifeKeepera)启动LifeKeeper服务器进程如果当前您的系统没有运行LifeKeeper则在所有服务器上以root用户身份输入如下命令#/opt/LifeKeeper/bin/lkstartb)启动LifeKeeperGUI服务器进程同样以root用户运行命令#/opt/LifeKeeper/bin/lkGUIserverstart注意:
以上命令只需运行一次,以后每次系统重新启动时,LifeKeeper会自动运行上述进程3.1.3.有关的LifeKeeper软件的其它管理任务a)停止LifeKeeper服务如果需要在服务器上永久停止LifeKeeper服务,可以输入下列命令$LKROOT/bin/lkstop该命令同时会使所有LifeKeeper保护的资源处于退出服务状态,如果希望在停止LifeKeeper时保持资源/应用的运行,可以使用:
$LKROOT/bin/lkstop-fb)查看LifeKeeper进程键入下列命令可以查看当前运行的所有LifeKeeper进程列表ps-ef|grepLifeKeeper3.1.4.启动LifeKeeperGUI配置工具进入LifeKeeperGUI管理工具可以通过运行命令:
/opt/LifeKeeper/bin/lkGUIapp则出现LifeKeeper登录界面:
可以使用root用户登录,也可以使用新建的用户进行登录。
3.1.5.检测LifeKeeper集群运行状态可以使用lcdstatus命令对LifeKeeper集群的当前运行状态进行查看,命令格式:
lcdstatus[-q][-d主机名]该程序向stdout输出在LifeKeeper资源层次配置状态和通信路径的状态.选项-q表示输出采用简略的形式(建议使用该选项)选项–d表示要查看的主机,缺X查看本机3.1.6.管理LifeKeeper中的资源注意:
如果能运行LifeKeeperGUI,则使用其提供菜单命令执行相应操作;
在执行命令行启动/停止资源前,一定先使用lcdstatus命令确认资源的实际状态。
a)启用资源(In-Service)可以使用命令:
./perform_action-t资源标记名-arestore将资源标记名所对应的资源在本机上投入服务(启动)。
如果该资源在命令使用前已经在另一台机器上处于运行状态,则本命令执行的结果相当于执行了一次手工切换!
!
!
如果该资源在命令使用前是处于停止状态(即在备机上执行本命令),则本命令执行的结果相当于执行了一次手工切换b)停止资源(out-of-service)可以使用命令:
./perform_action-t资源标记名-aremove将资源标记名所对应的资源在本机上停止服务。
如果该资源在命令使用前已经在另一台机器上处于运行状态,则本命令执行不产生任何结果注意:
n在执行命令行前后,一定先使用lcdstatus命令确认资源的当前状态。
n命令停止/启动本地的资源n命令中的资源标记名是区分大小写的n一定要等待命令完成,注意命令的输出。
n详细用法见在线帮助手册。
3.2.SQLSERVER维护计算机系统各种软、硬件故障、用户误操作以及恶意破坏是不可避免的,这些影响到数据的正确性甚至造成数据损失、服务器崩溃等致命后果。
数据库的备份对保证系统的可靠性具有重要的作用。
下面会根据执行强度对维护任务及其相应的程序进行分类描述,执行强度用不同的时间间隔定义,包括每天、每周、每月和每季度,能够建立起良好的维护实务,确保SQLServer数据库性能和安全。
3.2.1.每天的例行维护任务需要数据库管理员密切关注的维护任务,最好每天都查看一下,这样可以确保系统的可靠性、可用性、运行性能和安全。
每天的例行维护任务包括:
1、查看是不是所有被请求的SQLServer服务都正常运行。
2、查看日常备份日志中成功、警告或者失败记录。
3、查看Windows事件日志有没有错误记录。
4、查看SQLServer日志有没有安全警告记录,例如非法登录。
5、执行完全备份或差异备份。
6、在设置了完全恢复模型或大容量日恢复模型的数据库上执行事务日志备份任务。
7、核实SQLServer作业没有失败。
8、查看所有的数据库文件和事务日志具有合适的磁盘空间大小。
9、至少要监控处理器、内存或者磁盘计数器没有出现瓶颈。
3.2.2.每周的例行维护任务关注程度稍逊于每天的例行维护任务,最好每周进行一次例行查看。
每周的例行维护任务包括:
1、执行完全备份或差异备份。
2、查看以前执行的维护计划报告。
3、查看数据库完整性。
4、如果需要,执行收缩数据库任务。
5、通过重新组织索引任务压缩聚集和非聚集表和视图。
6、通过重新生成索引任务在数据页和索引页重新组织数据。
7、更新所有用户表和系统表的统计信息8、清除备份、还原、SQLServer代理作业和维护计划等操作的历史数据。
9、如果需要,手动增长数据库或事务日志文件10、清除执行维护计划残留下来的文件。
3.2.3.每月或每季度的维护任务有一些维护计划不需要执行得过于频繁,可以每个月或每个季度执行一次。
但是请不要以为这些任务不需要天天执行就无足轻重,这些任务可以确保数据库环境的健康,所以不要轻视以下这些维护任务:
1、在测试环境中执行备份还原操作。
2、将历史数据归档。
3、分析收集的性能统计数据,与基准值相比较。
3、查看并更新维护文档。
4、查看并安装最新的SQLServer补丁和补丁包。
5、如果运行簇、数据库镜像或日志传送,则监测故障转移。
6、验证备份和还原进程是否遵循已定义的服务等级协议。
7、更新SQLServer构建指南。
8、更新SQLServer灾难恢复文档。
9、更新维护计划列表10、修改管理员口令。
11、修改SQLServer服务帐户口令。
3.3.WebLogic维护3.3.1.性能调优3.3.1.1.设定执行队列的溢出条件WeblogicServer提供给默认的执行队列或用户自定义的执行队列自定义溢出条件的功能,当满足此溢出条件时,服务器改变其状态为“警告”状态,并且额外的再分配一些线程去处理在队列中的请求,而达到降低队列长度的目的。
通过启动管理控制台,在域(如:
mydomain)服务器server实例(如:
myserver)ExecuteQueueweblogic.kernel.Defalt配置下面几项:
队列长度:
此值表示执行队列中可容纳的最大请求数,默认值是*****,最后不要手动改变此值。
队列长度阈值百分比:
此值表示溢出条件,在此服务器指出队列溢出之前可以达到的队列长度大小的百分比。
线程数增加:
当检测到溢出条件时,将增加到执行队列中的线程数量。
如果CPU和内存不是足够的高,尽量不要改变默认值“0”。
因为Weblogic一旦增加后不会自动缩减,虽然最终可能确实起到了降低请求的作用,但在将来的运行中将影响程序的性能。
最大线程数:
为了防止创建过多的线程数量,可以通过设定最大的线程数进行控制。
在实际的应用场景中,应根据具体情况适当的调整以上参数。
3.3.1.2.设定队列监测行为WeblogicServer能够自动监测到当一个执行线程变为“阻塞”。
变为“阻塞”状态的执行线程将无法完成当前的工作,也无法再执行新请求。
如果执行队列中的所有执行线程都变为“阻塞”状态,Weblogicserver可能改变状态为“警告”或“严重”状态。
如果Weblogicserver变为“严重”状态,可以通过NodeManager来自动关闭此服务器并重新启动它。
具体请参考:
NodeManagerCapabilities文档。
通过启动管理控制台,在域(如:
mydomain)服务器server实例(如:
myserver)配置调整下可配置下面几项:
阻塞线程最长时间:
在此服务器将线程诊断为阻塞线程之前,线程必须连续工作的时间长度(秒)。
默认情况下,WebLogicServer认为线程在连续工作600秒后成为阻塞线程。
阻塞线程计时器间隔:
WebLogicServer定期扫描线程以查看它们是否已经连续工作了“阻塞线程最长时间“字段中指定的时间长度的间隔时间(秒)。
默认情况下,WebLogicServer将此时间间隔设置为600秒。
3.3.1.2.1.尽量使用本地IO库WebLogicServer有两套套接字复用器:
Java版和本地库。
采用小型本地库更有效,尽量激活EnableNativeIO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。
如果系统不能加载本地库,将会抛出java.lang.UnsatisfiedLinkException,此时只能使用Java套接字复用器,可以调整socketreaders百分比,默认为33%。
该参数可以在ConsoleServerTuningConfiguration配置栏里设置,配置完,重新启动WebLogicServer即可。
3.3.1.2.2.调整默认执行线程数名称开发模式产品模式推荐个数ExecuteQueues默认的执行线程为15默认的执行线程为25200在管理控制台修改默认执行队列线程数的步骤如下:
n如果管理服务器没有运行,先启动。
n访问管理控制台。
n展开左边面板的Servers节点,显示Server列表。
n右击Server,在弹出菜单中选择ViewExecuteQueues,就会在右边面板显示有执行队列的表用来修改。
n注意:
你只能修改默认的执行队列或者用户定义的执行队列。
n在Name列,直接点击默认执行队列名称,显示配置标签用来修改执行队列数。
n填下适当的线程数。
n点击Apply,保存刚才的修改。
n重启Server,使新的执行队列设置生效。
3.3.1.3.JDBC调优3.3.1.3.1.驱动程序类型选择Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。
但在简单的数据库操作中,性能相差不大,随着thin驱动的不断改进,这一弱势将得到弥补。
而thin驱动的移植性明显强于oci驱动。
所以在通常情况下建议使用thin驱动3.3.1.3.2.调节连接池初始容量和最大容量JDBCConnectionPool的调优受制于WebLogicServer线程数的设置和数据库进程数,游标的大小。
通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连接池的最大值等于或者略小于线程数。
同时为了减少新建连接的开销,将最小值和最大值设为一致;
值等于WebLogicServer的执行线程数。
3.3.1.3.3.其他配置尽管JDBCConnectionPool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。
这里建议最好不要设置测试表,同时TestReservedConnections和TestReleasedConnections也无需勾上。
当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开3.3.1.4.WEB调优3.3.1.4.1.调整WEB应用描述符WEB应用除代码之外的调优比较简单,仅仅是对一些WEB应用描述符的调整。
首先关闭SessionMonitoringEnabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时间。
同时生产环境下无需查看Jsp和servlet:
JSPPageCheckSecs和ServletReloadCheckSecs均设为-1,关闭JSPKeepGenerated和JSPVerbose对性能也有帮助。
此外,还可以对jsp进行预编译,有两种方法:
激活precompile选项;
使用weblogic.appc事先编译,建议采用后者。
3.3.1.5.其他调优设置3.3.1.5.1.WebLogic文件描述符大小调整首先设置WEB主机系统的ulimit参数为unlimited,然后设置WebLogic中文件描述符的大小。
在{WL_HOME}/bea/weblogic/common/bin中打开文件commEnv.sh,修改设置文件描述符大小的指令,将默认的:
ulimit–n1024修改为:
ulimit–n81923.3.2.维护管理3.3.2.1.启动weblogicservern启动管理服务器:
执行startAdmserver.shn启动被管理服务器:
执行startManagedWebLogic.shservernameadminurl3.3.2.2.停止weblogicservern停止被管理服务器:
执行stopWebLogic.shservernamen启动被管理服务器:
执行stopWebLogic.sh3.3.2.3.登录和退出管理控制台n管理服务器启动后可以在浏览器中登录管理控制台n输入URL:
http:
//hostname:
port/console或https:
//hostname:
port/consolelhostname:
管理服务器的ip地址或DNS名lport:
管理服务器监听的端口l如果管理服务器启动时使用SSL,则使用https访问管理控制台n在弹出的窗口“ConsoleLogin“中输入用户名和密码登录3.3.2.4.性能监控n查看性能参数l登录控制台后点击Servers-servername-Monitoring-Performancen参数分析n1)IdleThreadsQueueLengthThroughout正常情况下idlethreads0,queueLength为0,Throughout呈不规则变化曲线,MemoryUsage呈适度频度的锯齿变化曲线。
一般来说,对于正常配置的生产环境(线程数50~200),如果idlethreads10,或者呈现不断降低的趋势,就应加以关注;
空闲线程数与队列长度通常有如下关系:
A、如果空闲线程数0,则queuelength=0;
B、反之,如果queuelength0,则空闲线程数=0;
n2)MemoryUsageMemoryUsage=totalMemory()–freeMemory()内存使用曲线反应了JVMHeap内存使用的变化情况,可以结合其他三个值的变化情况来判断server工作情况;
比较理想的状态是适当频度的各种锯齿变化,由于JVMGC多采用“stoptheworld”机制,也就是垃圾回收时其他处理将暂停,过度频繁的GC将明显降低server工作效率和性能表现。
3.4.Oracle维护OracleDatabase,又名OracleRDBMS,或简称Oracle。
是甲骨文公司的一款关系数据库管理系统。
它是在数据库领域一直处于领先地位的产品。
可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。
它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
3.4.1.数据库性能优化Oracle性能管理既是一种艺术,也是一种科学。
从实用角度讲,它可以分为两种类型,主动式和被动式性能管理。
主动式性能管理涉及到特定系统实施初期的设计和开发,包括硬件选择、性能及容量规划,海量存储系统的选择,I-O子系统配置及优化,以及如何对不同组件进行定制,以满足Oracle数据库和应用系统的复杂要求。
被动式性能管理涉及到现有环境中不同组件的性能评估、故障排除和Oracle环境的优化。
本文旨在探讨如何进行被动式性能调优,以便为Oracle性能调优提供必要的指导,从而避免仅仅通过反复尝试的方式进行性能调优,提高Oracle性能管理的效率。
所以ORACLE数据库性能恶化表现基本上都是用户响应时间比较长,须要用户长时间的等待。
获得满意的用户响应时间有两个途径:
一是减少系统服务时间,即提高数据库的吞吐量;
二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率。
对于以上的两个问题,通常我们采用以下几个方面来进行改善:
n调整服务器内存分配。
例如,可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;
还可以调整程序全局区(PGA区)的大小。
n调整硬盘I/O问题,达到I/O负载均衡。
n调整运用程序结构设计。
n优化调整操作系统参数和使用资源管理器。
nSQL优化、诊断latch竞争、Rollback(undo)Segment优化、提升block的效率等等。
3.4.1.1.查看Oracle数据库性能查看Oracle数据库性能情况,包含:
查看数据库的等待事件,查看死锁及处理,查看cpu、I/O、内存性能,查看是否有僵死进程,查看行链接/迁移,定期做统计分析,查看缓冲区命中率,查看共享池命中率,查看排序区,查看日志ORACLE产品日常运行维护年度服务项目缓冲区,总共十个部分。
3.4.1.1.2.查看消耗CPU最高的进程SETLINE240SETVERIFYOFFCOLUMNSIDFORMAT999COLUMNPIDFORMAT999COLUMNS_#FORMAT999COLUMN*****EFORMATA9*****“ORAUSER“COLUMN*****FORMATA29COLUMNSQLFORMATA60COLUMNOSNAMEFORMATA9*****“OSUSER“SELECTP.PIDPID,S.SIDSID,P.SPIDSPID,S.*****E*****E,S.OSUSEROSNAME,P.SERIAL#S_#,P.*****L,P.**********,P.*****UND,S.STATUS,RTRIM(SUBSTR(A.SQL_TEXT,1,80))*****V$*****P,V$*****S,V$*****AWHEREP.ADDR=S.PADDRANDS.SQL_*****=A.*****(+)ANDP.SPIDLIKE'%1%';3.4.1.1.3.查看碎片程度高的表SQLSELECTsegment_nametable_name,COUNT(*)extentsFROMdba_segmentsWHEREownerNOTIN('SYS','SYSTEM')GROUPBYsegment_nameHAVINGCOUNT(*)=(SELECTMAX(COUNT(*))FROMdba_segmentsGROUPBYsegment_name);3.4.1.1.4.查看表空间的I/O比例*****CTDF.*****ACE_NAMENAME,DF.FILE_NAME“FILE“,F.PHYRDSPYR,F.*****DPBR,F.*****PYW,F.*****RTPBWFROMV$*****TF,DBA_DATA_FILESDFWHEREF.FILE#=DF.FILE_IDORDERBYDF.*****ACE_NAME;3.4.1.1.5.查看文件系统的I/O比例**********R(A.FILE#,1,2)“#“,SUBSTR(A.NAME,1,30)“NAME“,A.STATUS,A.BYTES,B.PHYRDS,B.*****FROMV$*****EA,V$*****TBWHEREA.FILE#=B.FILE#;3.4.1.1.6.DiskRead最高的SQL语句的获取*****CTSQL_TEXTFROM(SELECT*FROMV$*****ORDERBYDISK_READS)WHEREROWNUM=5desc;3.4.1.1.7.查找前十条性能差的sqlSELECT*FROM(SELECT*****_USER_ID*****ONS,SORTS,*****_TYPE,DISK_READS,SQL_TEXTFROMV$*****ORDERBYDISK_READSDESC)WHEREROWNUM3.4.1.1.8.等待时间最多的5个系统等待事件的获取SELECT*FRO