dbthink

阅读更多
  • Home 转自http://www.dbthink.com/?paged=5
  • 个人简介

a db thinker's home

An Oracle DBA's thought about DB,Web Architect etc..

Comments Posts
 
 
 
 

文章分类

  • 社会评论 (2)
  • My Reading (28)
  • mysql (6)
  • nosql (24)
  • oracle (50)
    • dataguard (6)
    • Index (6)
    • oracle 11g 新特性 (9)
    • physical design (1)
    • temporary object (1)
  • Translation (31)
  • Uncategorized (11)

最近评论

  • jametong on 最佳字段顺序-数据库物理设计
  • 默默 on 最佳字段顺序-数据库物理设计
  • hoterran on 最佳字段顺序-数据库物理设计
  • 默默 on Index Rebuild Online 过程(9i)完整版
  • jametong on NoSQL生态系统

文章归档

  • March 2011 (1)
  • December 2010 (2)
  • November 2010 (4)
  • September 2010 (4)
  • August 2010 (5)
  • July 2010 (12)
  • June 2010 (8)
  • May 2010 (14)
  • April 2010 (13)
  • March 2010 (20)
  • February 2010 (11)
  • January 2010 (5)
  • December 2009 (4)

Most used Tags

BigTable bloom filter buffer cache CAP cassandra checkpoint commit log dataguard dataguard broker enqueue lock Eventual Consistency Facebook fast_start failover flash cache free buffer waits google file system google gfs hadoop Index index rebuild index rebuild online Jonathan Lewis kernel parameter latency map reduce Memtable mlc mysql new feature nosql Oracle 11g performance plan stability read repair scalability scale-out slc ssd SSTable stored outlines 中组部 可伸缩性 改革 权贵资本主义 架构师

我对NOSQL的一点理解

以下内容主要是看淘宝日照同学的帖子的感想..

日照同学的原文: SQL到NOSQL的思维转变

我个人感觉NoSQL是使用MySQL作为数据库的一个自然的演化..

1. 数据规模与访问规模不断的扩大的过程中,,业务必然会不断的牺牲掉表连接(Decouple),,以及不断的牺牲掉表上的很多复杂特性(ACID)(主要针对Web 应用).
2. 这样慢慢的数据就变成了单纯的基于主键的查询,,只不过可能是多个字段,,但是由于MySQL本身对于ddl的限制(或者说较弱的在线DDL处理能力), 后面就出现两个不同方向的演化.
a. 每条记录演化成简单的Key/Value/Timestamp. 也就是走KV Engine的道路来提高整个系统的可扩展性并降低复杂度.
b. 使得系统可以动态的增加新的列(no-schema,比如MongoDB,CouchDB,Cassandra,BigTable). 以把开发以及DBA从复杂的数据迁移/DDL中解放出来.
3. 由于数据之间的耦合性都去掉了,,后面使用Consistent Hash 以及其它的Replication,Failure Detector来解决解耦之后的业务数据就成为了新的话题..

以上这三步走完,,差不多就是我们现在看到的NoSQL的主要景象了.

2010年存储领域的收购案

主要信息来自 3PAR, Isilon buyouts lead 2010 data storage technology acquisitions
1. HP 以23.5亿美元收购3Par.
3par存储这几年发展迅猛,在国内的业务做的也是非常好,做Oracle的兄弟应该也都比较清楚,它主要是在存储端实现了类似于Oracle的ASM(Automatic Storage Management)类似的软件,可以以256MB为chunk单元来将数据做打散以及以及镜像,从而大大提高了存储上磁盘的IO并行效率..以赢得相对于EMC/HDS等传统存储厂商的部分市场份额..EMC在新版本的存储中也强化了类似的特性.

可参考张瑞的博客文章.
写在3par被收购之后
我看3par
3par存储架构解析

2. EMC 以22.5亿美元收购Isilon.
Isilon 是一家基于普通的硬件来生产基于云的NAS存储的厂商, 其在NAS领域的创新活动一直比较频繁,近年也在积极的引入SSD以解决传统NAS存储的Cache不足导致的处理能力不足的问题..

Isilon OneFS adds tiering, analytics to scale-out NAS operating system

3. Dell 以 8.2亿美元手工Compellent.
Compellent 是较早实现分层存储,以及动态数据迁移的存储厂商之一, 我去年曾与陶毅一起跟Complellent的技术人员进行过交流, 他们的存储可以较为充分的利用现有不同的磁盘的特性,来满足用户数据的多方面的需求, 该存储同时支持使用SSD/SAS/SATA存储,并根据数据的访问热度调整数据在不同级别的磁盘之间的存放,从而最大化利用磁盘的空间能力与IOPS访问能力..

4. Vision Solutions以2.42亿美元收购Double-Take,,这两家存储厂商我都不了解,不做评论.

5. Dell 以1.5以亿美元收购Ocarina Networks公司,Ocarina Networks主要是做数据deduplication,也即类似于EMC之前收购的DataDomain产品..

6. IBM以1.4亿美元收购Storwize,Storwize 主要技术是对数据进行压缩处理,起始于上面的Ocarina 的技术类似.

7. netapp 收购Bycast,

8. EMC收购Greenplum, Greenplum 是基于PostGreSQL与MapReduce算法实现的数据仓库软件,EMC此举被业内一致认为是针对Oracle的Exadata. 也即利用廉价的PC服务器与软件集成来与目前的高端存储在特定领域进行竞争.

9. Quest公司以5500万美元手工Bakbone, Bakbone是一款备份软件, 可以高效的与虚拟带库进行集成,管理也比较方便,,鄙人有过1年左右的粗泛的使用经验..:-)

10. SolarWinds 以4200万没有手工Tek-Tools ,,这两个东西都没有听说过,,:-(

豆瓣的崔卫平小组终于解散

豆瓣的崔卫平小组终于解散,,纪念下.

崔卫平小组已被解散

  尊敬的用户:
  
  作为一家在中国境内运营的网站,豆瓣遵守中国的法律法规和相关政策的要求。( 相关法律法规,请参考《互联网信息服务管理办法》http://www.cnnic.net.cn/html/Dir/2000/09/25/0652.htm 第十五条。)
  
  你参与的小组 http://www.douban.com/group/cuiweiping/ 因讨论主题属于社区指导原则不允许、不欢迎的内容,已被解散。
  
  由此给你带来的不便,我们深表歉意,并感谢你的理解和配合。
  
  附 社区指导原则:http://www.douban.com/about?policy=guideline
  
  ——豆瓣

分页、内存和 I/O 延迟

英文原文:  Paging, Memory and I/O Delays
中文原文: 分页、内存和 I/O 延迟

编者注:这是讨论 AIX 调优的两篇系列文章的第一篇。第一部分讨论分页、内存和 I/O 延迟,第二部分主要关注磁盘 I/O 和网络。

几年前我写了一篇关于 AIX 调优的文章,现在 AIX 7 出现了,所以有必要重新审视需要在 AIX 系统上执行的基本调优措施。已经发布的许多技术级别 (TL) 和一些建议可能会改变。在本文中,我将提供与 AIX 5.3、6.1 和 7 中的可调项相关的 AIX 调优信息。

我主要关注 I/O、内存和网络。在默认情况下,AIX 6 和 7 在内存调优方面做得相当好,只需要做几个小调整。但是,AIX 5.3 在这个方面需要更多调优。图 1 给出不同的可调项及其默认设置。第四栏是对于这三个版本最新的 TL 的这些设置的推荐值。
图 1.不同可调项及其默认设置
dbthink_第1张图片

请记住一个要点:在安装全新的 AIX 6 或 7 时,会自动地设置新的内存可调项默认值。如果是从 AIX 5.3 迁移系统,那么在 AIX 5.3 中设置的所有可调项会随同迁移。在执行迁移之前,建议记录已经修改的所有可调项(取得 /etc/tunables/nextboot 的拷贝),然后把可调项恢复为默认值。在迁移之后,检查 nextboot 并确保其中没有任何内容。现在,讨论需要为 AIX 6 或 7 修改的可调项。

分页空间

最佳实践建议在不同的不太忙的硬盘驱动器 (hdisk) 上配置多个相同大小的分页空间。所有分页空间应该建立镜像,或者放在 RAID(1 或 5)存储区域网络 (SAN) 上。除非数据库需要,分页空间一般不需要达到内存量的两倍。我曾经在 AIX 上用 250 GB 内存和三个 24 GB 的分页空间运行大型 Oracle 数据库。关键是使用并发 I/O (CIO) 等技术避免分页,提供分页空间是为了以防万一需要分页。

在默认情况下,AIX 在 rootvg 中创建一个分页空间 (hd6),它太小了。如果 rootvg 被镜像,那么这个分页空间也会被镜像。我通常使用几个来自 SAN 的自定义大小的逻辑单元号 (LUN) 添加额外的分页空间。不要在当前 rootvg 分页空间所在的内部磁盘(或 SAN LUN)中添加分页空间。在相同的 hdisk 上配置多个分页空间会降低分页速度。

在构建虚拟 I/O 服务器 (VIOS) 时,会自动地配置两个分页空间,它们都在 hdisk0 上。hd6 是 512 MB,paging00 是 1,024 MB。我总是关闭并删除 paging00,然后把 hd6 增加到 4,096 MB。正如前面提到的,在相同的 hdisk 上配置两个分页空间是不好的做法。


页面偷取方法

在 AIX 5.3 的默认设置中,page_steal_method 设置为 0。这影响最近最少使用守护进程 (least recently used daemon LRUD) 扫描可释放页面的方式。设置 lru_file_repage=0 意味着强烈建议 LRUD 不偷取可执行代码的页面,总是尝试偷取文件系统(持久)页面。偷取持久页面比偷取工作存储页面代价低得多,因为后者会导致换出/换入页面。假设使用 100 GB 内存和五个内存池,内存会划分为五个大约 20 GB 的池,每个 LRUD 处理大约 20 GB(这是非常简化的描述)。根据图 2 中的 numclient 值,可以假设大约 45% 的内存用于文件系统,即大约 45 GB;另外的 55 GB 是工作存储。
图 2.vmstat 输出
dbthink_第2张图片

如果设置 page_steal_method=0,在寻找空闲页面时 LRUD 不得不扫描它们控制的所有内存页面,尽管很可能只释放持久页面。如果设置 page_steal_method=1,LRUD 会改用基于列表的页面管理方案。这意味着 LRUD 把内存划分为一个持久页面列表和一个工作存储页面列表。当 LRUD 搜索可从文件系统缓存中释放的页面时,它们只搜索持久页面列表。对于图 2 中的示例,这应该会把扫描可释放页面的速度提高一倍多,这会降低开销。在“vmstat -I 2 2”的输出中可以看到扫描速度和空闲率。


内存和 I/O 缓冲区

在探索最佳内存设置时,有几个命令很有用,尤其是 vmstat -v。图 2 显示 vmstat -v 的部分输出。

在内存中有两类页面:持久页面(与文件系统关联)和工作存储或者说动态页面(包含可执行代码及其工作区)。如果偷取持久页面,就不需要换出页 面,除非页面被修改过(在这种情况下,把它写回文件系统)。如果偷取工作存储页面,就必须先把它写到分页数据集,下一次需要它时再从分页数据集读回来;这 是开销很大的操作。

设置 minperm%=3 和 lru_file_repage=0 意味着,强烈建议 LRUD 在文件系统正在使用超过 3% 的内存的情况下总是尝试偷取持久页面。LRUD 在大多数情况下忽略最大设置,除非是要限制文件系统可以使用的内存量。maxperm% 指所有持久页面,包括日志文件系统 (JFS)、网络文件服务器 (NFS)、Veritas File System (VxFS) 和增强型日志文件系统 (JFS2)。maxclient% 是其中的子集,只包括 NFS 和 JFS2 文件系统。maxperm% 是软限制,maxclient% 是硬限制(而且不能超过 maxperm%)。因为新的文件系统通常是 JFS2,应该把最大设置保持在 90%,以免意外限制文件系统使用的内存量。

在 vmstat -v 的输出中,有几个指标有助于判断要调整哪些值。在图 2 中,可以看到 numperm 和 numclient 是相同的,都是 45.1%。这意味着 NFS 和/或 JFS2 文件系统正在使用 45.1% 的内存。如果这是一个数据库系统,我会检查是否正在使用 CIO,因为它可以消除双重页面存储和处理,从而降低内存和 CPU 使用量。

在构建 I/O 请求时,逻辑卷管理程序 (LVM) 请求一个 pbuf,这是固定的内存缓冲区,它保存 LVM 层中的 I/O 请求。然后把 I/O 放到另一个称为 fsbuf 的固定内存缓冲区中。有三种 fsbuf:文件系统 fsbuf(供 JFS 文件系统使用)、客户机 fsbuf(由 NFS 和 VxFS 使用)和外部分页程序 fsbuf(由 JFS2 文件系统使用)。另外,还有 psbuf,它们是对分页空间的 I/O 请求所用的固定内存缓冲区。

在图 2 中,vmstat -v 命令显示的值是自引导以来的平均值。因为服务器可能很长时间不重新引导,所以一定要间隔几小时取两个快照,检查这些值是否有变化。在这里,它们快速增长,需要调优。


I/O 延迟

在 vmstat -v 的输出中,有几个表示存在 I/O 延迟的迹象。I/O 延迟会影响性能和内存。下面介绍识别 I/O 阻塞的原因和解决问题的一些常用方法。

1468217 pending disk I/Os blocked with no pbuf 这一行清楚地说明一个或多个未完成的磁盘 I/O 在试图获得固定内存缓冲区(具体地说是 pbuf)时被阻塞了。这表明在 LVM 层上出现排队。因为 AIX 无法获得缓冲区以存储 I/O 请求的信息,导致请求被延迟。使用下面的 lvmo 命令应该可以解决这个问题。
图 3. lvmo –a 输出
dbthink_第3张图片

图 3 给出 lvmo -a 命令的输出,它表明 datavg 的 pbuf 不足(查看 pervg_blocked_io_count)。应该只对正在使用的这个卷组纠正此问题,因为这些是固定的内存缓冲区,把它们设置得过大是没有意义的:

lvmo -v datavg -o pv_pbuf_count=2048

通常,我会检查当前设置,如果它是 512 或 1024,那么在需要增加时把它提高一倍。

11173706 paging space I/Os blocked with no psbuf 。lvmo 命令还表明 rootvg 中的 pbuf 有问题。看一下 vmstat -v 的输出,会发现有大量分页空间 I/O 请求由于无法获得 psbuf 被阻塞。psbuf 用于在虚拟内存管理程序 (VMM) 层上保存 I/O 请求,缺少 psbuf 会严重影响性能。它也表明正在执行分页,这是问题。最好的解决方法是停止导致分页的东西。另一种方法是增加分页空间。

39943187 file system I/Os blocked with no fsbuf 。在默认情况下,系统只为 JFS 文件系统提供 196 个 fsbuf。在 JFS2 之前,需要大大提高这个限制(常常增加到 2048),从而确保 JFS I/O 请求不会由于缺少 fsbuf 在文件系统层上被阻塞。即使在系统中没有 JFS 的情况下,有时候也会见到阻塞的 I/O 请求达到 2,000 个左右。但是,上面的数字表明在系统中有大量 JFS I/O 被阻塞,在这种情况下我会调整 JFS 并尝试和计划转移到 JFS2;在 JFS2 中,可以对数据库使用 CIO 等技术。在 AIX 6 和 7 中,numfsbufs 现在是 ioo 命令中的受限制参数。

238 client file system I/Os blocked with no fsbuf 。NFS 和 VxFS 都是客户机文件系统,这一行是指在文件系统层上由于缺少客户机 fsbuf 被阻塞的 I/O 数量。要想解决此问题,需要进一步研究,查明这是 VxFS 问题还是 NFS 问题。

1996487 external pager file system I/Os blocked with no fsbuf 。JFS2 是外部分页程序客户机文件系统,这一行是指在文件系统层上由于缺少固定内存 fsbuf 被阻塞的 I/O 数量。在以前,调整 j2_nBufferPerPagerDevice 可以解决此问题。现在,通过使用 ioo 命令提高 j2_dynamicBufferPreallocation 来纠正 JFS2 缓冲区。默认设置是 16,在尝试减少这些 I/O 阻塞时,我通常会慢慢提高它(试一下 32)。


其他内存可调项

vmo 命令中的 minfree 和 maxfree 可调项也会影响分页。它们现在是针对各个内存池设置的,可以使用几个命令之一查明有多少个内存池。根据版本或 TL 不同,应该使用 vmo -a、vmo -a -F(对于 6.1)或 vmstat -v 获取此信息。

如果这些值设置得过大,可能会看到 vmstat 输出中“fre”栏中的值很高,而同时却在执行分页。默认设置是 960 和 1,088;根据其他设置,我通常使用 1,000 和 1,200。minfree 和 maxfree 的正确计算方法取决于 j2MaxPageReadAhead 的设置、逻辑 CPU 数量和内存池数量。

在这里,假设 vmstat 显示有 64 个逻辑 CPU (lcpu) 和 10 个内存池。当前设置为默认值,即 minfree=960 和 maxfree=1088。J2_maxPageReadahead=128。对于这些设置,计算过程如下:

Min=max(960,((120*lcpu)/mempools)

Max=minfree + (max(maxpgahead,j2MaxPageReadahead)*lcpu)/mempools)

lcpu 为 64,mempools 为 10,j2_MaxPageReadahead 为 128,因此:

Min=max(960,((120*64)/10) = max(960,768)=960

Max=960+((max(8,128)*64)/10) = 960+819=1780

我可能会把结果向上取整到 2,048。每当修改 j2_maxPageReadahead 时,应该重新计算 maxfree。在这里,我保持 minfree 为 960,但是把 maxfree 提高到 2,048。

更多调优技巧

现在,您应该掌握了如何探测和解决与分页、内存和 I/O 延迟相关的 AIX 性能问题。下一部分,我将讨论磁盘 I/O 和网络。

磁盘 I/O 和网络

原文: 磁盘 I/O 和网络

请记住一个要点:在安装全新的 AIX 6 或 7 时,会自动地设置新的内存可调项默认值。如果是从 AIX 5.3 迁移系统,那么在 AIX 5.3 中设置的所有可调项会随同迁移。在执行迁移之前,建议记录已经修改的所有可调项(取得 /etc/tunables/nextboot 的拷贝),然后把可调项恢复为默认值。在迁移之后,检查 nextboot 并确保其中没有任何内容。现在,讨论需要为 AIX 6 或 7 修改的可调项。

磁盘 I/O

许多最常见的性能问题与 I/O 问题相关。尤其是,与管理员可以设置的任何 I/O 可调项相比,数据布局对性能的影响更大。因为以后更改数据布局非常困难,所以通过提前计划避免这些问题是很重要的。

目前的行业趋势是为服务器配置更少但更大的 hdisk。例如,服务器可能配置一个 500 GB 的 hdisk,它分散在磁盘子系统中的几个磁盘上,而不是配置 10 个 50 GB 或 5 个 100 GB 的磁盘。但是,I/O 性能取决于带宽而不是大小。即使数据分散在后端的多个磁盘上,这对于前端的 I/O 排队问题也没有帮助。在服务器上,hdisk 驱动程序有一个正在处理队列和一个等待队列。在 JFS2 缓冲区中建立 I/O 时,它排队访问 LUN (hdisk)。hdisk (LUN) 的 queue_depth 表示它在任何时刻能够承担的 I/O 数量。

hdisk 的正在处理队列可以包含最多 queue-depth 个 I/O,hdisk 驱动程序把这些 I/O 提交给适配器驱动程序。这为什么很重要?如果 LVM 把您的数据分散在 5 个 hdisk 上,那么就可以同时处理更多 I/O。对于单一大 hdisk,就要排队。子系统设备驱动程序 (subsystem device driver,SDD) 等多路径 I/O 驱动程序向 hdisk 提交的 I/O 不会多于 queue_depth 个,这会影响性能。需要提高 queue_depth 或者禁用此限制。在 SDD 中,使用 “datapath qdepth disable” 命令。

一些厂商在 queue_depth 设置方面做得比较好,但是如果要使用后端中多个磁盘上的大量逻辑单元,仍然需要提高设置。可以使用 iostat -D 或 sar -d 命令检查排队情况。交互式 nmon 也有 -D 选项,可以用它监视 sqfull。如果使用 sddpcm,那么可以使用 “pcmpath query devstats” 监视 sqfull,使用 “pcmpath query adaptstats” 监视适配器排队。

尤其是要查看 avgsqsz、avgwqsz 和 sqfull 字段,以此判断是否需要提高 queue_depth。不要把 queue_depth 提高到超过磁盘厂商建议的范围。lsattr -El hdisk? 显示当前的 queue_depth 设置。修改 queue_depth 之后需要重新引导。

对于 Fibre Channel,适配器也有正在处理队列,可以包含最多 num_cmd_elems 个 I/O。适配器把这些 I/O 提交给磁盘系统并使用直接内存访问 (DMA) 执行 I/O。可能应该考虑修改适配器上的两个设置。在默认情况下,num_cmd_elems 设置为 200,max_xfer_size 设置为 0×100000。后者相当于 16 MB 的 DMA 大小。对于沉重的 I/O 负载,我会把 DMA 提高到 0×200000 (128 MB) 并把 num_cmd_elems 设置为 2,048,但是我一般先设置为 1,024。这必须在分配 hdisk 之前完成,否则必须删除它们才能设置这些值。lsattr -El fcs? 显示当前设置。修改这些设置之前,请咨询您的磁盘厂商。可以使用 fcstat 命令监视这些设置。应该查看以下条目:

FC SCSI Adapter Driver Information
  No DMA Resource Count: 0
  No Adapter Elements Count: 2567

No Command Resource Count: 34114051

在上面的输出中可以看出 num_cmd_elems 不够高,DMA 区域也需要增加。修改这些设置之后需要重新引导。

在使用 VIO 服务器时,应该在 VIO 服务器上设置 max_xfer_size 和 num_cmd_elems;如果使用 N_Port ID Virtualization (NPIV),还需要在 NPIV 客户机 LPAR 上设置它们。在 NPIV 客户机 LPAR 上设置的值不要高于 VIO 服务器;我这样做过并导致我的 LPAR 无法引导,因此这么做肯定是超越限制了。


卷组和文件系统

正确地设置 Fibre-Channel 卡和 hdisk 之后,应该查看卷组、逻辑卷 (LV) 和文件系统的设置。我尽量使用包含多个磁盘的少量卷组,因为这样可以更灵活方便地使用镜像技术转移文件系统。这让我可以在不停机的情况下在磁盘之间转移文 件系统。我见过每个文件系统一个卷组的设置,这对解决性能问题时的灵活性没好处。


异步和并发 I/O

异步 I/O (AIO) 是在 OS 级上设置的,Oracle 需要知道已经配置了 AIO。AIO 用于提高原始 LV 和文件系统的 I/O 性能。在 AIX 5.3 和 AIX 6.1/7 上设置 AIO 的方法不一样。在 5.3 上,使用 chdev 设置三个参数:minservers、maxservers 和 maxreqs。在 6.1 和 7 上,使用 ioo。如果在 6.1/7 系统上执行 “ioo -a | grep aio”,就会看到新的参数。使用 “iostat -A” 命令收集统计数据。可以通过这些数据看出正在使用多少个 AIO。另外,如果看到 maxg 接近 maxreqs,那么应该提高 maxreqs。

在 6.1 和 7 上,现在默认装载 AIO 修改和子系统。aio0 设备和新的 aioo 命令取消了。另外,在默认情况下启用 AIO,需要调整的值通常只有 aio_maxservers 或 posix_aio_maxservers 选项。这用 ioo 命令来设置。

并发 I/O (CIO) 是 JFS2 采用的 AIX 特性,它绕过缓冲区缓存,可以减少双重缓冲(即把 I/O 存储到内存中,然后复制到应用程序缓冲区中)。CIO 还会取消写操作期间文件系统的 inode 锁,所以应该只在由应用程序负责数据序列化的情况下使用它。对于 Oracle,这意味着应该对 DataBase file (DBF)、重做日志、控制文件和 flashback 日志文件使用 CIO。对于 Oracle 二进制代码或存档日志文件不应该使用它。对于混合型或随机访问的工作负载,使用 CIO 会对内存使用量(减少分页)、CPU 使用率(不再在两个内存位置之间复制内存页面)和总体性能产生显著影响。但是,因为它绕过提前读取,顺序操作的性能可能不好。


网络

在图 1 中,提供对设置网络可调项的建议。这些建议针对 Gbit 网卡。在 netstat -v 输出中,寻找溢出和内存分配失败等错误。例如,如果出现 “Software Xmit Q Overflows”,就说明数据包溢出适配器上的传输队列。溢出的另一个迹象是数据包由于内存分配失败被丢弃。要想查明调用的传输队列,需要运行 “lsattr -El ent0″(或 ent1 ….)命令。这个字段从 AIX 5.3 到 6 到 7 一直在增加,还因适配器是 100 Mb、1Gb 或 10Gb 而异。
图 1. 网络可调项的建议
dbthink_第4张图片

在设置网络可调项时,应该使用 no 执行全局设置,但是还需要检查各个适配器,因为系统可以覆盖全局设置。使用 “ifconfig -a” 检查设置的网络参数是否被覆盖了。如果 ifconfig 输出中的值比较小,那么考虑使用 ifconfig 把它们设置为新的值。

另一个要考虑的网络可调项是 tcp_nodelay,它在默认情况下是禁用的。对于只发送很少的数据并等待响应的请求/响应工作负载,这会造成很长的延迟。TCP 实现延迟的确认,因为它期望通过响应数据包发送回 TCP 确认。这个延迟通常为 200 ms。为了减少这个延迟,应该启用 tcp_nodelay。使用 no 命令启用它。


收集性能数据

我多年使用 nmon 收集历史性能数据并监视系统。现在,nmon 已经集成在系统中了,所以我使用 IBM 提供的 nmon 并在每天午夜启动一个新的 cron 作业。它运行的脚本包含以下代码:

#!/bin/ksh
#
cd /usr/local/perf
/usr/bin/nmon -ft -A -M -L -^ -s 150 -c 576
#

上面的脚本收集 24 小时的系统信息,包括 AIO、大页面和最忙的进程。然后可以下载产生的 .nmon 文件,使用 nmon analyzer、nmon consolidator 和其他许多工具(包括 rrd)处理数据。


简单的修改,重大的影响

AIX 6 和 7 大大减少了需要关注的内存可调项数量。但是,仍然需要注意 I/O 缓冲区、总体 I/O 和网络调优。简单的修改可能对系统产生重大的影响,所以应该全面测试再投入生产,但是在许多情况下上面提供的建议应该有助于提高性能。

RSS订阅


    抓虾订阅
    Google Reader 订阅

Recent Posts

  • 我对NOSQL的一点理解
  • 2010年存储领域的收购案
  • 豆瓣的崔卫平小组终于解散.
  • 分页、内存和 I/O 延迟(转载)
  • 磁盘 I/O 和网络(转载)
  • 分区表操作update global indexes涉及到的表锁
  • 数据科学家的七个秘密武器.
  • MySQL系统的一个异常错误
  • Tanel Poder的两篇ppt以及其它
  • Linux环境下的Oracle数据库常用内核参数介绍

Copyright © 2011 a db thinker's home - All Rights Reserved
Powered by WordPress & the Atahualpa Theme by BytesForAll. Discuss on our WP Forum

  • Home
  • 个人简介

a db thinker's home

An Oracle DBA's thought about DB,Web Architect etc..

Comments Posts
 
 
 
 

文章分类

  • 社会评论 (2)
  • My Reading (28)
  • mysql (6)
  • nosql (24)
  • oracle (50)
    • dataguard (6)
    • Index (6)
    • oracle 11g 新特性 (9)
    • physical design (1)
    • temporary object (1)
  • Translation (31)
  • Uncategorized (11)

最近评论

  • recentcomment
Global site tag (gtag.js) - Google Analytics

你可能感兴趣的:(AIX,Oracle,NoSQL,MySQL,网络应用)