AIX网络性能优化简介

时间:2022-09-21 17:16:01

在AIX 中,网络性能的优化可从以下几方面进行:

网络内存(network memory)的调整

socket 缓冲区 (socket buffer) 的调整

网络接口(network interface)参数的调整

网络适配器 (network adapter) 上发送/接收队列的调整

名字解析(name resolution) 的查找顺序。

1.网络内存的调整

AIX中参数 thewall 的值限定了系统中最多有多少物理内存可被网络缓冲区使用。但在AIX5L中 thewall 的值是无法修改的,是在系统启动时就确定的:

32-位核心 – thewall 取值为 1/2 物理内存 与 1GB 中的最小值,即最大为1GB。

64-位核心 – thewall 取值为 1/2 物理内存 与 65GB 中的最小值,即最大为65GB。

如果 netstat –m  命令结果显示缺少mbuf --- “rewuests for mbufs denied” 的值非0 。

# netstat -m

2434 mbufs in use:

2432 mbuf cluster pages in use

10336 Kbytes allocated to mbufs

0 requests for mbufs denied

0 calls to protocol drain routines

0 sockets not created because sockthresh was reached

Kernel malloc statistics:

******* CPU 0 *******

By size  inuse   calls failed delayed free hiwat freed

32         172   426280     0     0        84  1440    0

64          84   2418        0     0        44   720    0

128        103   881463     0     0       313   360   17

。。。

使用下述方法之一调整网络内存:

a.       如果是32位核心,并且内存小于2GB,增大系统内存。

b.       如果是64位核心,并且内存小于65GB,增大系统内存。

c.       如果可能,将32位核心改成64位核心,增大系统内存。

d.       检查socket 的发送/接收缓存区的大小,以确定是否可将其减小。

e.       是否有mbuf的泄漏现象。

2. socket 缓冲区 (socket buffer) 的调整

TCP  Socket 的发送缓冲区(send buffer)是用于暂时存放应用的数据的区域。缓冲区的大小是由 no 参数 tcp_sendspace 来定义的,在用户应用中使用系统调用 setsockopt() 可以覆盖此参数的定义。为了保证使网络的吞吐量的平稳,常规将tcp_sendspace 值设成MTU的 10倍以上 。

使用 netstat –i 可以查出每一网络接口的MTU 值:

$ netstat -i

Name  Mtu   Network     Address            Ipkts      Ierrs    Opkts   Oerrs  Coll

en0   1500    link#2      0.2.55.4f.4.bf        378329     0     411094    0    0

en0   1500    9.181.48.64  atstrs              378329     0     411094    0    0

lo0   16896   link#1                         375205     0   375243      0     0

lo0   16896   127         loopback           375205     0   375243      0     0

lo0   16896 :   :1                            375205     0   375243      0     0

Tcp scoket的接收缓冲区(receive buffer)是用于接收来自于网络上的数据的区域,收到数据包后要给发送方回送确认信息(ACK),同时告诉发送方本地的接收缓冲区中还有多少空间,若没有足够的空间存放新数据,则发送方就暂停发送新数据,直到接收方能再接收为止。接收缓冲区的大小由tcp_recvspace 设定,常规将tcp_recvspace 值设成MTU的 10倍以上 。可根据应用的需要来调整此参数。

对于socket buffer 还有 udp_sendspace, udp_recvspace 这两个参数,用于UDP协议。由于没有流量控制功能,udp_recvspace 太小会引起数据包的丢失。

系统中 tcp_sendspace, tcp_recvspace 的缺省值是 16384, udp_sendspace 是 9216, udp_recvspace 是41600。

注意: 系统中全部scoket 所用的内存不能大于 sb_max 所设定的值。

查看当前tcp_sendspace 和 tcp_revcspace 的值:

$ no –o tcp_sendspace

$ no –o tcp_revcspace

设置 socket buffer 的值, 直到下次重启:

$no –o tcp_sendspace=32768

$no –o tcp_recvspace=32768

设置 socket buffer 的值, 下次重启仍有效:

$no –r –o tcp_sendspace=32768

$no –r –o tcp_recvspace=32768

3.网络接口(network interface)参数的调整

在AIX5以前,网络参数的定义在整个系统范围内有效,所有网络接口使用统一的定义,无法为特定的网络接口单独设定值。

在AIX5 中 TCP socket 的 发送/接收缓冲区的尺寸、rfc1323(调整窗口值)、tcp_mssdflt(调整 maximum transmission size)和tcp_nodelay (是否立刻转发数据包)网络参数可在网络接口上进行定义。 在接口上定义的值覆盖系统上统一定义的值,应用中setsockopt() 系统调用设定的值也能覆盖系统的统一定义。

在为特定的网络接口调整参数时,要将 isno (Interface Specific Network Options) 设为1:

#no –r –o isno=1

a. 若只是临时修改,可用 ifconfig 命令:

#ifconfig en0 ip_lable tcp_recvspace 65536 tcp_sendspace 65536.

b. 使用chdev 命令来修改参数,如:

#chdev –l en0 –a tcp_recvspace=65536 –a tcp_space=65536

会修改ODM中的内容,所以在重新开机后参数也会生效。

4.网络适配器 (network adapter) 发送/接收队列的调整

如果适配器的传输队列不够大的话,在netstat –v 的结果中 “S/W Transmit Queue Overflow” 的值为非0。

如果接收资源不足,则“Packets Dropped” 或 “Out of Rcv Buffers” 或 “ No Resource Errors” 就会出现非0的值。

使用 chdev 或 smit 来调整相应队列的值,如:

# chdev -l entx -a tx_que_sz=16384 

5. 名字解析(name resolution) 的查找顺序

在AIX中缺省名字解析的顺序是DNS àNIS à/etc/hosts。

可以使用 /etc/netsvc.conf文件或 NSORDER环境变量来改变缺省的名字解析顺序,以提高名字解析的速度,若/etc/netsvc.conf文件和 NSORDER环境变量同时存在,则NSORDER起作用。

使用变量 NSORDER 改变解析顺序,用如下方法定义:

export NSORDER= local,nis,bind

使用/etc/netsvc.conf 文件,在文件中加入:

hosts=local,bind,nis

AIX网络性能优化简介的更多相关文章

  1. 携程App的网络性能优化实践

    首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...

  2. Linux 下网络性能优化方法简析

    概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...

  3. 转:携程App的网络性能优化实践

    http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...

  4. LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. Linux网络性能优化方法简析

    Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux ...

  6. web性能优化——简介

    简介 性能优化的第一准则:加缓存.几乎绝大部分优化都围绕这个来进行的.让用户最快的看到结果. 性能优化的第二准则:最小原则.绝不提供多余的信息.比如,静态资源(图片.css.js)压缩,图片的滚动加载 ...

  7. (转) Android开发性能优化简介

    作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...

  8. [素材资源] Android开发性能优化简介(非常不错的)

    转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost&amp ...

  9. KVM总结-KVM性能优化之网络性能优化

    前面已经介绍了KVM CPU优化(http://blog.csdn.net/dylloveyou/article/details/71169463).内存优化(http://blog.csdn.net ...

随机推荐

  1. RansomNote

    
Given
 an 
arbitrary
 ransom
 note
 string 
and 
another 
string 
containing 
letters from
 all 
th ...

  2. java 通过反射获取调用类方法及属性

    首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...

  3. mysql 表锁问题

    select * from information_schema.INNODB_lock_waits; select * from information_schema.INNODB_locks; S ...

  4. 在线学习体验大PK 云智慧发布在线教育网站性能监测报告

    互联网不但改变了我们的生活.娱乐和消费方式,也推动各行各业进行着快速变革,越来越多的职场人士必须通过不断的学习.充电才能跟上行业发展的步伐,获得职业的提升,而这也引发了国内教育市场的爆炸式发展.据统计 ...

  5. 【软件使用】TortoiseSVN版本管理软件使用简单说明

    TortoiseSVN版本管理软件使用简单说明 很多时候在写一个小的项目不想使用github等工具,只想简单在本地搭建一个版本管理器.那么TortoiseSVN就非常适合. 第一步:下载Tortois ...

  6. 2015NOIP简单说说

    在机房度过最后两节课然后滚回去赶文化课,准备期中考试,高考.AFO的称号毫无悬念的归来了.DAY1T2的失误不能拿下230,只能190滚粗,DAY2一上午都在混沌.旁边的哥们求我给看第一题,于是他就对 ...

  7. 手机端轻应用模拟原生的下拉刷新效果(JavaScript)

    方案一:使用iscoll等有下拉功能的框架. 分析:因为项目的结构已经基本完成,再使用框架,会与原来的结构互相影响: 方案二:用JavaScript.Jquery写. 分析:可能没有直接使用框架的效果 ...

  8. 关于Java(标识符规则)

    Java 是大小写敏感的语言. Java 标识符组成 Java 标识符组成: 字母,数字,下划线和美元符 $ Java 标识符规则 仅包含 字母,数字,下划线和美元符 开头不能使数字 不能使 Java ...

  9. webform中listbox运用,2个相互传值练习1:

    AppendDataBoundItems(将数据绑定项追加到静态声明列表项上)属性改为Ture;SelectionMode(列表的选择模式改为多项)属性改为Multiple using System; ...

  10. 【原创】自己动手实现RPC服务调用框架

    自己动手实现rpc服务调用框架 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者).battercake- ...