Linux环境下Nginx,系统内核及TCP优化参考

政林 2020-11-15 764浏览 0条评论
首页/正文
分享到: / / / /

   Nginx (engine x) 是一个高性能的HTTP反向代理web服务器件,同时也提供了IMAP/POP3/SMTP服务,本身轻量.开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,因此国内知名大厂例如:淘宝、京东、百度、新浪、网易、腾讯等等都在使用其作为网站。

在IT的日常工作学习中,我们该如何优化自己的Nginx服务器比较好呢,今天整理了以下参数作为参考值

一、文件配置参数优化
1. worker_processes 4;          CPU核心数
2. worker_rlimit_nofile 65535;        nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。
3. keepalive_timeout 60;         keepalive 超时时间。
4. client_header_buffer_size 4k;    客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
5. open_file_cache max=65535 inactive=60s;    打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。
6. open_file_cache_valid 80s;        多长时间检查一次缓存的有效信息。
7. open_file_cache_min_uses 1;    open_file_cache 中的inactive 参数时间内文件的最少使    用次数,如果超过这个数字文件描述符一直是在缓存中打开的,如果有一个文件在inactive 时间内一次没被使用将被移除。
8.server_tokens off;            http模块下加入关闭版本显示
9.expires 1d;            修改缓存时间

二、系统内核及TCP优化参考
vim /etc/sysctl.conf
sysctl常用命令
sysctl -a 查看所有参数
sysctl -p 加载配置文件

#开启内核转发功能,0为关闭改为1即可开启
net.ipv4.ip_forward = 1

#表示开启时间戳与窗口缩放的选项
net.ipv4.tcp_timestamps = 1

#启用源路由核查功能 
net.ipv4.conf.default.rp_filter = 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

#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1 
net.ipv6.conf.default.disable_ipv6 = 1

#禁用所有IP源路由 
net.ipv4.conf.default.accept_source_route = 0  

#开启有选择的应答
net.ipv4.tcp_sack = 1  
#支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
net.ipv4.tcp_window_scaling = 1  

# 处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

三、如何自定义返回给客户端的404错误页面
客户端使用浏览器访问不存在的页面,会提示404文件未找到
charset utf-8;               //中文时修改该选项
error_page   404  /404.html;    //自定义错误页面
[root@ ~]# ss  -anptu  |  grep nginx

四、ab高并发测试

[root@ ~]# ab -n 2000 -c 2000 http://127.0.0.1/

五、浏览器本地缓存静态数据
1)使用Firefox浏览器查看缓存

定义对静态页面的缓存时间
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires        1d;            //定义客户端缓存时间为1天
}

[root@client ~]# firefox http://192.168.1.1/tupian.jpg
在firefox地址栏内输入about:cache,查看本地缓存数据,查看是否有图片以及过期时间是否正确。

请每一项修改都记得保存后服务重启哦

点击这里给我发
消息
最后修改:2020-11-15 13:28:46 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇

发表评论

评论列表

还没有人评论哦~赶快抢占沙发吧~