标题:redhat as4 高并发高负载系统优化参数配置 出处:沧海一粟 时间:Thu, 13 May 2010 09:55:20 +0000 作者:jed 地址:http://www.dzhope.com/post/647/ 内容: ulimit -n 8192 ##单一进程允许打开的最大文件数 echo 65532 > /proc/sys/fs/file-max ##Linux系统级的最大打开文件数限制 net.ipv4.ip_local_port_range = 1024 65000 ##将系统对本地端口范围限制设置为1024~65000之间 net.ipv4.ip_conntrack_max = 102400 ##系统对最大跟踪的TCP连接数限制设置为10240 net.ipv4.tcp_syncookies = 1 ##表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; net.ipv4.tcp_keepalive_time = 7200 ##tcp_keepalive_time 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。 如果这段时间内没有活动,则会发送保持活动信号。 如果网络工作正常,而且接收方是活动的,它就会响应。 如果需要对丢失接收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。 如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提高该值以减少开销。 net.ipv4.tcp_max_syn_backlog = 1024 ##增大队列SYN最大半连接数、防止SYN攻击、增加未完成连接队列(q0)的最大长度 net.ipv4.tcp_tw_reuse = 1 ##表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭; net.ipv4.tcp_tw_recycle = 1 ##表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。 net.ipv4.neigh.default.gc_thresh3 = 2048 net.ipv4.neigh.default.gc_thresh2 = 1024 net.ipv4.neigh.default.gc_thresh1 = 256 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 ##关闭ARP代理 net.core.netdev_max_backlog = 2048 ##该文件表示在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 net.core.dev_weight = 64 net.ipv4.tcp_rmem = 4096 87380 16777216 ##该文件包含3个整数值,分别是:min,default,max Min:为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下TCP socket都至少会有这么多数量的内存用于接收缓冲。Default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其它协议使用的 net.core.wmem中default的值。该值决定了在tcp_adv_win_scale、tcp_app_win和tcp_app_win的默认值情况下,TCP 窗口大小为65535。Max:为TCP socket预留用于接收缓冲的内存最大值。该值不会影响 net.core.wmem中max的值,今天选择参数 SO_SNDBUF则不受该值影响。缺省设置:4096 87380 174760 net.ipv4.tcp_wmem = 4096 65536 16777216 ##该文件包含3个整数值,分别是:min,default,max Min:为TCP socket预留用于发送缓冲的内存最小值。每个TCP socket都可以使用它。Default:为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem中default的 值,一般要低于net.core.wmem中default的值。Max:为TCP socket预留用于发送缓冲的内存最大值。该值不会影响net.core.wmem_max,今天选择参数SO_SNDBUF则不受该值影响。默认值为128K。缺省设置:4096 16384 131072 net.ipv4.tcp_rfc1337 = 1 ##这个开关可以启动对于在RFC1337中描述的“tcp的time-wait暗杀危机”问题的修复。启用后,内核将丢弃那些发往time-wait状态TCP套接字的RST包。却省为0。 net.ipv4.tcp_sack = 0 ##该文件表示是否启用有选择的应答(Selective Acknowledgment),这可以通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);(对于广域网通信来说)这个选项应该启用,但是这会增加对 CPU 的占用。 net.ipv4.tcp_fin_timeout = 20 ##timeout_timewait 值确定了在 TCP/IP 可释放已关闭的连接并复用其资源之前,必须等待的时间。 关闭和释放之间的时间间隔称为 TIME_WAIT 状态或最长分段生命周期的两倍(2MSL)状态。 在此期间,重新打开客户机和服务器之间的连接比新建一个连接的开销要小。 通过减小该项的值,TCP/IP 可更快地释放已关闭的连接,并可为新连接提供更多的资源。 如果由于多个连接处于 TIME_WAIT 状态导致吞吐量较低,从而正在运行的应用程序需要快速释放连接、创建新的连接或是进行调整,请调整这个参数。 对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60 秒。过去在2.2版本的内核中是 180 秒。您可以设置该值,但需要注意,如果您的机器为负载很重的web服务器,您可能要冒内存被大量无效数据报填满的风险,FIN-WAIT-2 sockets 的危险性低于 FIN-WAIT-1,因为它们最多只吃 1.5K的内存,但是它们存在时间更长。另外参考 tcp_max_orphans。 net.ipv4.tcp_keepalive_probes = 5 ##tcp_keepalive_probes 值定义了 TCP/IP 通过现有连接重新发送未返回应答的保持活动的消息次数。 如果您的网络性能很差,可能需要提高该值以保持有效的通信。 如果您的网络性能很好,可以减小该值以减少验证接收方是否丢失所花费的时间。 net.ipv4.tcp_max_orphans = 32768 ##系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降低这个限制。 net.core.optmem_max = 20480 ##该文件表示每个套接字所允许的最大缓冲区的大小。 net.core.rmem_default = 16777216 ##该文件指定了接收套接字缓冲区大小的缺省值(以字节为单位)。 net.core.rmem_max = 16777216 ##该文件指定了接收套接字缓冲区大小的最大值(以字节为单位)。 net.core.wmem_default = 16777216 ##该文件指定了发送套接字缓冲区大小的缺省值(以字节为单位)。 net.core.wmem_max = 16777216 ##该文件指定了发送套接字缓冲区大小的最大值(以字节为单位)。 net.core.somaxconn = 1024 ##调高系统同时发起并发TCP连接数;可能需要提高连接储备值,以应对大量突发入局连接请求的情况。 如果同时接收到大量连接请求,使用较大的值会提高受支持的暂挂连接的数量,从而可减少连接失败的数量。 net.ipv4.tcp_orphan_retries = 1 ##在近端丢弃TCP连接之前,要进行多少次重试。默认值是 7 个,相当于 50秒–16分钟,视 RTO 而定。如果您的系统是负载很大的web服务器,那么也许需要降低该值,这sockets 可能会耗费大量的资源。另外参考tcp_max_orphans。 net.ipv4.tcp_max_tw_buckets = 18000 ##系统同时保持timewait套接字的最大数量。系统在同时所处理的最大timewait sockets 数目。如果超过此数的话,time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要人为的降低这个限制,不过,如果网络条件需要比默认值更多,则可以提高它(或许还要增加内存)。 net.ipv4.ip_forward = 0 ##该文件表示是否打开IP转发。0,禁止1,转发 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.all.rp_filter = 1 ##开启IP源地址验证,防止IP地址欺骗,在任何情况下都应开启,默认关闭 kernel.sysrq = 1 ##启用SsyRq net.ipv4.conf.default.send_redirects = 1 ##Linux的路由重定向 net.ipv4.conf.all.send_redirects = 0 ##Linux的路由重定向 0为关闭 less /etc/security/limits.conf * soft nofile 32768 * hard nofile 32768 ###重启后用户的最大打开文件数就变成 32768 了,当然你也可以看情况再加大。 Tomcat 部分配置: Generated by Bo-blog 2.1.1 Release