高并发高负载情况下常见的3种性能问题

标签: 并发 负载 常见 | 发表时间:2014-12-10 16:18 | 作者:lyj33
出处:http://www.iteye.com
这篇blog是基于处理oracle数据库性能问题的经验写就,它是对常见的性能问题做的总结,它的适用范围: 高并发高负载的系统. 需要先申明的是: 对于所有的调优的方法,都是有适用范围的; 所以下面提到的所有的内容,请” 批判性”阅读.

1. OS swapping/paging 引发的数据库concurrency方面的性能问题



Oracle数据库在工作的时候, 对于latch/mutex这样的轻量级的”锁”,我们期望它是可以非常快的获取/释放的(这些操作都是对内存的操作,而内存的操作正常时候也确实都是很快的). 但是如果OS发生了大量的swapping/paging的情况下,那么对内存的操作会变慢,那么latch/mutex的操作就会变慢,在并发大的情况下就会发生hung/slow的情况.



引发swapping/paging的常见情况有:

a). 内存短缺

b). 内存并不短缺; 但短时间内, 有大量的新进程分配了很多内存

c). 拷贝大文件/备份数据库 使得操作系统的高速文件缓存突然激增



对应的调优方式:

Lock SGA, 这样SGA(相应的latch/mutex)就会被pin在内存里而不受swapping的影响.

如果在SGA很大的情况下,同时使用large page(hugepage)技术,减少latch/mutex获取/释放的时间.



2. SGA resizing引发的数据库性能问题

在AMM/ASMM内存自动管理的机制下, shared pool和buffer cache及其它几个component可以根据需要自动调整大小,避免ora-4031的错误.但是在高并发的情况下,短时间内频繁的resize的过程会使得一些内存操作(如latch/mutex的获取释放)的时间变长, 有很大几率触发各种latch/mutex争用. 而且如果shared pool被resize时减少的太多,那么latch/mutex的争用也会加剧.


引发这种问题的原因:

有些是因为bug; 但是从深层次的角度考虑,这种resize的操作不可避免的会对性能有影响,只是影响的程度不同罢了. 而且bug的fix也只是减缓这种操作的impact, 而不能完全避免这种影响.

推荐的调优方式:

1). 设置buffer cache和shared pool的值(在内存自动管理的情况下,这个值会作为最小值)

2). 设置resize的频率不能少于16分钟

alter system set "_memory_broker_stat_interval"=999;


Disable AMM/ASMM也可以作为一个方法,但是缺点是: 碰到ora-4031的几率会比自动内存管理大.



3. DDL引发的数据库性能问题

这种情况只发生在高并发高负载的情况下.

对于一个使用频繁的表做DDL (比如grant, 修改表定义, 收集统计信息等等),那么用到这个表的所有的SQL语句都会被invalidate掉;如果使用这个表的SQL语句很多并且执行频率很快,那么在短时间内需要hard parse 的 SQL语句就会很多. 这就变成了一种 “hardparse storm”, latch/mutex的争用就不可避免, 还有library cache lock/row cache lock也会变多; 严重的时候数据库就会slow/hung.


推荐的调优方式:

不要在负载高的时间段做DDL

案例:
记得有一次一个系统遇到严重的内存换页,但是物理内存还是有很大的空闲。

后面查到的原因是,未对操作系统oracle做使用内存最大的配置
即未在/etc/security/limits.conf中配置
oracle hard memlock ×××
oracle soft memlock ×××
,导致oracle用户只能使用默认的32k内存,从而当一些job启动,跑一些统计分析的脚本时,出现大量的内存换页。

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [并发 负载 常见] 推荐:

高并发高负载情况下常见的3种性能问题

- - Oracle - 数据库 - ITeye博客
这篇blog是基于处理oracle数据库性能问题的经验写就,它是对常见的性能问题做的总结,它的适用范围: 高并发高负载的系统. 需要先申明的是: 对于所有的调优的方法,都是有适用范围的; 所以下面提到的所有的内容,请” 批判性”阅读. OS swapping/paging 引发的数据库concurrency方面的性能问题.

常见负载均衡器禁(启)用成员汇总[原创]

- RobinsonNie - 运维进行时
       在我们日常运维工作中,经常会碰到负载均衡器后端应用代码更新、临时剔除后端服务器、排查一主机应用故障等,往往我们会选择比较粗鲁的做法,直接停止或重启应用服务,让负载均衡器探测服务不可用将其剔除. 这样带来的坏处是用户与服务器已经建立的连接会被中止,开发人员无法对已经停止服务的主机进行调试.

常见分布式负载均衡工具介绍nginx lighttpd haproxy

- - 互联网 - ITeye博客
       在架构系统的时候,通常会涉及到分布式,而处分布式里面最前端的是负载均衡器(当然还有cdn). 在网上搜寻一份,对目前常见的负载均衡器做一些介绍和常见组合,不涉及具体配置. 第一种是常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;.

java处理高并发高负载类网站的优化方法

- - 企业架构 - ITeye博客
转:http://blog.csdn.net/zxl333/article/details/8685157. java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据). 一:高并发高负载类网站关注点之数据库. 没错,首先是数据库,这是大多数应用所面临的首个SPOF.

糖尿病常见并发症风险降低73%!华科大最新研究:做好这3件生活小事

- - 领研 | 论文「」
外周动脉疾病影响全球超过2亿人,是造成下肢截肢的主要原因. 2型糖尿病患者发生外周动脉疾病的风险是一般健康人群的2~4倍. 因此, 确定能够预防或延缓糖尿病患者外周动脉疾病发生的有效措施具有重要的公共卫生意义. 然而,综合生活方式能否以及在多大程度上可降低2型糖尿病患者的外周动脉疾病发生风险尚不清楚.

HTTP负载测试

- - 博客 - 伯乐在线
英文原文: ON HTTP LOAD TESTING 来源: oschina. 有很多人在谈论HTTP服务器软件的性能测试,也许是因为现在有太多的服务器选择. 这很好,但是我看到有人很多基本相同的问题,使得测试结果的推论值得怀疑. 在日常工作中花费了很多时间在高性能代理缓存和源站性能测试方面之后,这里有我认为比较重要的一些方面来分享.

nginx负载均衡配置

- - 开心平淡对待每一天。热爱生活
  使用负载均衡的话,可以修改配置http节点如下:. #设定http服务器,利用它的反向代理功能提供负载均衡支持. #设定mime类型,类型由mime.type文件定义. #省略上文有的一些配置节点. #设定负载均衡的服务器列表. #weigth参数表示权值,权值越高被分配到的几率越大. server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口.

解析nginx负载均衡

- - 搜索研发部官方博客
摘要:对于一个大型网站来说,负载均衡是永恒的话题. 随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP、Citrix NetScaler、Radware等等,虽然可以解决问题,但其高昂的价格却往往令人望而却步,因此负载均衡软件仍然是大部分公司的不二之选. nginx作为webserver的后起之秀,其优秀的反向代理功能和灵活的负载均衡策略受到了业界广泛的关注.

Haproxy+KeepAlived 负载均衡

- - CSDN博客系统运维推荐文章
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现. LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. 还可以使用nginx来实现,不过nginx只工作在7层网络之上. 详细请参考 抚琴煮酒写的“ 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比”这篇文章,简单很详细,很好.

lvs+keepalived 负载均衡

- - CSDN博客系统运维推荐文章
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡. LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器. 目前有三种IP负 载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh).