AIX网络性能优化简介
在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网络性能优化简介的更多相关文章
- 携程App的网络性能优化实践
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...
- Linux 下网络性能优化方法简析
概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑.由于数据包的转发一般是具备路由功能的设备所关注,在本文中 ...
- 转:携程App的网络性能优化实践
http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对 ...
- LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Linux网络性能优化方法简析
Linux网络性能优化方法简析 2010-12-20 10:56 赵军 IBMDW 字号:T | T 性能问题永远是永恒的主题之一,而Linux在网络性能方面的优势则显而易见,这篇文章是对于Linux ...
- web性能优化——简介
简介 性能优化的第一准则:加缓存.几乎绝大部分优化都围绕这个来进行的.让用户最快的看到结果. 性能优化的第二准则:最小原则.绝不提供多余的信息.比如,静态资源(图片.css.js)压缩,图片的滚动加载 ...
- (转) Android开发性能优化简介
作者:贺小令 随着技术的发展,智能手机硬件配置越来越高,可是它和现在的PC相比,其运算能力,续航能力,存储空间等都还是受到很大的限制,同时用户对手机的体验要求远远高于PC的桌面应用程序.以上理由,足以 ...
- [素材资源] Android开发性能优化简介(非常不错的)
转自(http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...
- KVM总结-KVM性能优化之网络性能优化
前面已经介绍了KVM CPU优化(http://blog.csdn.net/dylloveyou/article/details/71169463).内存优化(http://blog.csdn.net ...
随机推荐
- ubuntu 下rar解压工具安装方法
1.压缩功能安装 sudo apt-get install rar卸载 sudo apt-get remove rar2.解压功能安装 sudo apt-get install unrar卸载 sud ...
- ios delegate你必须知道的事情
在我们的class中设计delegate的时候,我们通常会有几个注意事项. 假设我的class叫做MyClass,那我们可能会有定义一个MyClassDelegate这个protocol当作我的del ...
- JavaScript笔记基础篇(一)
一. 常用正则表达式汇总以及部分问题解决方案 正则匹配: var str = "This is my test"; var test = new RegExp("test ...
- JAVA 多线程和并发学习笔记(一)
一.进程与线程 1. 进程 当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中的程序.进程是操作系统进行资源分配和调度的一个独立单位.进程的三个特征: 独立性 独立存在的实体,每个进程都有 ...
- bash操作小结
刚开始学写bash脚本,发现有很多需要注意的细节问题,在这里记录一下便于记忆: 1. help test 帮助 2. bash提供的数组数据结构,它是以数字为下标的,和C语言从0开始的下一样 参考 ...
- 配置VS使用winteracter
一.winteracter是什么?为什么要用VS代替wide?winteracter 是一款强大的 Fortran 图形界面函数库,可方便的用 Fortran 生成GUI界面,对话框,菜单,绘图等操作 ...
- Jquery Datatables 请求参数及接收参数处理
Jquery Datatables 请求参数及接收参数处理 /** * Created by wb-wuyifu on 2016/8/9. */ /** * Created by wb-wuyifu ...
- KMP算法简明扼要的理解
KMP算法也算是相当经典,但是对于初学者来说确实有点绕,大学时候弄明白过后来几年不看又忘记了,然后再弄明白过了两年又忘记了,好在之前理解到了关键点,看了一遍马上又能理解上来.关于这个算法的详解网上文章 ...
- Brn系列商城3.0测试版正式发布,欢迎大家下载测试
BrnShop商城3.0测试版和BrnMall商城3.0测试版正式发布,欢迎大家下载测试(点击下载).测试结束后将会发布正式版和MySQL版本. 测试过程中发现bug欢迎大家给我们反馈,反馈邮箱:br ...
- 使用虚拟机win7系统遇到问题及解决
安装VMware并在其中安装win7专业版系统,这里不再赘述.因为...我就是照着百度来的.哈哈 说说使用中遇到的问题. 本来安装成功后,可以很愉快的运行着.后来莫名奇妙的出现了两个问题:1.虚拟机运 ...