• 生活小妙招免费各类生活中的小问题知识以及音乐简谱等,是你了解世界未知知识的好地方。

1秒1000并发,高并发需要什么样的服务器?

十万个为什么 空空 2024-3-21 00:05:18 6次浏览

关于问题1 秒 1000 并发,高并发需要什么样的服务器?一共有 5 位热心网友为你解答:

【1】来自网友【java 保佑我发大财】的最佳回答:

一、服务器配置优化

首先我们知道几个概念:

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

参考资料:

【2】来自网友【飞飞 lin】的最佳回答:

硬件层面需要根据数据量,业务复杂度一起综合评估的,建议先买两台云主机(4 核 8g 内存)搭建集群环境就行。后继再根据实际需要扩展。

软件层面:

一、如果是写入操作的,应该:

1.1 使用消息队列来异步处理(如 activemq 等),避免消息堵塞

1.2 使用 MongoDB 的批量写入功能,比如每 1000 条数据才写入一次

二、MongoDB 部署为集群模式,可以分散压力

三、如果是读取操作,可以考虑加入 redis,将热点数据进行一级缓存

【3】来自网友【老顾聊技术】的最佳回答:

1 秒 1000 的并发不是太高,只要简单优化一下就行了,现在一般的服务器应该都能够支撑。首先看看线程池分配,看看 linux 系统的 io 数限制。

当然不建议让数据库去抗频繁的高并发,应该在整体架构上面作优化,在数据库上层是不是可以考虑架构缓存服务器,还有针对具体业务做些优化。

【4】来自网友【不止于编程】的最佳回答:

是否考虑优化一下业务流程?

【5】来自网友【互联网 diff】的最佳回答:

读多还是写多,索引建得如何?慢 sql 有哪些?单次访问数据量如何?

从正常角度讲,远远没有到数据库的性能瓶颈,具体问题要具体分析。

喜欢 (0)