直入正题:

通过监控发现,在其高峰时间MongoDB的连接数达到了1100~1500左右,由于每个连接需要使用10M(stack size默认为10240)的内存,这导致相当大的内存开销。

处理方法是,首先通过优化连接池,将连接数控制在了800个左右,然后通过修改内核的stack size值,从默认的10M修改到1M,使连接占用的内存大大减少。

ulimit -a 默认的stack size              (kbytes, -s) 10240
修改
ulimit -s 1024


vi /etc/security/limits.conf
* soft stack 1024
* hard stack 1024