系统瓶颈优化

1、cpu问题

      考虑使用更高的cpu代替当前cpu。

       对于多cpu,考虑cpu之间的负载分配

      考虑在其他体系上设计系统,当前值。

2、内存和高速缓存

      内存的优化包括操作系统,数据库,应用程序的内存优化。

      过多的分页与交换可能降低系统的性能。

      内存分配也是影响系统性能的主要原因。

      保证保留列表具有较大的邻接内存块。

      调整数据块缓冲区大小(用数据块的个数表示)是一个重要内容。

      将最频繁的使用数据保存在存储区中。

3、磁盘(I/O)资源问题

      磁盘读写进度对数据库系统至关重要的,数据库对象在物理设备上的合理分布能改善性能。

      磁盘镜像会减慢磁盘写的速度。

      通过把日志和数据库对象分布在不同的硬盘上,可以提高系统的性能。

      把不同的数据放在不同的硬盘上。可以提高读写速度。经常把数据库,回滚段、日志放在不同的设备上。

       把表放在一块硬盘上,把飞簇的索引放在另一块硬盘上,保证物理读写更快。

4、优化应用系统网络设置

       可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样做效率较高

        并行操作资源限制参数(并发用户的数目、会话数)。

        影响资源开销的参数。

        与I/O有关的参数

5、优化应用系统网络设置

         可以通过数组接口来减少网络呼叫。不是一次提取一行,而是在单个往来往返中提取10行,这样做效率较高。

  调整会话数据单元的缓冲区大小。

  共享服务器进程比专用服务进程提供较好的性能。

三、数据库服务器性能问题及原因分析

1、单一类型事务响应时间过长

  数据库服务器负载、糟糕的数据设计、事务粒度过大、批任务对普通用户性能的影响。

2、并发处理能力差

3、锁冲突严重

  资源锁定造成的数据库事务超时、数据库死锁。

四、数据库相关

1、数据库性能问题的一般解决办法

  监视性能相关数据。

  定位资源占用较大的事务并做出必要的优化或调整。

  定位锁冲突,修改锁冲突发生严重的应用逻辑。

  对规模较大的数据或者无法通过一般优化解决的锁冲突进行分布。

2、oracle与提高性能有关的特性

  索引、并行执行、簇与散列簇、分区、多线程服务器、同时读取多块数据。

3、oracle配置的关键参数

  MAX_DSPATCHERS:这个参数指定了系统允许同时进行的调度进程的最大数量。

  MAX_SHARED_SERVERS:这个参数指定了系统允许同时进行的共享服务器进程的最大数量。如果系统中出现的人为死锁过于频繁,那么管理员应该增大这个参数的值。

  PARALLEL_ADAPTIVE_MULTI_USER:当这个参数的值为TRUE时,系统将启动一个能提高使用并行执行的多用户系统性能的自适应算法。这个算法将根据查询开始时的系统负载自动降低查询请求的并行度。

  PARLLEL_MIN_SERVERS:这个参数指定了实例并行执行进程的最小数量。其值就是实例启动时Oracle创建的并行执行进行数。

  PARLLEL_THREADS_PER_CPU:这个参数指定了实例默认的并行度和并行自适应以及负载平很算法。它指明了并行执行过程中一个CPU能处理的进程或线程数。

  PARTITION_VIEW_ENABLED:这个参数指定了优化器是否使用分区视图。oracle推荐用户使用分区表(这个在oracle8之后引入的)而不是分区视图。分区视图只是为了提供oracle的后向兼容性。

  REVOVERY_PARALLELISM:这个参数指定了恢复数据库系统时使用的进程数。

4、oracle的并行执行特性

RDBMS的绝大多数操作都可以分为以下3类:

         被CPU限制的操作:这类操作的速度和单CPU运行的速度一样。通过并行化操作,多个CPU可并行处理系统负载,因为可以更快完成该操作。

         被I/O限制的操作:这类操作花了绝大部分时间等待系统完成I/O操作。当系统中同时出现多个I/O请求时,绝大多数RAID控制器将很好工作。另外,当一个线程需要等待完成I/O操作时,可充分利用CPU来处理另一个线程的CPU部分。

         被竞争限制的操作:并行处理不能改善由资源竞争所限制的操作。

5、应当首先根据如下一些因素考虑并行度:

         计算机的CPU能力:CPU的数量和能力将影响系统能运行的查询进程数量。

         系统处理大量进程的能力:一些操作系统能处理很多并发线程,而另一些操作系统则没有这方面的能力。

         系统负载:如果系统现在的运行已经达到了极限,那么对并行度的调整不会有太大的效果。如果系统运行已达其能力极限的90%,那么大多的查询进程将使系统不堪重负。

         系统处理的查询数量:如果系统的大部分操作是更新操作,但仍有少量的重要查询存在,那么开发人员可能希望系统运行多个查询进程。

         系统的I/O能力:如果磁盘上的数据是分片或是使用磁盘阵列存储的,那么系统能够处理多个并行查询。

         操作类型:系统是否需要处理很多的全表扫描或排序:并行查询服务器非常有助于这类操作。

6、关于并行度的一些建议:

  诸如排序之类的需要大量CPU资源的操作应当使用较低的并行度。其原因是这类受限于CPU的操作已经充分利用的CPU,而不需要等待系统的I/O操作。

  诸如全表扫描之类的需要大量磁盘I/O的操作应当采用较高的并行度。需要等待磁盘I/O的操作越多,系统就越能受益于并行操作。

  如果系统中有大量的并发进程,那么应当采用较低的并行度。因为太多的进程将使系统不堪重负。

7、Oracle同时读取多块数据

  当系统执行表扫描时,oracle具备同时读取多个数据块的能力,这种能力提高了系统的I/O速度。通过同时读取多块数据,oracle能够从磁盘上读取更大的数据块,从而避免了对磁盘上数据进行搜索的操作。通过降低磁盘搜索和读取更大的数据块,可以降低系统的I/O开销和CPU开销。

8、oracle 的分区

分区方案:

  Range Partitioning:这种方案根据数据的范围,比如月、年等对表中的数据进行分区。

  List Partitioning:这种方案和Range Partitioning分区方案很类似,但这种方案是按照数据的值而不是数据的范围来进行分区划分的。

  Hash Partitioning:这种分区方案使用散列函数来实现对数据的自动分区。

  Sub-Partitioning:这种方法就是开发人员熟悉的复合分区方法。这种方法允许开发人员同时使用多种分区方案。

分区有以下几方面的好处:

  对能被分区的大尺寸表进行扫描时,分区可降低I/O操作和CPU的使用率。

  可在分区的层次上而不是表的层次上加载数据。

  能以删除分区的方式删除数据,而不必使用select语句来删除大量数据。

  对用户和应用程序而言,分区是完全透明的。

  可在分区层次上而不是在表层次上维护数据。

9、oracle的多线程服务器

  用户可以通过专用服务器进程连接到oracle实例,也可以通过多线程服务器进程连接到oracle实例。因为每一个专用的服务器进程都将占用大量的内存资源和系统资源,所以有必要对多用户连接采用多线程服务器进程。

  多线程服务器进程允许多个用户使用一定数量的共享服务器进程。共享服务器进程使用共享缓冲池对用户请求进行排队并返回数据,从而大大减少CPU和内存的使用。

10、oracle故障诊断

  数据库故障诊断通过获得系统sql语句执行性能数据,例如每一条sql语句在oracle数据库中执行的平均时间,来识别问题发生位置。

  为了分析故障位置,将故障诊断数据(oracle Diagnostics)与交易执行响应时间(Transaction Response Time)数据关联起来。例如:某交易“enter”的平均响应时间高,使用故障诊断(Oracle diagnostics),就可以查找到是什么原因导致了这个问题。

       

时间: 2024-10-27 12:20:32

系统瓶颈优化的相关文章

系统瓶颈分析

系统瓶颈分析 一.系统瓶颈分析示例 例1: 交易的响应时间如果很长,远远超过系统性能需求,表示消耗CPU的数据库操作,例如排序.执行aggregate functions(例如sam.min.max.count)等较多,可以考虑是否有索引以及索引建立的是否合理:尽量使用简单的表联接:水平分割大表格等方法来降低该值. 例2: 分段排除错误.测试工具可以模拟不同的虚拟用户来单独访问web服务器.应用服务器和数据库服务器,这样就可以在web端测出的响应时间减去以上各个分段测出的时间就可以知道瓶颈在哪并

linux系统瓶颈分析(精)

linux系统瓶颈分析(精) (2013-09-17 14:22:00)   分类: linux服务器瓶颈分析 1.0 性能监控介绍 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,多数管理员相信看一些相关的"cook book"就 可以实现性能优化,通常通过对内核的一些配置是可以简单的解决问题,但并不适合每个环境,性能优化其实 是对OS 各子系统达到一种平衡的定义,这些子系统包括了: CPU Memory IO Network 这些子系统之间关系是相互彼此依赖的,任何一个高负载都

在Load average 高的情况下如何鉴别系统瓶颈

在Load average 高的情况下如何鉴别系统瓶颈.是CPU不足,还是io不够快造成? 或是内存不足? 一:查看系统负载vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0      0 496056

Java秒杀系统方案优化---高性能高并发实战

Java秒杀系统方案优化---高性能高并发实战网盘地址:https://pan.baidu.com/s/1htNv2zq 密码: ssyt备用地址(腾讯微云):https://share.weiyun.com/889808c023b6e9d9f504399a5b07276f 密码:1WaUHB 亮眼的!高并发秒杀系统核心技术 课程以"秒杀"场景为例,但技术都是通用的,举一反三,方得始终应对大并发:多层次多粒度缓存+消息队列异步+服务器分布式部署 专业的压测工具:有依有据,鉴证系统的优化

关于web系统整体优化提速总结

关于web系统整体优化提速总结 一.背景 随着公司业务的拓展,随之而来就是各种系统横向和纵向的增加,PV.UV也都随之增加,原有的系统架构和模式慢慢遇上了瓶颈,需要逐步的对系统从整体上进行改造升级,通过一段时间的整理思路,做一个简单的总结与分享.同时由于能力等方面的不足,如果有什么说的不好之处,还请各位大神多多指点. 二.整体思路 本次调整提示主要从以下几个点进行入手 项目本身架构上:前后端分离.业务系统与管理系统横向拆分.服务接口根据业务流向进行横向拆分.服务接口根据功能单元进行纵向分割: 数

web系统整体优化

关于web系统整体优化提速总结 一.背景 随着公司业务的拓展,随之而来就是各种系统横向和纵向的增加,PV.UV也都随之增加,原有的系统架构和模式慢慢遇上了瓶颈,需要逐步的对系统从整体上进行改造升级,通过一段时间的整理思路,做一个简单的总结与分享.同时由于能力等方面的不足,如果有什么说的不好之处,还请各位大神多多指点. 二.整体思路 本次调整提示主要从以下几个点进行入手 项目本身架构上:前后端分离.业务系统与管理系统横向拆分.服务接口根据业务流向进行横向拆分.服务接口根据功能单元进行纵向分割: 数

Entity Framework 数据并发访问错误原因分析与系统架构优化

本文主要记录近两天针对项目发生的数据访问问题的分析研究过程与系统架构优化,我喜欢说通俗的白话,高手轻拍 1. 发现问题 系统新模块上线后,使用频率较高,故在实际使用和后期的问题重现测试中,产生了一下系列的数据访问错误 错误是比较常见的错误 2. 分析问题 系统的架构为前端.业务层与数据层三层架构,采用Entity Framework 3.5作为数据处理技术,采用shared context per request模式,参照的是codeplex上的一个示例.示例地址(此文通俗易懂,代码结构也很清晰

58沈剑:秒杀系统架构优化思路

有个兄弟分享秒杀系统的优化,其观点有些赞同,大部分观点却并不同意,结合自己的经验,谈谈自己的一些看法. 一.为什么难 秒杀系统难做的原因:库存只有一份,所有人会在集中的时间读和写这些数据. 例如小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万. 又例如12306抢票,亦与秒杀类似,瞬时流量更甚. 二.常见架构 流量到了亿级别,常见站点架构如上: 1)浏览器端,最上层,会执行到一些JS代码 2)站点层,这一层会访问后端数据,拼html页面返回给浏览器 3)服务层,向上游屏

linux系统基础优化

1.Linux系统基础优化 一.关闭SELinux功能 Selinux是什么? 安全工具,控制太严格,生产环境不用它,使用其他安全手段. 简介: SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制. Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Security