⾼并发下的服务器配置与优化(nginx限流⽅案)
还是没有经验啊!⾯对⼀个⾼并发的秒杀活动。最终统计24⼩时内有
300多万的PV  和 30多万的UV
在活动开始之前,这边写了⼀个⼊⼝的数据统计(相当于每点击⼀次⼊⼝页⾯,就增加⼀次PV,再统计下UV ),然后每隔五分钟进⾏⼀次统计(统计PV和UV的增长量和总量)
(‾◡◝) ⼀开始还是很⾃信的,毕竟都是每分钟⼏百个的访问量。对于三台⾼配的服务器来说完全⽊有压⼒;
知道开抢的前⼗分钟(  )  访问量由1000/Min  飙到   Whatthe F?
然后不出意外地服务器蹦了!!⼀个⼩时内的负载均衡服务器的errLog 达到了1Gib的容量(。﹏。*)
——————追溯到⼀开始之前的准备⼯作————————
三台服务器:8核64gib内存和⾜够的硬盘空间;其中⼀台服务器作为Nginx负载均衡服务器,⽤户分发流量给另外两台服务器
代码逻辑处理:使⽤redis作为主要的数据缓存,⽤于请求的快速接收和存储。减少对数据库的IO。然后通过队列的模式在⼀个个写⼊数据库;//事实证明。内存作为数据的临时存储是⾮常有效的。cpu的消耗始终没有超过10%;
⽂件描述符:ulimit -n可以查看当前可使⽤的数量,默认是1024;
购买使⽤CDN加速,将前端的静态⽂件放置在CDN上,⾮常有效的减少带宽压⼒。你算算如果100k的js+css⽂件乘以⼏万的请求,可想⽽知,服务器的宽带远远不⾜。
以下附上⼏个⽂件描述符常⽤的命令
//查看当前系统正在打开的描述符
cat /proc/sys/fs/file-nr
//注意最⼤描述符不能超过
cat /proc/sys/fs/nr_open
//修改资源符
sudo vim /etc/f
>在后⾯加上这两句 soft是警告值,hard是极限值
* soft nofile 65535
* hard nofile 65535
worker_processes 16  #这个根据cpu核数来限制
worker_connections 65535 #这个不加的话默认是1024个⽹络连接,⾼并发的情况下,就会报错
http{
large_client_header_buffers 4 16k;
client_body_buffer_size 128k;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
client_max_body_size 100M;负载均衡服务器有哪些
keepalive_timeout 65;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
include /etc/nginx/conf.d/*.conf;
}
upstream backend {
server ip1;
server ip2;
}
limit_req_zone $binary_remote_addr zone=mylimit:20m rate=1r/s;  #这⾥做了限流处理意思是开启mylimit的zone ,这⾥限制的是1次/秒(单个ip),如果超过这个限制,会被拒绝请求
server {
listen 80;#监听80端⼝
listen 443 ssl;#监听443 https的端⼝
server_name localhost;#域名
//这⾥配置https签名
#ssl on;#这个要关掉,避免https请求转发到http请求,因为upstream 指定的两台服务器,允许http请求
#下⾯这块是标准的https配置
ssl_certificate /etc/nginx/conf.d/;
ssl_certificate_key /etc/nginx/conf.d/cert/localhost.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
#这块是指定/api/下所有的请求进⾏限流配置,limit_req_zone在此处⽣效
}
顾名思义。限流的作⽤是⽤于减少单位时间的请求量。在⽤户的体验⾓度来说,就会差很多;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。