内核优化
1、内核参数:用来约束LINUX系统内核、软件配置文件的参数 2、/etc/sysctl.conf 修改这个文件相当于修改/proc/sys/目录配置文件 3、sysctl -p 重启加载内核/etc/sysctl.conf配置文件
优化参数及说明
#开启内核转发功能
net
.ipv4
.ip_forward
= 1
#表示开启时间戳与窗口缩放的选项
net
.ipv4
.tcp_timestamps
= 1
#表示开启重用,允许将TIME
-WAIT sockets重新用于新的tcp连接
重点net
.ipv4
.tcp_tw_reuse
= 1
#表示开启TCP连接TIME
-WAIT sockets的快速回收,让连接更快释放,默认为
0,表示关闭
重点net
.ipv4
.tcp_tw_recycle
= 1
#在内核内存中netfilter可以同时处理的任务数量(连接请求,连接跟踪条目)
重点net
.ipv4
.ip_conntrack_max
= 655360
#打开
FACK(Forward ACK
)拥塞避免和快速重传功能(转发确认,不要在缓冲区停留)
重点net
.ipv4
.tcp_fack
= 1
#选择性应答
(SACK
)是TCP的一项可选特性,可以提高某些网络中所有可用带宽的的使用率(选择性应答,提高网络传输效率
,高并发时才可以测试出来)
重点net
.ipv4
.tcp_sack
= 1
#可以接收多少个SYN请求数,缓冲列队列长度的意思,可以改大,默认
1024
重点net
.ipv4
.tcp_max_syn_backlog
= 8192
#表示用于向外连接的端口范围
1024-65000,默认 客户端机器上配置
重点net
.ipv4
.ip_local_port_range
= 1024 65000
#开启SYN缓存,开启SYN洪水攻击保护。TCP建立连接的
3次握手过程中,当服务端收到最初的SYN请求时,会检查应用程序的syn_backlog(上条说的SYN队列)队列是否已满,启用syncookie,可以解决超高并发时的Cant
't Connet'问题。但是会导致TIME_WAIT状态fallback为保持
2MSL时间,高峰期时会导致客户端可复用连接而无法连接服务器
重点net
.ipv4
.tcp_syncookies
= 1
#系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息,默认值为
180000,设为较小数值此项参数可以控制TIME_WAIT套接字的最大数量,避免服务器被大量的TIME_WAIT套接字拖死。(是TCP挥手时出现的,等待关闭状态)
重点net
.ipv4
.tcp_max_tw_buckets
= 5000
###
#打开重传重组包功能,为
0的时候关闭重传重组包功能
重点net
.ipv4
.tcp_retrans_collapse
= 1
#对于一个新建连接,服务器端内核要发送多少个SYN连接请求才决定放弃
重点net
.ipv4
.tcp_syn_retries
= 2
#显示或设定linux回应SYN要求时尝试多少次重新发送初始SYN
,ACK封包后才决定放弃
,与上保持一致,功能与上一样,只是加了一个ACK,如果与上条冲突,以此条为准
重点net
.ipv4
.tcp_synack_retries
= 2
#系统所能处理不属于任何进程的TCP sockets最大值(错误及异常的请求)
重点net
.ipv4
.tcp_max_orphans
= 10000
#如果TCP连接在空闲
30秒后,内核才发起
probe(探查
),如果probe3次(每次
3秒即tcp_keepalive_intvl值)不成功,内核才彻底放弃,认为连接已失效
重点net
.ipv4
.tcp_keepalive_time
= 30
重点net
.ipv4
.tcp_keepalive_probes
= 3
重点net
.ipv4
.tcp_keepalive_intvl
= 3
#放弃回应一个TCP连接请求前,需要进行多少次重试
net
.ipv4
.tcp_retries1
= 5
#在丢弃激活(已建立通讯状况)的TCP连接之前,需要进行多少次重试
net
.ipv4
.tcp_retries2
= 5
#表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN
-WAIT
-2 状态的时间
重点net
.ipv4
.tcp_fin_timeout
= 10
net
.ipv4
.tcp_mem
= 178368 237824 356736
#低于此值,TCP没有内存压力
net
.ipv4
.tcp_mem
[0]
#在此值下,进入内在压力阶段
net
.ipv4
.tcp_mem
[1]
#高于此值,TCP拒绝分配socket
net
.ipv4
.tcp_mem
[2]
#开启恶意icmp错误消息保护
重点net
.ipv4
.icmp_ignore_bogus_error_responses
= 1
注:
1、功能测试
netstat
-an 可以看TIME_WAIT状态信息
lsof 查看系统打开了多少文件
查看写的速度
[root@mail
~]# dd
if=/dev
/zero of
=test
.img bs
=1M count
=1000
1000+0 records in
1000+0 records out
1048576000 bytes
(1.0 GB
) copied
, 6.26145 s
, 167 MB
/s
并发访问
while sleep
1;do ab
-c
100 -n
1000 http
://www
.jfedu
.net
/ ;done
每秒
100次并发
1000次
dd
if=/dev
/zero of
=test
.img bs
=1M count
=2000
写入文件,每次
1M,
2000次
2、 以下两个参数最好不要同时启用,同时启用后同一局域网中机器同时访问时会有一部分访问受影响(时间较小的访问请求会丢失,可以关闭 快速回收)
#表示开启时间戳与窗口缩放的选项
net
.ipv4
.tcp_timestamps
= 1
#表示开启TCP连接TIME
-WAIT sockets的快速回收,让连接更快释放,默认为
0,表示关闭
重点net
.ipv4
.tcp_tw_recycle
= 1
---------------end