ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

用Nginx高并发,实现抢票系统(最简单实现思路)

2019-08-05 10:42:40  阅读:338  来源: 互联网

标签:socket 修改 实现 抢票 tcp Nginx nginx 10240 并发


最近接到一个时间特别紧的抢票系统项目,只有10天时间,要面对6万高并发抢票,实现核心思路如下:

1.使用nginx限流,超过并发数,直接返回特定html页面

三种常见nginx限流方式为:

1)、limit_conn_zone

2)、limit_req_zone

3)、ngx_http_upstream_module

这里就不详细参数,网上文章比较多,并发数限制后,超过并发数的,就会返回503错误,503错误页面,可以按如下方式定制页面,例如定制页面为“服务器繁忙”或“操作太频繁,请稍后再试”类似信息,具体配置如下:

server {
     listen 80;
     error_page  503  /503.html;

     location /test {
          return 502;
     }
}

 

2.nginx集群

nginx集群配置文档比较多,这里就不累赘。

 

3.修改socket限制

1.对socket方面的优化

这一步又要分为两个方面的设置:

1)操作系统(linux)的设置:

@ socket 的最大连接数的修改         在centos中修改socket最大连接数的方法     (这里的文件是进程文件已经在运得的,不能使用vim编辑器修改),方法如下

echo 50000 > /proc/sys/net/core/somaxconn   (系统默认的值是128,现在改成50000)

@  加快系统的tcp回收机制 (系统默认tcp在断开后还会存活一段时间) 方法如下

echo  1 > /proc/sys/net/ipv4/tcp_tw_recycle  (系统默认是0,修改为1)

                @ 允许空的tcp回收利用 方法如下

echo 1 >/proc/sys/net/ipv4/tcp_tw_reuse  (系统默认为0,修改为1)

@ 让系统不做洪水抵御保护,(当系统检测到80端口在大量的请求时,会自动给返回信息中增加 cookie ,还验证客户端身份,从而避免受到攻击,但这时只是高并发,并不是攻击,所以要把这个抵御机制给关闭) 方法如下

echo 0 >/proc/sys/net/ipv4/tcp_syncookie (系统默认为1,修改为0)

2)nginx的设置:

@  允许子进程打开的连接 ,在event段中   worker_connections 1024;  nginx默认能打开1024个连接

修改     worker_connections 10000;  修改为可以打开10000个socket连接

2.对文件系统方面的优化

1)操作系统方面:

@  让操作系统允许打开更多的文件 ulimit -n(设置一个比较大的值)

ulimit -n 10240;     (把操作系统允许打开文件的最大值设为10240,原本的默认值是1024)

2)nginx 配置子进程可以打开的文件个数

在nginx全局的配置中  worker_processes 1;下面加上worker_limit_nofile 10240;

@ work_limit_nofile 10240  ;  (nginx的子进程可以打开10240个文件)

 

标签:socket,修改,实现,抢票,tcp,Nginx,nginx,10240,并发
来源: https://blog.csdn.net/jlq_diligence/article/details/98479214

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有