当前位置: 首页 / 新闻 / 网站知识 / 正文

知识普及:网站搭建来兼容数千并发的详细步骤!!

来源:qiuzhx时间:2020-04-23



1.实现一个多并发的网站任务,开始做的时候并不知道实际的并发量会有多少,经过讨论决定使用如下的流程方式



2.解释一下,收到客户端发过来的请求后,通过负载均衡分配到空闲的web服务器进行请求处理,请求期间的操作都是使用redis作为数据读取和存储(不要用数据库,要不然会出现MySQL连接数过大,服务器卡死的情况),然后购票成功后再写入数据库中。下面分布解说

3.首先需要用到负载均衡,不要以为很麻烦,现在很方便,阿里云就提供相应的服务,直接购买就好,然后将服务器绑定到负载均衡实例中,域名指向负载均衡实例就好,可以写两个静态页面分别放到web服务器1和web服务器2中,不停刷新看看是否是请求到不同的服务器了。

4.负载均衡可以跑通知之后将自己的代码传到两台服务器中,然后测试能否跑起来。

5.在测试过程中发现用户登录有问题,因为是购票系统,所以肯定存在用户模块,这里用户登录使用session存储的,所以搭建负载均衡还牵扯到一个session共享的问题。不过用到的是laravel框架,框架里面的session默认是使用文件存储方式,支持redis存储,而我们两台web服务器连接的是同一个redis服务器,所以将存储方式换成redis存储后就解决了问题。其他不支持的框架也可以使用memcache,数据库等解决,方法很多,可以单独看看这方面的解决方法。

6.代码传到服务器也能跑通之后,就需要进行压力测试了。

7.使用的服务器配置是2台2核8G内存5M宽带的web服务器,一台4核16的数据库redis服务器。

8.并发测试工具阿里云也有,买了一个便开始测试,但实际测试过程中发现与理想的差距甚大,4百并发便已经有不少失败请求。

9.优化吧,首先修改了一下nginx和php-fpm之间的通信方式,把原来TCP修改成了UNIX Domain Socket.相比之下减少了很多tcp/ip层,物理层,路由层之间的连接,再跑一边,效果好了一点点。

10.然后发现再跑压测的时候,活跃进程数很低,发现PHP里面的配置max_children本来就很小,然后按照网上说的计算方式,把值调整到了400,接着监听,发现是好很多,但是活跃进程一直到60~80就上不去了,而查看cup,负载等都已经到100%,原来cpu忙不过来了。。。

11.升级cpu,到8核,内存升级到16G,然后max_children调整到了800,哇哦,质的飞跃,还是硬件给力,并发一两千还是支持的住的。

12.想要支持的并发跟多的话,可以通过增加web服务器来分担负载,程序优化优化,服务器方面的优化还有待提升,后面慢慢研究吧。