虽然运行 netstat 等命令可以提供有用的信息,但有时您仍然需要深入到数据包作进一步分析。在这种情况下,可以使用各种跟踪工具,比如 iptrace、ipreport 和 tcpdump。本文还将向您介绍如何使用像 no 这样的工具来优化网络。虽然 no 命令与 vmo 和 ioo 很相似,但 no 更受到网络环境的青睐。本文重点关注于 tcp 工作负载优化、udp 工作负载优化,以及 no 实用工具所提供的一些其他值得关注的参数。本文还将讨论 ARP 缓存优化,以及如何监视和优化 ARP 统计信息。您还将了解名称解析,以及如何通过微调解析主机名的方式轻松提高性能。
在这个小节中,您将了解一些关于网络数据包监视工具的概述。这些工具允许您快速地对性能问题进行故障排除,并捕捉相关的数据以便进行历史趋势的研究和分析。
本系列的 第 1 部分 介绍了一些非常基本的标志,比如 -in,这是 netstat 的一个常用标志。使用 netstat 还可以监视有关数据包本身的、更为详细的信息。例如,-D 选项将显示您的通信子系统所接收的、传输的和丢弃的数据包的总数。下面按设备、驱动程序和协议对结果进行排序(请参见 清单 1)。
清单 1. 带
-D 选项的 netstat
l488pp065_pub[/tmp] > netstat -D
Source Ipkts Opkts Idrops Odrops
-------------------------------------------------------------------------------
ent_dev1 71306227 337207 0 0
ent_dev0 203313084 82292 0 0
---------------------------------------------------------------
Devices Total 274619311 419499 0 0
-------------------------------------------------------------------------------
ent_dd1 71306227 337207 0 0
ent_dd0 203313084 82292 0 0
---------------------------------------------------------------
Drivers Total 274619311 419499 0 0
-------------------------------------------------------------------------------
ent_dmx1 70327758 N/A 978469 N/A
ent_dmx0 202846759 N/A 466325 N/A
---------------------------------------------------------------
Demuxer Total 273174517 N/A 1444794 N/A
-------------------------------------------------------------------------------
IP 204276236 1063977 899839 828213
IPv6 70588 70588 0 6208
TCP 714368 785630 72 0
UDP 202697468 319900 202172157 0
---------------------------------------------------------------
Protocols Total 407688072 2169507 203072068 828213
-------------------------------------------------------------------------------
en_if1 70327759 337207 0 0
en_if0 202846780 82315 0 0
lo_if0 780891 780890 12 0
---------------------------------------------------------------
Net IF Total 273955430 1200412 12 0
-------------------------------------------------------------------------------
NFS/RPC Client 24 N/A 0 N/A
NFS/RPC Server 0 N/A 0 N/A
NFS Client 279 N/A 0 N/A
NFS Server 0 N/A 0 N/A
---------------------------------------------------------------
NFS/RPC Total N/A 303 0 0
-------------------------------------------------------------------------------
(Note: N/A -> Not Applicable)
|
另一个有用的标志是 -s,它将显示所使用的全部协议的详细统计信息(包括发送的、接收的和丢弃的数据包)。如果您只希望查看 tcp 协议的相关信息,那么您还可以使用 -p 标志(请参见清单 2)。
清单 2. 带
-p 选项的 netstat
l488pp065_pub[/tmp] > netstat -p tcptcp:
785684 packets sent
227657 data packets (13800898 bytes)
0 data packets (0 bytes) retransmitted
279285 ack-only packets (509 delayed)
0 URG only packets
0 window probe packets
69732 window update packets
418020 control packets
0 large sends
0 bytes sent using largesend
0 bytes is the biggest largesend
714418 packets received
360033 acks (for 14009902 bytes)
69728 duplicate acks
0 acks for unsent data
217241 packets (1660096 bytes) received in-sequence
72 completely duplicate packets (72 bytes)
0 old duplicate packets
0 packets with some dup. data (0 bytes duped)
69632 out-of-order packets (0 bytes)
0 packets (0 bytes) of data after window
0 window probes
69733 window update packets
0 packets received after close
0 packets with bad hardware assisted checksum
0 discarded for bad checksums
0 discarded for bad header offset fields
0 discarded because packet too short
0 discarded by listeners
0 discarded due to listener's queue full
5241 ack packet headers correctly predicted
75327 data packet headers correctly predicted
69655 connection requests
69712 connection accepts
139364 connections established (including accepts)
139417 connections closed (including 12 drops)
0 connections with ECN capability
0 times responded to ECN
2 embryonic connections dropped
429685 segments updated rtt (of 429463 attempts)
0 segments with congestion window reduced bit set
0 segments with congestion experienced bit set
0 resends due to path MTU discovery
1 path MTU discovery termination due to retransmits
3 retransmit timeouts
0 connections dropped by rexmit timeout
0 fast retransmits
0 when congestion window less than 4 segments
0 newreno retransmits
0 times avoided false fast retransmits
0 persist timeouts
0 connections dropped due to persist timeout
0 keepalive timeouts
0 keepalive probes sent
0 connections dropped by keepalive
0 times SACK blocks array is extended
0 times SACK holes array is extended
0 packets dropped due to memory allocation failure
0 connections in timewait reused
0 delayed ACKs for SYN
0 delayed ACKs for FIN
0 send_and_disconnects
0 spliced connections
0 spliced connections closed
0 spliced connections reset
0 spliced connections timeout
0 spliced connections persist timeout
0 spliced connections keepalive timeout
0 TCP checksum offload disabled during retransmit
0 Connections dropped due to bad ACKs
|
实际上,有许多种不同的使用 netstat 的方式,而在刚开始学习的时候,最好是查看手册页,然后按照其中说明操作。不要害怕运行这些命令,因为它们并不会耗尽磁盘空间、或者影响性能。可以使用 AIX 7 中提供的各种跟踪工具来记录有关数据包的详细信息。在使用它们时请多加小心。当您尝试确定导致网络性能问题的根本原因时,这些工具将会非常有帮助。
首先介绍一下 iptrace 和 ipreport。iptrace 命令记录从网络接口接收到的所有数据包。ipreport 命令将 iptrace 生成的数据格式化到一个可读的跟踪报告中。而且,您还可以使用 ipfilter 对 ipreport 所创建的输出文件进行排序。尝试启动跟踪,并让它工作一分钟(请参见 清单 3)。
清单 3. 启动跟踪
l488pp065_pub[/tmp] > /usr/sbin/iptrace -a -i en0 iptrace.out & [1] 12845206 l488pp065_pub[/tmp] > [8126632] [1] + Done /usr/sbin/iptrace -a -i en0 iptrace.out & l488pp065_pub[/tmp] > ps -ef | grep iptrace root 8126632 1 15 05:54:55 - 0:00 /usr/sbin/iptrace -a -i en0 iptrace.out root 14221424 7012524 7 05:55:17 pts/1 0:00 grep iptrace |
在跟踪结束之后,需要杀死跟踪进程(请参见 清单 4)。
清单 4. 杀死跟踪进程
l488pp065_pub[/tmp] > kill -1 8126632l488pp065_pub[/tmp] > iptrace: unload success! l488pp065_pub[/tmp] > ipreport -r -s iptrace.out >/ipreport.network |
现在,检查输出结果(请参见 清单 5):
清单 5. 检查输出结果
l488pp065_pub[/tmp] > more /ipreport.network IPTRACE version: 2.0 ETH: ====( 114 bytes transmitted on interface en0 )==== 05:54:55.151599119 ETH: [ 66:da:93:d1:6b:17 -> 6e:87:70:00:40:03 ] type 800 (IP) IP: < SRC = 172.29.148.225 > (l488pp065_pub) IP: < DST = 172.29.131.16 > IP: ip_v=4, ip_hl=20, ip_tos=16, ip_len=100, ip_id=49399, ip_off=0 DF IP: ip_ttl=60, ip_sum=d60, ip_p = 6 (TCP) TCP: <source port=22(ssh), destination port=54678 > TCP: th_seq=47587592, th_ack=3002348404 TCP: th_off=8, flags<PUSH | ACK> TCP: th_win=65522, th_sum=0, th_urp=0 TCP: nop TCP: nop TCP: timestamps TSVal: 0x4f486827 TSEcho: 0x4c8da569 TCP: 00000000 9fec0a46 c8dd1c9b 98ff0213 87c714c0 |...F............| TCP: 00000010 0ec081aa 7c76335f 0bfd0d8f 63d0bf1a |....|v3_....c...| TCP: 00000020 808359b4 13e1a29d 4dacdd51 dad01053 |..Y.....M..Q...S| |
清单 5 显示了捕捉到的关于每个数据包的信息,包括数据包的大小和 IP 地址信息。正如您想到的一样,这个跟踪文件可能会迅速地变得很大。示例文件在不到一分钟的时间内就增长到了 40 MB!在运行这些跟踪的时候,一定要非常小心,因为如果您没有足够的磁盘空间用于这些文件,那么将会迅速地耗尽磁盘空间。
您还可以使用系统资源控制器 (SRC) 来启动跟踪。请参见 清单 6。
清单 6. 使用 SRC 启动跟踪
l488pp065_pub[/tmp] > startsrc -s iptrace -a "-i en1 /home/testing/iptrace/iptracelog" 0513-059 The iptrace Subsystem has been started. Subsystem PID is 12845270. l488pp065_pub[/tmp] > stopsrc -s iptrace 0513-004 The Subsystem or Group, iptrace, is currently inoperative. |
tcpdump 的情况又如何呢?tcpdump 可以输出为每个 NIC 捕获的数据包的 Header。tcpdump 与 iptrace 的一个重要区别是,它一次只能查看一个网络接口。而且,因为 iptrace 将检查来自内核空间的完整的数据包,所以其结果可能导致丢弃大量的数据包。使用 tcpdump,您还可以限制要跟踪的数据的总量。另外,您不需要使用 ipreport 类型的命令来格式化二进制的数据,因为 tcpdump 将进行跟踪并产生格式化的输出。清单 7 给出了一个示例。
清单 7. 使用 tcpdump
l488pp065_pub[/tmp] > tcpdump > tcp.outtcpdump: listening on en0, link-type 1, capture size 96 bytes |
tcpdump 将持续地捕获数据包,直到您键入 Ctrl+C 为止。如果由于缓冲区空间不足而丢弃了任何数据包,那么它也会作出相应的报告。
清单 8 显示了当您结束示例跟踪时所看到的内容。
清单 8. 跟踪结束
28 packets received by filter0 packets dropped by kernel
l488pp065_pub[/tmp] > cat tcp.out
06:00:21.003328 IP l488pp065_pub.ssh > 172.29.131.16.54678:
P 47609416:47609464(48) ack 3002357700 win 65522 <nop,nop,timestamp 133014597
1 1284351989>
06:00:21.003387 IP l488pp065_pub.ssh > 172.29.131.16.54678: P 48:208(160)
ack 1 win 65522 <nop,nop,timestamp 1330145971 1284351989>
06:00:21.028081 IP 172.29.131.16.54678 > l488pp065_pub.ssh: . ack 208 win
32761 <nop,nop,timestamp 1284351989 1330145971>
06:00:21.238937 ARP, Request who-has 172.29.173.186 tell 172.29.133.221, length 46
06:00:21.239110 ARP, Request who-has 172.29.173.236 tell 172.29.129.59, length 46
06:00:21.325060 ARP, Request who-has 172.29.175.252 tell 172.29.129.58, length 46
06:00:21.464383 IP6 fe80::4464:ceff:fe65:4f0c > ff02::1:ff41:34d0: ICMP6,
neighbor solicitation, who has fe80::221:5eff:fe41:34d0, length
32
06:00:21.505281 ARP, Request who-has 172.29.175.60 tell 172.29.133.223, length 46
06:00:22.013530 ARP, Request who-has 172.29.174.66 tell 172.29.133.222, length 46
06:00:22.054164 ARP, Request who-has 172.29.173.237 tell 172.29.129.59, length 46
06:00:22.076819 ARP, Request who-has 172.29.122.25 tell 172.29.122.2, length 46
06:00:22.393898 IP 172.29.148.116.32852 > 239.255.255.253.svrloc: UDP, length 56
06:00:22.464355 IP6 fe80::4464:ceff:fe65:4f0c > ff02::1:ff41:34d0: ICMP6, neighbor
solicitation, who has fe80::221:5eff:fe41:34d0, length
32
06:00:22.935140 802.1d config 8000.00:16:60:f9:a8:00.8011 root 8000.00:16:60:f9:a8:00
pathcost 0 age 0 max 20 hello 2 fdelay 15
06:00:23.186380 ARP, Request who-has 172.29.122.26 tell 172.29.122.2, length 46
06:00:24.520770 ARP, Request who-has 172.29.175.60 tell 172.29.133.223, length 46
06:00:24.558139 ARP, Request who-has 172.29.175.252 tell 172.29.129.58, length 46
06:00:24.573524 ARP, Request who-has 172.29.175.5 tell 172.29.129.57, length 46
06:00:24.736838 IP 172.29.148.116.32853 > 239.255.255.253.svrloc: UDP, length 56
06:00:24.931436 802.1d config 8000.00:16:60:f9:a8:00.8011 root 8000.00:16:60:f9:a8:00
pathcost 0 age 0 max 20 hello 2 fdelay 15
06:00:25.029112 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.029965 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.030751 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.031674 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.032636 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.033647 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.033732 CDP v2, ttl: 180s, Device-ID 'Switch'[|cdp]
06:00:25.034738 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
06:00:25.035741 IP 172.29.133.222.netbios-dgm >
172.29.191.255.netbios-dgm: UDP, length 201
|
tcpdump 的主要好处是可以指定过滤器,这样您就可以仅选择特定的协议、源、目标和端口等。这对诊断或确定 NFS 网络流量非常有用,例如主机间的网络流量。
在这个部分中,您将了解如何使用 no 命令来优化您的网络子系统。您还将了解可能影响网络性能的一些其他方面,并且您将了解在适当情况下的建议优化方法。
no 命令是优化网络参数的最重要的命令。首先,使用 -a 标志查看所有的参数(请参见 清单 9)。需要注意的是,这个清单非常长。
清单 9. 查看参数
l488pp065_pub[/tmp] > 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
fasttimo = 200
icmp6_errmsg_rate = 10
icmpaddressmask = 0
ie5_old_multicast_mapping = 0
ifsize = 256
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_frag_mask = {0}
netm_page_promote = 1
nonlocsrcroute = 0
nstrpush = 8
passive_dgd = 0
pmtu_default_age = 10
pmtu_expire = 10
pmtu_rediscover_interval = 30
poolbuckets = 4
psebufcalls = 20
|
或者,您还可以使用 -L 标志。它将提供更加详细的信息,包括当前值、默认值、启动值和设置范围。这大大方便了诊断给定值是不是最优值,以及改变当前值是否能够提升某些方面的性能。清单 10 仅给出了开头的几行。
清单 10. 使用
-L 标志
l488pp065_pub[/tmp] > no -L
General Network Parameters
--------------------------------------------------------------------------------
NAME CUR DEF BOOT MIN MAX UNIT TYPE
DEPENDENCIES
--------------------------------------------------------------------------------
fasttimo 200 200 200 50 200 millisecond D
--------------------------------------------------------------------------------
nbc_limit 256K 256K 256K 0 8E-1 kbyte D
thewall
--------------------------------------------------------------------------------
nbc_max_cache 128K 128K 128K 1 256M byte D
nbc_min_cache
nbc_limit
--------------------------------------------------------------------------------
nbc_min_cache 1 1 1 1 128K byte D
nbc_max_cache
--------------------------------------------------------------------------------
nbc_ofile_hashsz 12841 12841 12841 1 999999 segment D
--------------------------------------------------------------------------------
nbc_pseg 0 0 0 0 2G-1 segment D
--------------------------------------------------------------------------------
nbc_pseg_limit 512K 512K 512K 0 1M kbyte D
--------------------------------------------------------------------------------
ndd_event_name {all} {all} {all} 0 128 string D
... trimmed for clarity
|
这里给出了许多的参数。thewall 定义网络内核缓冲区的上限值。现在,根据 RAM 总量和内核类型,在安装时定义其大小。例如,如果您在 64 位内核中运行 AIX 5.3,那么将该参数设置为实际内存大小的一半。
清单 11. 设置
thewall 参数的大小l488pp065_pub[/tmp] > no -a|grep thewall thewall = 1048576 |
第 1 部分 介绍了 mbufs,但这里我们又要再次提到它,因为它与 thewall 相关。请记住,mbufs 用于在内核中为传入和传出流量存储数据。这正是为什么确定合适的 mbufs 总量极其重要的原因。maxmbuf 可调参数的值用于限制通信系统所使用的内存量。如果该值为 0,那么将使用 thewall 可调参数,并且不能修改其默认值。更改这个可调参数,是降低 thewall 限制的一种方法。作为默认值,如果 maxmbuf 为 0,那么无论 thewall 使用什么都将使用这个值。netstat -m 用于检测失败的网络内存请求(请参见 清单 12)。
清单 12. 带
-m 选项的 netstatl488pp065_pub[/tmp] > netstat -m Kernel malloc statistics: ******* CPU 0 ******* By size inuse calls failed delayed free hiwat freed 64 558 2087455 0 7 274 5240 0 128 5884 1901723 0 175 164 2620 0 256 5780 653578 0 295 2876 5240 500 512 7970 182051630 0 972 102 6550 0 1024 3159 1960612 0 794 49 2620 0 2048 1069 3462138 0 520 25 3930 0 4096 2056 2794 0 83 3 1310 0 8192 5 260 0 3 163 327 0 16384 256 413 0 62 0 163 0 32768 55 274 0 23 4 81 0 65536 117 175 0 76 0 81 0 131072 4 5 0 0 102 204 0 ... other CPU stats trimmed 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 7 还使用这个值来确定其传输窗口的大小。 -
udp_sendspace— 对于 UDP,您可以将这个参数设置为不超过 65536 的值,因为每个 IP 数据包的上限为 65536 个字节。 -
udp_resvspace— 这个值应该大于udp_sendpsace,因为它需要处理每套接字的、尽可能多的同步 UDP 数据包。可以简单地将这个参数设置为udp_sendpsace值的 10 倍。
现在,进行一些更改。首先,增加 udp_sendspace 的大小(请参见 清单 13)。
清单 13. 增加
udp_sendspace 的大小l488pp065_pub[/tmp] > no -p -o udp_sendspace=65536Setting udp_sendspace to 65536 Setting udp_sendspace to 65536 in nextboot file Change to tunable udp_sendspace, will only be effective for future connections |
接下来,将 udp_recsvspace 更改为建议的配置,即 udp_sendspace 的 10 倍。请参见 清单 14。
清单 14. 更改
udp_recsvspace 的值l488pp065_pub[/tmp] > no -p -o udp_recvspace=655360Setting udp_recvspace to 655360 Setting udp_recvspace to 655360 in nextboot file Change to tunable udp_recvspace, will only be effective for future connections |
请注意,-p 标志可以保存相关的条目,即使是在重新启动之后它也是生效的。它将在 /etc/tunables/nextboot 文件中追加相应的节,如 清单 15 所示。
清单 15. 查看 /etc/tunables/nextbook 文件
no:
udp_recvspace = "655360"
udp_sendspace = "65536"
|
对于速度更快的适配器的 tcp 参数,可以将 tcp_sendspace 设置为 tcp_recvspace 值的两倍。例如,您可以使用 清单 16 中的设置。
清单 16.
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 来查看相关的统计信息(请参见 清单 17)。
清单 17. 使用带有
-p arp 的 netstat
l488pp065_pub[/tmp] > netstat -p arparp:
12 packets sent
0 packets purged
|
如果您发现较高的清除计数,那么可以增大 ARP 表的大小。对于示例表来说,不需要这样做。
下面是与 ARP 相关的 no 参数(请参见 清单 18)。
清单 18. 使用
no 参数
l488pp065_pub[/tmp] > no -a | grep arp
arpqsize = 12
arpt_killc = 20
arptab_bsiz = 7
arptab_nb = 149
|
您可以使用 ifconfig 或 lsattr 来查看特定接口的设置。在 清单 19 中,使用 ifconfig 查看设置(查看最后一行内容,它引用了先前提到过的一些可调参数)。
清单 19. 使用 ifconfig 查看特定接口的设置
l488pp065_pub[/tmp] > ifconfig en0en0: flags=1e080863,480<P,BROADCAST,NOTRAILERS,
RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN>
inet 172.29.148.225 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 文件中正确地设置了域名解析。查看 清单 20 中的文件片段。
清单 20. /etc/netsvc.conf 文件片段
# Example: # aliases = nis, files # hosts=local,bind4 |
如果您正使用 DNS,并且不使用任何 hosts 文件,那么请删除 local;或者如果希望使用它作为 DNS 的后备(但将其作为第二个条目),那么也可以保留它。或者,如果您不使用 DNS,那么可以删除 bind,因为只有在使用不存在的名称服务器进行首次解析尝试(如果它是记录中的第一个条目)时,才会降低性能。
本文讨论了如何监视网络中的网络数据包。在本文中,您使用了 netstat,并且使用 iptrace 和 tcpdump 等跟踪工具深入到了数据包级别。而且,您了解了如何使用 no 实用工具来优化网络。您使用这个实用工具研究了 tcp 和 udp 工作负载优化,同时还了解了一些其他值得关注的参数。您进行了一些优化更改,并了解到如何优化某些设置。您还研究了 ARP 缓存优化,并且看到了如何监视和优化 ARP 统计。您查看了 ISNO,并了解了如何针对接口来优化特定的 no 可调参数。您还了解了名称解析,以及如何通过微调解析主机名的方式轻松提高性能。
学习
-
AIX
wiki:在这里获取 nmon 手册或下载。
-
Improving database
performance with AIX concurrent I/O:阅读这篇白皮书,了解关于如何改进数据库性能的更多信息。
-
Power
Architecture: High-Performance Architecture with a History:阅读这份白皮书。
- “Power to the people: A history of chip making at IBM”(developerWorks,2005 年 12 月):这篇文章介绍 IBM power 架构。
-
nmon analyser——生成 AIX 性能报告的免费工具(Steven Atkins,developerWorks,2006 年 4 月):可以从这里下载 nmon analyser。
-
nmon 性能:分析 AIX 和 Linux 性能的免费工具(Nigel Griffiths,developerWorks,2006 年 2 月):阅读这篇文章,了解关于 nmon 的信息。
-
来自 IBM 的 Operating System and Device Management 向用户和系统管理员提供完整的信息,当您执行系统备份和恢复、管理物理和逻辑存储器、以及调整适当的分页分区大小等任务时,
这些信息能够影响您选择选项。
-
AIX 7.1 Information Center 是关于 AIX 操作系统的技术信息源。
- IBM AIX Version 6.1 Differences Guide 是理解 AIX 6.1 中的变化的有用资源。
- IBM AIX
Version 7.1 Differences Guide 是理解 AIX 7.1 中的变化的有用资源。
- AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
- AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
- AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
-
AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
- IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。
-
Safari 书店:访问这个电子参考资料库,找到特定技术资源。
- developerWorks 技术活动和网络广播:随时关注 developerWorks 技术活动和网络广播。
-
Future Tech:访问 Future Tech 的站点,了解它们的最新产品。
获得产品和技术
-
Microcode
下载:访问该站点,获取您的适配器的当前发布信息。
-
IBM 试用软件:使用可以直接从 developerWorks 下载的软件构建您的下一个开发项目。
讨论
- 加入 developerWorks 中文社区。查看开发人员推动的博客、论坛、组和维基,并与其他 developerWorks 用户交流。
-
参与 AIX 和 UNIX® 论坛:
Martin Brown 成为专业作家已有七年多的时间了。他是题材广泛的众多书籍和文章的作者。他的专业技术涉及各种开发语言和平台 —— Perl、Python、Java™、JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、Solaris、Linux®、BeOS、Mac OS/X 等等,还涉及 Web 编程、系统管理和集成。Martin 是 Microsoft® 的主题专家(SME),并且是 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的定期投稿人,他还是 Computerworld、The Apple Blog 和其他站点的正式博客。您可以通过他的 Web 站点 : http://www.mcslp.com 与他联系。
Ken Milberg 是 PMP,同时也是 techtarget.com 的撰稿人/站点专家,他还为 searchopensource.com 提供 Linux 技术信息和支持。Ken 是 IBM Systems Magazine,Open Edition 的撰稿人和技术编辑。Ken 拥有 University of Maryland University College 的计算机与信息科学学士学位和技术管理科学硕士学位。他是 Long Island POWER-AIX 用户组的创始人和负责人。这些年以来,他在各种规模的企业工作过,并且担任过各种职位,包括 CIO 和高级 AIX 工程师。他现在在 Future Tech 工作,这是一家总部设在长岛的 IBM 业务合作伙伴。Ken 不仅是已通过 PMI 认证的项目管理专业人员(PMP),还是通过 IBM 认证的高级技术专家(CATE,IBM System p5 2006)。