级别: 中级 Ken Milberg (ken@unix-linux.org), UNIX 顾问、技术作家和网站专家, Future Tech
2008 年 3 月 13 日 这个有关 AIX® 网络优化的系列共分三个部分,重点关注优化网络性能方面的各种挑战。第 1 部分提供了有关网络的概述,并且还介绍了监视硬件所需的一些工具,包括 netstat、netpmon、entstat 和 nmon。第 2 部分介绍了对 NFS 子系统监视和优化的内容。本文是第 3 部分,也是最后的一个部分,将向您介绍如何监视网络数据包。
引言
虽然运行诸如 netstat 之类的命令可以提供一些有用的信息,但有时您仍然需要深入到数据包级别上进行更进一步的分析。在这种情况下,可以使用各种跟踪工具。本文将描述这些实用工具,包括 iptrace、ipreport 和 tcpdump。本文还将向您介绍如何使用像 no 这样的工具来优化网络。虽然 no 命令与 vmo 和 ioo 很类似,但 no 是面向网络的版本。本文重点关注于 tcp 工作负载优化、udp 工作负载优化,以及 no 实用工具所提供的一些其他值得关注的参数。本文还将讨论 ARP 缓存优化,以及如何监视和优化 ARP 统计信息。您还将了解名称解析,以及如何通过对解析主机名的方式进行少量的调整,以简单地提高性能。
监视网络数据包
在这个部分中,您将了解一些相关工具的概述,这些工具可以帮助您监视网络数据包。这些工具允许您快速地对性能问题进行故障排除,并获取相关的数据以便进行历史趋势的研究和分析。
第 1 部分介绍了一些非常基本的标志,如 -in,这是 netstat 的一个常用标志。使用 netstat,您还可以监视有关数据包本身的、更为详细的信息。例如,-D 选项将显示您的通信子系统所接收的、传输的和丢弃的数据包的总数。可以按设备、驱动程序和协议来对结果进行排序(请参见清单 1)。
清单 1. 带 -D 选项的 netstat
root@lpar37p682e[/home] > netstat -D
Source Ipkts Opkts Idrops Odrops
-------------------------------------------------------------------------------
ent_dev0 238122150 1805 0 0
ent_dev1 17583646 301547 0 0
---------------------------------------------------------------
Devices Total 255705796 303352 0 0
-------------------------------------------------------------------------------
ent_dd0 238122150 1805 0 0
ent_dd1 17583646 301547 0 0
---------------------------------------------------------------
Drivers Total 255705796 303352 0 0
-------------------------------------------------------------------------------
ent_dmx0 238011223 N/A 110927 N/A
ent_dmx1 17466977 N/A 116669 N/A
---------------------------------------------------------------
Demuxer Total 255478200 N/A 227596 N/A
-------------------------------------------------------------------------------
IP 238073400 301739 2392 1691
IPv6 0 0 0 0
TCP 7373 296758 93 0
UDP 238063379 4677 238055978 0
---------------------------------------------------------------
Protocols Total 476144152 603174 238058463 1691
-------------------------------------------------------------------------------
en_if1 17466977 301547 0 0
en_if0 238011223 1805 0 0
lo_if0 609 619 10 0
---------------------------------------------------------------
Net IF Total 255478809 303971 10 0
|
另一个有用的标志是 -s,它将显示所使用的全部协议的详细统计信息(包括发送的、接收的和丢弃的数据包)。如果您只希望查看 tcp 协议的相关信息,那么您还可以使用 -p 标志(请参见清单 2)。
清单 2. 带 -p 选项的 netstat
root@lpar37p682e[/home] > netstat -p tcp
tcp:
297240 packets sent
284116 data packets (18296667 bytes)
0 data packets (0 bytes) retransmitted
316 ack-only packets (119 delayed)
0 URG only packets
0 window probe packets
38 window update packets
12770 control packets
0 large sends
0 bytes sent using largesend
0 bytes is the biggest largesend
7675 packets received
6277 acks (for 18288752 bytes)
133 duplicate acks
0 acks for unsent data
1864 packets (141133 bytes) received in-sequence
92 completely duplicate packets (91 bytes)
0 old duplicate packets
|
实际上,有许多种不同的使用 netstat 的方式,而在刚开始学习的时候,最好是查看手册(man)页面,然后按照其中的方法进行执行。不要害怕运行这些命令,因为它们并不会耗尽磁盘空间、或者影响性能。可以使用 AIX 中提供的各种跟踪工具来记录有关数据包的详细信息。在使用它们时请多加小心。当您尝试确定导致网络性能问题的根本原因时,这些工具将会非常有帮助。
首先介绍一下 iptrace 和 ipreport。iptrace 命令记录从网络接口接收到的所有数据包。ipreport 命令将 iptrace 生成的数据格式化到一个可读的跟踪报告中。而且,您还可以使用 ipfilter 对 ipreport 所创建的输出文件进行排序。尝试启动跟踪,并让它工作一分钟(请参见清单 3)。
清单 3. 启动跟踪
root@lpar37p682e[/etc] > /usr/sbin/iptrace -a -i en0 iptrace.out &
[1] 737520
root@lpar37p682e[/etc] > [774252]
[1] + Done /usr/sbin/iptrace -a -i en0 iptrace.out &
root@lpar37p682e[/etc] > ps -ef | grep iptrace
root 205030 749602 0 10:57:32 pts/0 0:00 grep iptrace
root 774252 1 2 10:57:25 - 0:00 /usr/sbin/iptrace -a -i en0 iptrace.out
When you are done with the trace, you need to kill the process:
root@lpar37p682e[/etc] > kill -1 774252
root@lpar37p682e[/etc] > iptrace: unload success!
root@lpar37p682e[/etc] > ipreport -r -s iptrace.out >/ipreport.network
Now, examine the output.
root@lpar37p682e[/] > more ipreport.network
IPTRACE version: 2.0
ETH: ====( 114 bytes transmitted on interface en0 )==== 10:57:25.698790226
ETH: [ da:bb:b8:b5:26:14 -> 6e:87:76:59:6e:cd ] type 800 (IP)
IP: < SRC = 172.29.135.44 > (lpar37p682e)
IP: < DST = 172.29.131.16 >
IP: ip_v=4, ip_hl=20, ip_tos=16, ip_len=100, ip_id=18349, ip_off=0 DF
IP: ip_ttl=60, ip_sum=945f, ip_p = 6 (TCP)
TCP: <source port=22(ssh), destination port=53643 >
TCP: th_seq=337783617, th_ack=1783353394
TCP: th_off=8, flags<PUSH | ACK>
TCP: th_win=65522, th_sum=0, th_urp=0
TCP: nop
TCP: nop
TCP: timestamps TSVal: 0x47414604 TSEcho: 0x47826117
TCP: 00000000 520bea13 dfaefa7b e1c517d6 ce86f960 |R......{.......'|
TCP: 00000010 fdb24d69 947c8d48 fa7b6379 235d1a63 |..Mi.|.H.{cy#].c|
TCP: 00000020 840adfc2 e1b4b916 e1002983 f96fc1fb |..........)..o..|
|
清单 3 显示了所捕获的、有关每个数据包的信息,包括数据包的大小和 IP 地址信息。正如您可以想象到的,这个跟踪文件可能会迅速地变得很大。示例文件在不到一分钟的时间内就增长到了 40 MB!在运行这些跟踪的时候,一定要非常小心,因为如果您没有足够的磁盘空间用于这些文件,那么将会迅速地耗尽磁盘空间。
您还可以使用系统资源控制器 (SRC) 来启动跟踪。请参见清单 4。
清单 4. 使用 SRC 启动跟踪
# startsrc -s iptrace -a "-i en1 /home/testing/iptrace/iptracelog"
Stopping it is easy;
# stopsrc -s iptrace
|
tcpdump 的情况又如何呢?tcpdump 可以输出为每个 NIC 捕获的数据包的 Header。tcpdump 的一个重要区别是,与 iptrace 不同,它一次只能查看一个网络接口。而且,因为 iptrace 将检查来自内核空间的完整的数据包,所以其结果可能导致丢弃大量的数据包。使用 tcpdump,您还可以限制要跟踪的数据的总量。另外,您不需要使用 ipreport 类型的命令来格式化二进制的数据,因为 tcpdump 将进行跟踪并产生格式化的输出。清单 5 给出了一个示例。
清单 5. 使用 tcpdump
root@lpar37p682e[/] >
root@lpar37p682e[/] > tcpdump -w tcp.out
tcpdump: listening on en0, link-type 1, capture size 96 bytes
|
tcpdump 将持续地捕获数据包,直到您键入 Ctrl+C 为止。如果由于缓冲区空间不足而丢弃了任何数据包,那么它也会作出相应的报告。
清单 6 显示了当您结束示例跟踪时所看到的内容。
清单 6. 跟踪结束
14755 packets received by filter
0 packets dropped by kernel
13:40:28.001711 IP lpar37p682e.ssh > 172.29.131.16.53736: P 374368029:374368077(48)
ack 3207376412 win 65522 <nop,nop,timestamp 1195479662 1199746434>
13:40:28.001765 IP lpar37p682e.ssh > 172.29.131.16.53736: P 48:96(48)
ack 1 win 65522 <nop,nop,timestamp 1195479662 1199746434>
13:40:28.001872 IP lpar37p682e.ssh > 172.29.131.16.53736: P 96:144(48)
ack 1 win 65522 <nop,nop,timestamp 1195479662 1199746434>
13:40:28.001925 IP lpar37p682e.ssh > 172.29.131.16.53736: P 144:192(48)
ack 1 win 65522 <nop,nop,timestamp 1195479662 1199746434>
P 400:448(48) ack 1 win 65522 <nop,nop,timestamp 1195479662 1199746434>
13:40:28.066856 IP 172.29.131.16.53736 > lpar37p682e.ssh: .
ack 448 win 32761 <nop,nop,timestamp 1199746434 1195479662>
13:40:28.149698 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.150470 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.151257 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.151954 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.152756 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.153449 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.154251 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.154950 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
13:40:28.155754 IP 172.29.129.53.cognex-insight >
172.29.191.255.silhouette: isakmp: phase 2/others ? #64[EC]
|
上面的输出说明,内核并没有丢弃任何数据包,这是很好的情况。
优化网络性能
在这个部分中,您将了解如何使用 no 命令来优化您的网络子系统。您还将了解可能影响网络性能的一些其他方面,并且您将了解在适当情况下的建议优化方法。
no 命令是优化网络参数的最重要的命令。首先,使用 -a 标志查看所有的参数(请参见清单 7)。
清单 7. 查看参数
root@lpar37p682e[/] > no -a
arpqsize = 12
arpt_killc = 20
arptab_bsiz = 7
arptab_nb = 149
bcastping = 0
clean_partial_conns = 0
delayack = 0
delayackports = {}
dgd_packets_lost = 3
dgd_ping_time = 5
dgd_retry_time = 5
directed_broadcast = 0
extendednetstats = 0
fasttimo = 200
icmp6_errmsg_rate = 10
icmpaddressmask = 0
ie5_old_multicast_mapping = 0
ifsize = 256
inet_stack_size = 16
ip6_defttl = 64
ip6_prune = 1
ip6forwarding = 0
ip6srcrouteforward = 1
ip_ifdelete_notify = 0
ip_nfrag = 200
ipforwarding = 0
ipfragttl = 2
ipignoreredirects = 0
ipqmaxlen = 100
ipsendredirects = 1
ipsrcrouteforward = 1
ipsrcrouterecv = 0
ipsrcroutesend = 1
llsleep_timeout = 3
lo_perf = 1
lowthresh = 90
main_if6 = 0
main_site6 = 0
maxnip6q = 20
maxttl = 255
medthresh = 95
mpr_policy = 1
multi_homed = 1
nbc_limit = 262144
nbc_max_cache = 131072
nbc_min_cache = 1
nbc_ofile_hashsz = 12841
nbc_pseg = 0
nbc_pseg_limit = 524288
ndd_event_name = {all}
ndd_event_tracing = 0
ndp_mmaxtries = 3
ndp_umaxtries = 3
ndpqsize = 50
ndpt_down = 3
ndpt_keep = 120
ndpt_probe = 5
ndpt_reachable = 30
ndpt_retrans = 1
net_buf_size = {all}
net_buf_type = {all}
net_malloc_police = 0
nonlocsrcroute = 0
nstrpush = 8
passive_dgd = 0
pmtu_default_age = 10
pmtu_expire = 10
pmtu_rediscover_interval = 30
psebufcalls = 20
psecache = 1
pseintrstack = 24576
psetimers = 20
rfc1122addrchk = 0
rfc1323 = 0
rfc2414 = 1
route_expire = 1
routerevalidate = 0
rto_high = 64
rto_length = 13
rto_limit = 7
rto_low = 1
sack = 0
sb_max = 1048576
send_file_duration = 300
site6_index = 0
sockthresh = 85
sodebug = 0
sodebug_env = 0
somaxconn = 1024
strctlsz = 1024
strmsgsz = 0
strthresh = 85
strturncnt = 15
subnetsarelocal = 1
tcp_bad_port_limit = 0
tcp_ecn = 0
tcp_ephemeral_high = 65535
tcp_ephemeral_low = 32768
tcp_finwait2 = 1200
tcp_icmpsecure = 0
tcp_init_window = 0
tcp_inpcb_hashtab_siz = 24499
tcp_keepcnt = 8
tcp_keepidle = 14400
tcp_keepinit = 150
tcp_keepintvl = 150
tcp_limited_transmit = 1
tcp_low_rto = 0
tcp_maxburst = 0
tcp_mssdflt = 1460
tcp_nagle_limit = 65535
tcp_nagleoverride = 0
tcp_ndebug = 100
tcp_newreno = 1
tcp_nodelayack = 0
tcp_pmtu_discover = 1
tcp_recvspace = 16384
tcp_sendspace = 16384
tcp_tcpsecure = 0
tcp_timewait = 1
tcp_ttl = 60
tcprexmtthresh = 3
thewall = 1048576
timer_wheel_tick = 0
udp_bad_port_limit = 0
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768
udp_inpcb_hashtab_siz = 24499
udp_pmtu_discover = 1
udp_recvspace = 42080
udp_sendspace = 9216
udp_ttl = 30
udpcksum = 1
use_isno = 1
use_sndbufpool = 1
|
或者,您还可以使用 -L 标志,它将提供更加详细的信息。清单 8 仅给出了开头的几行。
清单 8. 使用 -L 标志
root@lpar37p682e[/] > no -L | more
General Network Parameters
--------------------------------------------------------------------------------
NAME CUR DEF BOOT MIN MAX UNIT TYPE
DEPENDENCIES
--------------------------------------------------------------------------------
extendednetstats 0 0 0 0 1 boolean R
--------------------------------------------------------------------------------
fasttimo 200 200 200 50 200 millisecond D
--------------------------------------------------------------------------------
inet_stack_size 16 16 16 1 32K-1 kbyte R
|
这里给出了许多的参数。让我们来了解一下其中最值得关注的内容。在旧版本的 AIX 中,thewall 是一个需要更改其缺省值的、重要的可调参数。这个参数定义了网络内核缓冲区的上限。现在,根据 RAM 总量和内核类型,在安装时定义其大小。例如,如果您在 64 位内核中运行 AIX 5.3,那么将该参数设置为实际内存大小的一半。
清单 9. 设置 thewall 参数的大小
root@lpar37p682e[/] > vmstat 1
System configuration: lcpu=2 mem=2048MB ent=0.20
# no -a | grep thewall
thewall = 1048576
|
第 1 部分介绍了 mbufs,但这里我们又要再次提到它,因为它与 thewall 非常相关。请记住,mbufs 用于在内核中为传入和传出的通信存储数据。这正是为什么确定合适的 mbufs 总量极其重要的原因。maxmbuf 可调参数的值用于限制通信系统所使用的内存量。如果该值为 0,那么将使用 thewall 可调参数,并且不能修改其缺省值。更改这个可调参数,是降低 thewall 限制的一种方法。作为缺省值,如果 maxmbuf 为 0,那么无论 thewall 使用什么都将使用这个值。netstat -m 用于检测失败的网络内存请求(请参见清单 10)。
清单 10. 带 -m 选项的 netstat
root@lpar37p682e[/etc/tunables] > netstat -m
Kernel malloc statistics:
******* CPU 0 *******
By size inuse calls failed delayed free hiwat freed
32 117 217 0 0 11 5240 0
64 109 6523 0 1 83 5240 0
128 975 15951 0 29 785 2620 0
256 520 67637 0 30 1016 5240 0
Streams mblk statistic failures:
0 high priority mblk failures
0 medium priority mblk failures
0 low priority mblk failures
|
在这个示例中,没有出现任何内存不足(失败)。
尽管您可以使用 no 实用工具更改许多参数,但大多数参数最好还是不要修改。最重要的参数是那些涉及到 TCP 流工作负载优化的参数。
-
tcp_sendspace——控制内核中用于缓冲应用程序数据的缓冲区空间大小。您可能希望使其超过缺省值,因为如果达到了限制值,发送应用程序则将挂起数据传输,直到 TCP 将数据发送到缓冲区为止。
-
tcp_receivespace——除了控制接收缓冲区所消耗的缓冲区空间总量之外,AIX 还使用这个值来确定其传输窗口的大小。
-
udp_sendspace——对于 UDP,您可以将这个参数设置为不超过 65536 的值,因为每个 IP 数据包的上限为 65536 个字节。
-
udp_resvspace
——这个值应该大于 udp_sendpsace,因为它需要处理每套接字的、尽可能多的同步 UDP 数据包。可以简单地将这个参数设置为 udp_sendspace 值的 10 倍。
现在,进行一些更改。首先,增加 udp_sendspace 的大小(请参见清单 11)。
清单 11. 增加 udp_sendspace 的大小
root@lpar37p682e[/] > no -p -o udp_sendspace=65536
Setting udp_sendspace to 65536
Setting udp_sendspace to 65536 in nextboot file
|
接下来,将 udp_recsvspace 更改为建议的配置,即 udp_sendspace 的 10 倍。请参见清单 12。
清单 12. 更改 udp_recsvspace 的值
root@lpar37p682e[/] > no -p -o udp_recvspace=655360
Setting udp_recvspace to 655360
Setting udp_recvspace to 655360 in nextboot file
Change to tunable udp_recvspace, will only be effective for future connections
root@lpar37p682e[/] >
|
请注意,-p 标志可以保存相关的条目,即使是在重新启动之后它也是生效的。它将在 /etc/tunables/nextboot 文件中追加相应的节,如清单 13 所示。
清单 13. 查看 /etc/tunables/nextbook 文件
# tail /etc/tunables/nextboot
no:
udp_recvspace = "655360"
udp_sendspace = "65536"
root@lpar37p682e[/etc/tunables] >
|
对于速度更快的适配器的 tcp 参数,可以将 tcp_sendspace 设置为 tcp_recvspace 值的两倍。例如,您可以使用清单 14 中的设置。
清单 14. tcp_sendspace 的示例设置
tcp_receivespace = 262144
tcp_sendspace= 524288
|
其他一些的重要工作负载参数包括 rfc1323 和 sb_max。
rfc1323 可调参数支持 TCP 窗口缩放选项,该选项允许 TCP 使用较大的窗口大小。开启这个选项,以支持最佳的 TCP 性能。sb_max 可调参数为排队等待单个套接字的套接字缓冲区数目设置上限,而这个上限可以控制缓冲区(排队等待发送者或者接收的套接字)所使用的缓冲区空间总量。这个总量通常应该小于 wall,并且近似于 tcp 或者 udp 发送和接收设置最大值的 4 倍。例如,如果您的 udp_recvspace 是 655360,那么将其加倍到 1310720 是没有问题的。
现在来了解一下 tcp_nodelayack。这个可调参数提示 TCP 发送一个立即确认信息,而不是延迟确认信息。尽管这样做可能在某些环境中增加更多的开销,但是可以在其他的环境中极大地提高网络性能。如果您更改了这个参数却没有提高性能,那么您可以迅速地将它还原为先前的值。
接下来了解一下 ipqmalen。这个可调参数用于控制 IP 输入队列的长度。如果您看到一个溢出计数器(通过使用 netstat -s),那么设置这个队列的最大长度可以帮助修复这种溢出情况。
ARP 的情况又如何呢?当有许多客户端连接到系统时,您可能希望优化 ARP 缓存。您可以使用 netstat 来查看相关的统计信息(请参见清单 15)。
清单 15. 使用带有 -p arp 的 netstat
root@lpar37p682e[/etc/tunables] > netstat -p arp
arp:
10 packets sent
0 packets purged
root@lpar37p682e[/etc/tunables] >
|
如果您发现较高的清除计数,那么可以增大 ARP 表的大小。对于示例表来说,不需要这样做。
下面是与 ARP 相关的 no 参数(请参见清单 16)。
清单 16. 使用 no 参数
root@lpar37p682e[/etc/tunables] > no -a | grep arp
arpqsize = 12
arpt_killc = 20
arptab_bsiz = 7
arptab_nb = 149
|
您可以在系统范围内优化这些缓冲区、或者针对特定的接口优化这些缓冲区。要针对接口来进行优化,可以将 no 可调参数 isno 选项设置为 1,这是 AIX 5.3 的缺省值。
清单 17. 将 no 可调参数 isno 选项设置为 1
root@lpar37p682e[/etc/tunables] > no -a | grep use
use_isno = 1
|
将禁用选项设置为 0,以此作为排序的诊断工具,以便在整个范围内设置值,从而帮助隔离性能问题。在为特定的接口设置这些值时,它们实际上将覆盖 no 视图中的缺省值,这有时会让系统管理员非常困惑。您可以使用 ifconfig 或者 lsattr 来查看特定接口的设置。在这个示例中,使用 ifconfig 查看设置(查看最后一行内容,它引用了先前提到过的一些可调参数)。
清单 18. 使用 ifconfig 查看特定接口的设置
root@lpar37p682e[/etc/tunables] > ifconfig en0
en0: flags=1e080863,480<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,
GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN>
inet 172.29.135.44 netmask 0xffffc000 broadcast 172.29.191.255
tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
|
您可以通过使用 SMIT、chdev 或者 ifconfig 来更改这些选项(针对接口)。请注意,ifconfig 将不会更新对象数据管理器 (ODM),因此在重新启动后,它将还原为先前的值。正因为如此,您应该使用 SMIT 的快速路径 smit tcpip>further configuration>Network interfaces>Change/Show characteristics(请参见图 1)。
图 1. 使用 SMIT 更改接口设置
您可能会感到奇怪,为什么 no 参数不能应用于某些接口。名称解析是可能影响性能的另一个方面。如果您知道希望怎样进行解析(使用 DNS 或者 hosts 文件),那么请确保在 /etc/netsvc.conf 文件中正确地设置了名称解析。查看清单 19 中的文件片段。
清单 19. /et/netsvc.conf 文件片段
# Example:
# aliases = nis, files
#
hosts=local,bind4
root@lpar37p682e[/etc/tunables] >
|
如果您正使用 DNS,并且不使用任何 hosts 文件,那么请删除 local;或者如果希望使用它作为 DNS 的后备(但将其作为第二个条目),那么也可以保留它。或者,如果您不使用 DNS,那么可以删除 bind,因为只有在使用不存在的名称服务器进行首次解析尝试(如果它是记录中的第一个条目)时,才会降低性能。
总结
本文(优化网络性能的系列文章共分 3 个部分,本文是其中的第 3 部分)介绍了如何监视网络中的网络数据包。在本文中,您使用了 netstat,并且使用了诸如 iptrace 和 tcpdump 之类的跟踪工具深入到了数据包级别。而且,您了解了如何使用 no 实用工具来优化网络。使用这个实用工具,您研究了 tcp 和 udp 工作负载优化,同时还了解了一些其他值得关注的参数。您进行了一些优化更改,并了解了可能希望优化某些设置的方式。您还研究了 ARP 缓存优化,并且看到了如何监视和优化 ARP 统计。您查看了 ISNO,并了解了如何针对接口来优化特定的 no 可调参数。您还了解了名称解析,以及如何通过对解析主机名的方式进行少量的调整,以简单地提高性能。
本系列文章介绍了网络优化的最佳实践,以及如何从对 I/O 子系统的有效监视中获益。还有许多其他的开放源代码和商业网络实用工具(硬件和软件)可供使用,它们可以帮助监视,以及对性能问题进行故障排除。尽管本系列文章的重点是 AIX 中的可用工具,但是也应该研究其它一些可能非常有价值的工具。
参考资料 学习
获得产品和技术
讨论
关于作者  | |  | Ken Milberg 是 techtarget.com 网站的技术作家和网站专家,并且在 searchopensource.com 网站提供 Linux 技术信息和支持。他还是《IBM 系统杂志(开放系统版)》的撰稿人和技术编辑。Ken 拥有马里兰大学计算机和信息科学学士学位以及技术管理硕士学位。他是长岛 POWER-AIX 用户组的创立者和负责人。多年以来,他在大小型企业工作过,并且担任过从 CIO 到高级 AIX 工程师的各种职位。现在,他在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 是一名通过 PMI 认证的项目管理专业人员 (PMP),还是一名通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006),并且是通过 Solaris 认证的网络管理员 (SCNA)。您可以通过 kmilberg@gmail.com 与他联系。 |
对本文的评价
|