1秒1000并发,高并发需要什么样的服务器?
▍┝1秒1000并发,高并发需要什么样的服务器?
一、服务器配置优化
首先我们知道几个概念:
MongoDB是NoSQL面向文档型存储数据库,属于重内存的类型,特别是在MongoDB 3.2默认的 WiredTiger引擎下,默认会占用大量的内存来保证自身性能。
因此MongoDB所需要的服务器,以题主使用的云主机为例,选型思路主要是重存储型云主机,为了保证Mongo集群的读写性能,需要以SSD云盘前提下尽可能大内存的主机,同时vCPU也不能太低会影响压缩存储效率。
如果技术储备不够,在参数调优、版本升级、数据迁移中有问题怕踩坑,可以采用一些成熟的云服务提供商的基于容器的云原生Mongo Operator产品,这样可以少踩许多坑。
参考网易轻舟这类商业化中间件
二、软件层优化
简单介绍下我在MongoDB优化中的思路:
MongoDB主要包括mongod和mongo两个进程。
mongod是处理MongoDB系统的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
mongo则是一个命令行工具用于连接一个特定的mongod实例。当我们没有带参数运行mongo命令它将使用默认的端口号和localhost连接
1、参数调优
操作系统OS层面连接数优化
要提供高并发的响应能力,首先要考虑提升MongoDB本身的服务能力,mongod进程的连接数主要是受到操作系统的默认文件描述符和进程/线程数限制。
以centos为例,需要通过ulimit -a 查看open files是否够大,如果太小可以通过以下命令设置用户/进程允许打开的文件句柄数。
ulimit -n 1048576 ulimit -u 524288
参考资料:点————看
▍✭1秒1000并发,高并发需要什么样的服务器?
硬件层面需要根据数据量,业务复杂度一起综合评估的,建议先买两台云主机(4核8g内存)搭建集群环境就行。后继再根据实际需要扩展。
软件层面:
一、如果是写入操作的,应该:
1.1 使用消息队列来异步处理(如activemq等),避免消息堵塞
1.2 使用MongoDB的批量写入功能,比如每1000条数据才写入一次
二、MongoDB部署为集群模式,可以分散压力
三、如果是读取操作,可以考虑加入redis,将热点数据进行一级缓存
▍☃1秒1000并发,高并发需要什么样的服务器?
1秒1000的并发不是太高,只要简单优化一下就行了,现在一般的服务器应该都能够支撑。首先看看线程池分配,看看linux系统的io数限制。
当然不建议让数据库去抗频繁的高并发,应该在整体架构上面作优化,在数据库上层是不是可以考虑架构缓存服务器,还有针对具体业务做些优化。
▍⇧1秒1000并发,高并发需要什么样的服务器?
是否考虑优化一下业务流程?
▍╢1秒1000并发,高并发需要什么样的服务器?
读多还是写多,索引建得如何?慢sql有哪些?单次访问数据量如何?
从正常角度讲,远远没有到数据库的性能瓶颈,具体问题要具体分析。
------------------
推荐阅读:
研究生考生初试单科未达国家线而参加复试最终录取,不久因此被取消录取资格,正常吗?