繁体   English   中英

AWS的MongoDB性能问题

[英]MongoDB Performance Issue at AWS

我对MongoDB的性能有一些疑问。 在此先感谢您的帮助。

数据库架构

已根据以下说明安装数据库: https : //docs.aws.amazon.com/quickstart/latest/mongodb/step2.html

它有一个堡垒和三个副本。

DB在MongoDB 4.09中的Ruby on Rails 5应用程序中使用

问题

  1. 我想知道“ 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"
                            ]
                        }
                    }
                }
            },
  1. max_pool_size的一个好的值是什么? 每个Mongo DB节点大约有16 GiB的RAM和2个虚拟CPUS。 是否还有其他应从默认值修改的相关参数?

  2. 使用不同参数的并发API请求存在性能问题。 具有相同参数的API请求的平均响应为11毫秒,但是只要参数更改并且是并发的,平均响应为8904毫秒。 还有一些超时。 我想知道是什么原因引起的?

具有相同参数的API请求11毫秒

在此处输入图片说明

具有不同参数的API请求8904 ms

在此处输入图片说明

  1. 所有MongoDB主机都应在应用程序配置中列出。 哪个服务器是主要的服务器,例如在维护期间会随时间而变化。 如果该应用程序仅引用一台服务器并且该服务器正在重新启动,则该应用程序将无法定位其他任何服务器(其中一个可能是当前的主服务器),并且可能会发生故障。

    驱动程序执行集群中节点的发现,如果能够联系种子列表(配置中的服务器列表)中的节点,则驱动程序将能够找到集群中所有其他节点并遵循主要更改。 但是,如果您恰巧重新启动该应用程序,并且当时它仅引用一台服务器并且该服务器已关闭,则该应用程序将无法找到其他服务器。

  2. 最大池大小是每个客户端将保持的最大打开连接数。 16 GB RAM节点与200个打开的连接应该没有问题。 如果最大池大小设置得太小,则应用程序可能会遇到错误,因为它将无法获得连接以执行操作。

    请注意,最多200个粗略状态表明您期望同时执行大约200个操作,对于典型的Rails应用程序来说,这似乎不太可能。 但是,将最大值保留为200并没有错。

  3. 鉴于您提供的详细信息,特定的性能问题并不能真正回答。 缩小时间是花在应用程序中还是数据库中; 如果花费在数据库中,查询是什么以及查询之间的区别。 如果花费时间在应用程序中,则通常必须自己对应用程序进行概要分析,因为可能会花费很多时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM