mongodb: pthread_create 失败: errno:11

标签 mongodb ulimit

我想在我的虚拟服务器 (CentOS 6) 上运行 sharelatex。我安装了所有东西,但 sharelatex 无法启动。 mongod.log 在接受一些连接后显示:

2015-02-12T12:04:30.971+0100 [initandlisten] pthread_create failed: errno:11 Resource temporarily unavailable
2015-02-12T12:04:30.971+0100 [initandlisten] can't create new thread, closing connection

我已经增加了 ulimit:

[root@vServer]# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256270
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 21000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 256270
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

谁能帮我吗?

编辑: 我还检查了 mongod 进程的限制:

[root@vServer]# cat //proc/552/limits
Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            10485760             unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             62848                62848                  processes
Max open files            21000                21000                files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       256270               256270               signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0      
Max realtime timeout      unlimited            unlimited            us

编辑2:

这是 ulimit 的输出:

[root@vServer]# ulimit -Sa
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256270
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 21000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 256270
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

[root@vServer]# ulimit -Ha
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256270
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 21000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) unlimited
cpu time               (seconds, -t) unlimited
max user processes              (-u) 256270
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

但正如你所看到的,我是以 root 身份登录的。不应该显示 cat//proc/552/limits 进程的实际限制吗?

最佳答案

我在使用 mongodb 时遇到了 /proc/sys/vm/max_map_count 内核参数问题。基本上 mongodb 正在尝试分配超过 65k 的内存映射,这是库存内核限制。

遇到此问题时,错误与您发布的涉及 pthread_create 失败的错误相同。为了解决这个问题,我以 root 身份执行了以下操作:

echo 2048000 > /proc/sys/vm/max_map_count

无论这是否有效,我强烈建议在 mongodb pid 上使用 strace 来尝试查看它失败的地方。我认为您看到的错误消息不一定会引导您走向正确的方向。

关于mongodb: pthread_create 失败: errno:11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28477997/

相关文章:

MongoDB - 在 RAM 中强制保留索引 + 工作集

macos - 通过 Express 和 MongoDB 使用 session ,为什么我只能连接一次路由,除非我更改 session key ?

mongodb - 如何在我的应用程序中显示 jupyter notebook 或 apache zeppelin?

mongodb - 在 mongodb 中查询地理空间数据的最快方法

amazon-web-services - 在 AWS ECS : HardLimit cannot be empty 中设置 ulimit

linux - ulimits 中的 nproc 和 nofile 是什么?

java - 无法连接到 mongo 容器

c++ - 为什么 ulimit -v 在 clang 的地址 sanitizer 下不起作用?

centos - 创建沙发底座时出现 Docker 错误 - ulimit : open files: cannot modify limit: Operation not permitted

centos - 在 CentOS 上为 apache 设置 ulimits