如何解决网站大规模高并发访问
提供几种供你思路:
1、网站页面静态化。静态化的页面为.html(.htm等)不需要web服务器重新加载项解析,只需要生成一次,以后每次都直接下载到客户端,效率高很多。
2、将网站的web服务器、数据库服务器、图片和文件服务器分开。通过将服务器专业化分工,以提高网站访问速度。因为图片和文件在下载的时候无论是IIS、Apache等服务器都会有很大压力。

3、设置专门的数据缓存服务器。将大量数据放到缓存数据区,在访问量少得时候存入数据,减少连接直接操作数据库的开销。
4、数据库集群、库表散列。大型网站在面对大量访问的时候,会显现数据库的瓶颈,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列来分散压力。
5、镜像。镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。
6、负载均衡。负载均衡将是大型网站解决高负荷访问和大量并发请求采用的高端解决办法。
7、最新:CDN加速技术。什么是CDN?CDN的全称是内容分发网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。CDN有别于镜像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。
优雅降级是指网站为了应付突然爆发的访问高峰,主动关闭部分功能,释放部分系统资源,保证网站核心功能正常访问的一个手段。淘宝每年一次的双十一促销活动就属于突然爆发的非常规访问高峰,淘宝的工程师每年都会关闭一部分非核心功能,如评价、确认收货等功能,保证交易功能的正常进行。
网站在流动计算基础之上实现自动优雅降级,是网站柔性架构的理想状态:监控系统实时监控所有服务器的运行状况,根据监控参数判断应用访问负载情况,如果发现部分应用负载过高,而部分应用负载过低,就会适当卸载低负载应用部分服务器,重新安装启动部分高负载应用,使应用负载总体均衡,如果所有应用负载都很高,而且负载压力还在继续增加,就会自动关闭部分非重要功能,保证核心功能正常运行。
1秒1000并发,高并发需要什么样的服务器
从题主的描述来看,这是一个以写入数据为主的应用,每秒1000个4k大小的数据,对于mongo db来说应该距瓶颈还有一定距离,不知道加硬件的依据是什么,服务器的cpu内存硬盘读写达到了什么程度。个人觉得还是程序写得有问题,建议仔细排查:
1秒1000的并发不是太高,只要简单优化一下就行了,现在一般的服务器应该都能够支撑。首先看看线程池分配,看看linux系统的io数限制。
当然不建议让数据库去抗频繁的高并发,应该在整体架构上面作优化,在数据库上层是不是可以考虑架构缓存服务器,还有针对具体业务做些优化。
一、服务器配置优化
首先我们知道几个概念:
MongoDB是NoSQL面向文档型存储数据库,属于重内存的类型,特别是在MongoDB 3.2默认的 WiredTiger引擎下,默认会占用大量的内存来保证自身性能。
因此MongoDB所需要的服务器,以题主使用的云主机为例,选型思路主要是重存储型云主机,为了保证Mongo集群的读写性能,需要以SSD云盘前提下尽可能大内存的主机,同时vCPU也不能太低会影响压缩存储效率。
如果技术储备不够,在参数调优、版本升级、数据迁移中有问题怕踩坑,可以采用一些成熟的云服务提供商的基于容器的云原生Mongo Operator产品,这样可以少踩许多坑。
参考网易轻舟这类商业化中间件
二、软件层优化
简单介绍下我在MongoDB优化中的思路:
MongoDB主要包括mongod和mongo两个进程。
mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
mongo则是一个命令行工具用于连接一个特定的mongod实例。当我们没有带参数运行mongo命令它将使用默认的端口号和localhost>毗连/p>
1、参数调优
操作系统OS层面连接数优化
要提供高并发的响应能力,首先要考虑提升MongoDB本身的服务能力,mongod进程的连接数主要是受到操作系统的默认文件描述符和进程/线程数限制。
以centos为例,需要通过ulimit -a 查看open files是否够大,如果太小可以通过以下命令设置用户/进程允许打开的文件句柄数。
ulimit -n 1048576 ulimit -u 524288
参考资料:点————看