【发布时间】:2019-10-16 09:16:42
【问题描述】:
我有几个关于 MongoDB 性能的问题。提前感谢您的帮助。
数据库架构
已根据以下说明安装了数据库: https://docs.aws.amazon.com/quickstart/latest/mongodb/step2.html
它有一个堡垒和三个副本。
该数据库用于带有 MongoDB 4.09 的 Ruby on Rails 5 应用程序
问题
- 我想知道“hosts”参数是应该包括所有副本还是只包括主副本?
mongoid.yml 配置
"mongoid": {
"production": {
"clients": {
"default": {
"options": {
"user": "USER",
"password": "PASS****",
"auth_source": "admin",
"read": {
"mode": "primary_preferred"
},
"max_pool_size": 200,
"min_pool_size": 10,
"ssl_verify": false
},
"database": "pro_db",
"hosts": [
"PRIMARY_REPLICANODE.3.0.53:27017",
"SECONDARY_NODE0.3.62.61:27017",
"SECONDARY_NODE1.3.80.80:27017"
]
}
}
}
},
max_pool_size 的合适值是多少?每个 Mongo DB 节点都有大约 16 GiB 的 RAM 和 2 个虚拟 CPU。是否还有其他相关参数需要修改默认值?
具有不同参数的并发 API 请求存在性能问题。具有相同参数的 API 请求的平均响应时间为 11 毫秒,但一旦参数更改并并发,平均响应时间为 8904 毫秒。还有一些超时。我想知道可能导致问题的原因是什么?
具有相同参数的 API 请求 11 毫秒
不同参数的 API 请求 8904 毫秒
【问题讨论】:
-
在评论任何有关性能的内容之前,应该考虑更多的事情。哪些查询需要更多时间,模式是什么?这些查询中使用了哪些参数?这些参数是否已编入索引?触发查询时 RAM 的使用情况是什么?磁盘 IOPS、复制延迟、写入和读取吞吐量等不同参数表示什么?在考虑了所有这些之后,您还应该考虑是否可以对您期望的查询模式进行分片(线性或散列)。
标签: ruby-on-rails mongodb mongoid