本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告

戒除浮躁,读好书,交益友


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:邢红瑞的blog
日志总数:523
评论数量:1142
留言数量:0
访问次数:9692205
建立时间:2004年12月20日




[linux kernel]Linux内核: 修改TCP/IP调优参数(转)
文章收藏,  网上资源,  软件技术,  电脑与网络

邢红瑞 发表于 2006/12/17 16:35:39

所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数, 后面是它们的含义:   1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲   2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲   3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在(请参考RFC 1323)TCP的包头增加12个字节   4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答   5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1   6. rmem_default — 默认的接收窗口大小   7. rmem_max — 接收窗口的最大大小   8. wmem_default — 默认的发送窗口大小   9. wmem_max — 发送窗口的最大大小   /proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失.   建议在系统启动时自动修改TCP/IP参数:   把下面代码增加到/etc/rc.local文件, 然后保存文件, 系统重新引导的时候会自动修改下面的TCP/IP参数:   echo 256960 > /proc/sys/net/core/rmem_default   echo 256960 > /proc/sys/net/core/rmem_max   echo 256960 > /proc/sys/net/core/wmem_default   echo 256960 > /proc/sys/net/core/wmem_max   echo 0 > /proc/sys/net/ipv4/tcp_timestamps   echo 1 > /proc/sys/net/ipv4/tcp_sack   echo 1 > /proc/sys/net/ipv4/tcp_window_scaling   TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳(取消在每个数据包的头中增加12字节), 支持更大的TCP窗口和TCP有选择的应答.   上面数值的设定是根据互连网连接和最大带宽/延迟率来决定.   注: 上面实例中的数值可以实际应用, 但它只包含了一部分参数.   另外一个方法: 使用 /etc/sysctl.conf 在系统启动时将参数配置成您所设置的值:   net.core.rmem_default = 256960   net.core.rmem_max = 256960   net.core.wmem_default = 256960   net.core.wmem_max = 256960   net.ipv4.tcp_timestamps = 0   net.ipv4.tcp_sack =1   net.ipv4.tcp_window_scaling = 1     调整 Linux 系统 本主题描述如何调整 Linux 操作系统以提高 WebSphere Application Server 的性能。 关于本任务 遇到性能问题时,请检查操作系统设置以确定这些设置是否适合于您的应用程序。由于 Linux 操作系统不是 WebSphere Application Server 产品,因此请注意,它可能会改变,并且结果可能会有所变化。 过程 根据调整需求,配置下列设置和变量: timeout_timewait 参数 描述:确定 TCP/IP 在释放已关闭的连接并再次使用其资源前必须经过的时间。关闭与释放之间的这段时间称为 TIME_WAIT 状态或者两倍最大段生存期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。通过减少此条目的值,TCP/IP 可以更快地释放关闭的连接,并为新连接提供更多资源。如果正在运行的应用程序需要快速释放连接、创建新的连接,并且因为许多连接处于 TIME_WAIT 状态而导致低吞吐量,那么调整此参数。 如何查看或设置: 发出以下命令,将 timeout_timewait 参数设置为 30 秒: echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout SUSE Linux Enterprise Server 8(SLES 8)SP2A - sched_yield_scale 调整 描述:Linux 调度程序对上下文切换过度非常敏感,因此,已将修订包集成到 SLES 内核分发中,以便在线程发生处理时引入延迟。在 SLES 8 SP3 中将自动启用此修订包,但在 SLES 8 SP2A 或更高版本中,必须明确地启用它。 如何查看或设置: 将 SLES 8 service pack 升级到 SP2A。 发出 sysctl -w sched_yield_scale=1 命令。 缺省值:0 建议值:1 RedHat Advanced Server 2.1 内核更新 描述:RedHat Advanced Server 2.1 的内核更新已实现了影响 WebSphere Application Server 性能(尤其是内存到内存 HTTP 会话复制性能)的更改。 如何查看或设置: 发出 uname -a 命令 如果正在运行 2.4.9-e.23 之前的任何内核,请至少升级到 RedHat Advanced Server 2.1 内核,最好升级到受支持的最新内核。 缺省值:2.4.9-e.3 建议值:2.4.9-e.23 Linux 文件描述符(ulimit) 描述:指定支持打开的文件数。通常,缺省设置适合于大多数应用程序。如果将此参数值设置得太小,那么可能会显示文件打开错误、内存分配故障或连接建立错误。 如何查看或设置:请参阅有关 ulimit 命令的 UNIX 参考页面以了解不同 shell 的语法。对于 KornShell shell(ksh)程序,要将 ulimit 命令设置为 8000,请发出 ulimit -n 8000 命令。使用 ulimit -a 命令来显示所有系统资源限制的当前值。 缺省值:对于 SUSE Linux Enterprise Server 9(SLES 9),缺省值是 1024。 建议值:8000 连接储备 描述:当由于入局连接请求比率过高而导致连接故障时,请更改下列参数: echo 3000 > /proc/sys/net/core/netdev_max_backlog echo 3000 > /proc/sys/net/core/somaxconn TCP_KEEPALIVE_INTERVAL 描述:确定两次 isAlive 时间间隔探测之间的等待时间。 如何查看或设置:发出以下命令来设置此值: echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl 缺省值:75 秒 建议值:15 秒 TCP_KEEPALIVE_PROBES 描述:确定超时前的探测次数。 如何查看或设置:发出以下命令来设置此值: echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes 缺省值:9 秒 建议值:5 秒 To support over 500k users, you *need* - A 64 bits hardware/kernel (AMD64, Opterons) - At least 8GB of ram - A recent linux kernel (2.6.x) About tuning, I prefer to not fully disclose them because servers are targets of many attacks, so it's better not help hackers. The most touchy thing is the IP route cache : You have to tune it or else the machine drops many connections (hint : rhash_entries=... in the boot append string) hints : echo 1 > /proc/sys/net/ipv4/route/gc_interval echo 150 >/proc/sys/net/ipv4/route/gc_timeout echo 2 >/proc/sys/net/ipv4/route/gc_elasticity - Use of hugeTLB pages hint : echo xxx >/proc/sys/vm/nr_hugepages Tune tcp : echo "4096 49152 131072" >/proc/sys/net/ipv4/tcp_wmem echo xxxx >/proc/sys/net/ipv4/tcp_max_syn_backlog echo xxxx >/proc/sys/net/core/somaxconn echo 1200000 > /proc/sys/net/ipv4/tcp_max_tw_buckets echo 7 >/proc/sys/net/ipv4/tcp_retries2 echo "600000 650000 700000" >/proc/sys/net/ipv4/tcp_mem echo 0 >/proc/sys/net/ipv4/tcp_timestamps echo 0 >/proc/sys/net/ipv4/tcp_window_scaling echo 0 >/proc/sys/net/ipv4/tcp_sack echo 330000 >/proc/sys/net/ipv4/tcp_max_orphans echo "10000 62000" >/proc/sys/net/ipv4/ip_local_port_range others : echo 1300000 >/proc/sys/fs/file-max 为 Java 虚拟机(JVM)堆分配大页(针对 SLES 9 测试) 某些应用程序要求使用非常大的堆以提高性能。通过使用 CPU 和操作系统提供的“大页”支持,可以降低 CPU 管理大型堆的开销。以下示例假定大页大小为 4MB,并且期望的堆大小为 2300MB。 通过 sysctl.conf 文件(此文件通常是 /etc/sysctl.conf)设置下列三个设置。 注: 您必须具有 root 用户访问权才能修改此文件。并且,在尝试修改此文件前,请验证此文件是否是只读的。 通过发出以下命令,设置大页数(2300MB = 575 * 4MB): vm.nr_hugepages = 575 通过发出以下命令,将最大共享段大小设置为 2300MB 加上一个较小的增量(大约 95MB)(2511724800 = 2300MB * 1048576 字节/MB + 100000000 字节): kernel.shmmax = 2511724800 通过发出以下命令,设置要共享的总内存量:kernel.shmall = 2511724800 指定 -Xlp JVM 选项,以使 JVM 堆能够利用大页。 将 Xmx JVM 选项设置为 2300MB。 将程序文本重新定位到较低的虚拟内存地址(0x10000000)中,从而为较大的堆提供更多地址空间。在 SUSE Linux Enterprise Server 9 上,请运行以下命令来重新定位 JVM 调用脚本或 .profile 文件中的文本: echo "0x10000000" > /proc/self/mapped_base 结果 此调整过程提高了 Linux 操作系统上 WebSphere Application Server 的性能。


阅读全文(3502) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.066 second(s), page refreshed 144751277 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号