问题描述
我们正在开发具有 1000 个虚拟主机的聊天应用程序。每个虚拟主机一个公司。我们正在挣扎超过 20 个虚拟主机,服务器有时会变慢。单个节点中可能有多少虚拟主机。添加1000个虚拟主机时服务器的配置是什么。
操作系统:Centos 8 版本:ejabberd20.04 数据库:MysqL
如果对我有任何帮助,那将是非常有用的。
解决方法
我怀疑操作系统会在试图让十多个虚拟机满意的情况下陷入困境。 (正如你发现的只有 20 个。)这是一台强大的机器吗?我会使用带有单个 MySQL 实例的单个服务器,并将 company_id
作为许多表中 PRIMARY KEY
的一部分。
(这个问题在 dba.stackoverflow.com 中可能更有吸引力。这个 stackoverflow.com 更侧重于编码。)
相比之下,MySQL 本身最多可以达到一百左右真正的并发查询。几千人聊天是没有问题的,因为他们真的并没有同时做任何事情。
使用 VM,您拥有以下层:
- 操作系统协调虚拟机
- 每个 VM 协调其中的进程(MySQL 等)
- 每个 MySQL 协调连接。
使用单个 MySQL 实例:
- 一个操作系统,没有虚拟机操作系统。
- 一个 MySQL。
- 很多连接(不是大问题)。
- 相同数量的活动连接(很少超过一打)。
此外,让我们看看 RAM 使用情况。
- 单个对话将涉及可能一兆字节的数据(聊天对话、索引等)。
- 加载了 MySQL(代码、数据、开销等)的虚拟机可能需要 1 GB 以上的容量。
这意味着一千个虚拟机可能需要 TB 的 RAM,只是为了最低限度的使用。同时,相同流量的整合聊天平台可以处理(我估计)大约 4GB。
(如果你有不可告人的理由想要做虚拟机,那就说出来。)