大并发网站Nginx服务器优化

对于大并发网站可以从减少请求和提升性能两个角度考虑
减少请求可以从以下方面考虑:
1.从开发角度,合并css, 背景图片, 减少mysql查询等。
2.利用nginx的expires、浏览器缓存等,减少查询。
3.利用cdn来响应请求,从而降低到服务器请求。

做了尽可能降低请求的优化后,最终剩下的,就是不可避免的请求了。所以,到了这一步就不要再考虑减少请求这个方向了,而是思考如何更好的响应高并发请求。可以通过Nginx服务器优化、服务器集群+负载均衡等方式来提升响应能力.

服务器集群+负载均衡很好理解,既然响应是不可避免的,我们要做的是把工作内容”平均”分给每台服务器。最理想的状态 每台服务器的性能都被充分利用。这里主要谈一下Nginx服务器本身性能的优化。

Nginx服务器本身性能的优化,又可从文件优化和socket优化两个方面考虑。
一.文件优化
1.修改每个shell可以同时打开的最大文件数
Linux系统默认每个shell可以同时打开的最大文件数有限制,可通过ulimit -n 来查看和设置,默认为1024,而网络IO在linux也是作为文件来管理。受此参数影响,当访问量较大时,系统性能会出现瓶颈,后台Nginx日志会报出socket: Too many open files错误。1024这个值是非常少的,在大并发下根本不够用,应该调大。ulimit -n 重启后失效,要永久有效,需要修改/etc/security/limits.conf文件

# 在limits.conf文件内添加如下行“*”标识用户,*为所有用户,可改为用户名。
* soft nofile 65535
* hard nofile 65535

2.增加nginx的允许打开文件数
增加子进程允许打开的文件数(worker_rlimit_nofile)的数量。
二.socket优化
1.修改系统最大socket连接数,修改/proc/sys/net/core/somaxconn文件,可以设置一个比较大的值,默认是128。
2.tcp连接使用完毕不会立即就断开,是有延迟的。可以设置tcp连接是否立即回收,通过加快tcp连接回收来提高性能。修改/proc/sys/net/ipv4/tcp_tw_recycle为1,开启快速回收,默认为0。
3.设置空的tcp允许回收利用。修改/proc/sys/net/ipv4/reuse为1。
4.关闭洪水抵御
当访问量较大时,查看Linux系统dmesg日志可能会出现possible SYN flooding (疑似洪水攻击)字样。修改/proc/sys/net/ipv4/tcp_syncookies为0,关闭洪水抵御。
5.增加nginx的允许打开连接数
前面是系统层面,从nginx层面就是增加子进程允许打开的连接数(worker_connections)的数量。
6.关闭Nginx的keepalive或者减少keepalive_timeout时间,使http连接快速关闭
在高并发的情况下, keepalive会占据大量的socket连接,可能造成过多waiting进程。keepalive虽然有利于减少连接握手次数,但在高并发网站,连接非常珍贵的情况下,应该关闭keepalive。如果一定要用,也要减少keepalive_timeout时间,控制在2秒以内。

写于2020年4月,全球疫情肆虐时。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值