Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Amazon Linux上的Mongo 3.4-最大同时连接数在4077处停止_Mongodb_Amazon Ec2 - Fatal编程技术网

Mongodb Amazon Linux上的Mongo 3.4-最大同时连接数在4077处停止

Mongodb Amazon Linux上的Mongo 3.4-最大同时连接数在4077处停止,mongodb,amazon-ec2,Mongodb,Amazon Ec2,我正在t2.micro EC2实例Amazon Linux 2.0 2017.12上运行mongoDB 3.4 下面是实例中的ulimit-a配置 core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pend

我正在t2.micro EC2实例Amazon Linux 2.0 2017.12上运行mongoDB 3.4 下面是实例中的ulimit-a配置

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3867
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 50000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3867
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
您可以看到打开的文件集的数量是50000。 因此,我预计mongo将允许近50000个到正在运行的mongo实例的连接。但我无法同时获得超过4077个连接。在/var/log/mongodb/mongod.log中,我可以看到当前打开的连接是4077,新连接被拒绝,因为它无法为新连接请求创建线程。 我甚至无法从终端连接到mongo外壳。无法创建套接字。如果我释放现在打开的4077连接,我可以连接到DB

如何在mongo配置文件中指定最大同时连接数?我是否更改操作系统环境中的任何其他参数,如ulimit

我可以看到,当前打开的连接是4077,新连接被拒绝,因为它无法为新连接请求创建线程

t2.micro实例只提供1GB的RAM。每个数据库连接都会发生故障,因此,使用4000多个连接,您可能已经耗尽了服务器的可用资源。假设您使用的是MongoDB 3.4中的默认WiredTiger存储引擎,默认情况下,您可能有256MB的RAM分配给WiredTiger缓存,剩余内存必须在连接线程、O/S和mongod所需的任何其他临时内存分配之间共享

如何在mongo配置文件中指定最大同时连接数?我是否更改操作系统环境中的任何其他参数,如ulimit

资源限制旨在施加合理的上限,以便系统管理员可以在系统变得无响应之前进行干预。连接的限制有两大类:本例中由MongoDB服务器配置施加的限制和由操作系统ulimit-a施加的限制

在MongoDB 3.4中,net.maxIncomingConnections默认为65536同时连接,因此文件或线程的ulimit设置通常在连接限制之前达到

对于容量大于t2.micro的服务器,从默认值增加限制通常是有意义的。但是,考虑到t2.micro实例的资源有限,如果希望部署稳定,我实际上建议减少限制

例如,更现实的限制是将net.maxIncomingConnections设置为100个连接,或者为连接设置最大100MB的RAM。在您的情况下,您的目标是50000个连接,因此您可以设置该值或保留默认的65536并依赖ulimit限制


您的ulimit设置已经允许比您的实例能够合理处理的更多的消耗,但是如果您愿意,MongoDB手册有一个参考。您可以考虑增加您的-U值MAX进程/线程,因为这可能是当前正在使用的上限,但是对于连接,我会考虑给定的可用资源和工作负载是合理的。

您可以发布以下命令的O/P:dB.ServStasU.Field:从mongo运行它shell@Astro当mongo shell无法接受任何新连接时,我无法连接到它。所以我不能在这里得到结果。非常具有描述性。这真的很有帮助。