一聚教程网:一个值得你收藏的教程网站

热门教程

linux中nginx内核参数优化配置

时间:2022-06-30 18:48:38 编辑:袖梨 来源:一聚教程网

内核参数优化配置

vi /etc/sysctl.conf
添加以下参数设置后运行命令:
/sbin/sysctl -p

关于Nginx内核参数的优化:
net.ipv4.tcp_max_tw_buckets = 6000
设定timewait的数量,默认是180000。

net.ipv4.ip_local_port_range = 1024 65000
允许系统打开的端口范围。

net.ipv4.tcp_tw_recycle = 1
启用timewait快速回收。

net.ipv4.tcp_tw_reuse = 1
开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。

net.ipv4.tcp_syncookies = 1
开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理。

net.core.somaxconn = 262144
web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而Nginx内核参数定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。

net.core.netdev_max_backlog = 262144
每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.ipv4.tcp_max_orphans = 262144
系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

net.ipv4.tcp_max_syn_backlog = 262144
记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。

net.ipv4.tcp_timestamps = 0
时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包。这里需要将其关掉。

net.ipv4.tcp_synack_retries = 1
为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。

net.ipv4.tcp_syn_retries = 1
在内核放弃建立连接之前发送SYN包的数量。

net.ipv4.tcp_fin_timeout = 1
如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60 秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_keepalive_time = 30
当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。以上就是对Nginx内核参数的详细介绍。

完整的内核优化配置:

net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 30
net.ipv4.ip_local_port_range = 1024 65000

例,Nginx+Keepalived高可用负载均衡

一、实验环境:

系统环境:CentOS 6.0 x86_64
Nginx版本:nginx v1.2.4
Keepalived版本:keepalived v1.2.1
Nginx-1:192.9.117.160 (Master)
Nginx-2:192.9.117.161 (Backup)
二、Nginx安装配置:
分别在两台服务器安装Nginx、keepalived,如下:

yum install -y pcre-devel 安装perl 兼容的正规表达式库

tar -xzf nginx-1.2.4.tar.gz && cd nginx-1.2.4 ; sed -i -e ‘s/1.2.4//g’ -e ‘s/nginx//TDTWS/g’ -e ‘s/”NGINX”/”TDTWS”/g’ src/core/nginx.h &&./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_stub_status_module –with-http_ssl_module

三、Keepalived安装配置:
tar -xzvf keepalived-1.2.1.tar.gz &&cd keepalived-1.2.1 && ./configure && make && make install

if

[ $? -eq 0 ];then

echo “Install keepalived success,please waiting configure keepalived ……………”

else

echo “Install keepalived failed ,please check install version !”

exit 0

fi

DIR=/usr/local/ ;cp $DIR/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ ; cp $DIR/etc/sysconfig/keepalived /etc/sysconfig/ ; mkdir -p /etc/keepalived ; cp $DIR/sbin/keepalived /usr/sbin/
Nginx、Keepalived软件安装完毕,111com.net接下来进行详细配置。
四、配置Keepalived:
两台服务器端keepalived.conf内容都为如下,都设置为backup,不抢占,注意修改优先级不同:
! Configuration File for keepalived

global_defs {

notification_email {

wgkgood@163.com

}

notification_email_from wgkgood@163.com

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_script chk_nginx {

script “/data/sh/check_nginx.sh”

interval 2

weight 2

}

# VIP1

vrrp_instance VI_1 {

state BACKUP

interface eth0

lvs_sync_daemon_inteface eth0

virtual_router_id 151

priority 100

advert_int 5

nopreempt

authentication {

auth_typePASS

auth_pass 1111

}

virtual_ipaddress {

192.9.117.162

}

track_script {

chk_nginx

}

}
如上配置,我们需要自己建立check_nginx脚本,以方便检查本地Nginx是否存活更好的切换。Check_nginx.sh脚本内容如下: www.111cn.Net
#!/bin/bash

#auto check nginx process

#2012-10-16 wugk

killall -0 nginx

if

[[ $? -ne 0 ]];then

/etc/init.d/keepalived stop

fi

五、Nginx 配置:

在两台Nginx服务器分别新建index.html测试页面,然后启动Nginx服务测试。
访问VIP http://192.9.117.162


Down掉192.9.117.160的Nginx服务,分别查看keepalived后台日志和ping VIP日志如下:
Oct 16 16:47:48 localhost Keepalived: Stopping Keepalived v1.2.1 (10/16,2012)
Oct 16 16:47:49 localhost Keepalived_vrrp: Terminating VRRP child process on signal

至此,Nginx+Keepalived高可用WEB架构搭建成功

热门栏目