转:mongoDB 修改 ulimit

转自:http://blog.yucanlin.cn/2015/03/23/mongodb-%E4%BF%AE%E6%94%B9-ulimit/

mongoDB 修改 ulimit

一切都源于mongoDB的这条warning


1

** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

修改ulimit本来也不难,不过还是有不少坑。mongoDB官方文档http://docs.mongodb.org/manual/reference/ulimit/#memory-size , 虽然给了方法,不过linux这个ulimit可是用户相关的,所以这种做法不靠谱。

正确的做法是修改/etc/security/limits.conf文件,这个文件是有man文档,可以man limit.conf文件查看。先给个sample:


1

2

3

4

5

6

7

8

9

10

11

<domain><type><item><value>

           *               soft    core            0

           *               hard    nofile          512

           @student        hard    nproc           20

           @faculty        soft    nproc           20

           @faculty        hard    nproc           50

           ftp             hard    nproc           0

           @student        -       maxlogins       4

           :123            hard    cpu             5000

           @500:           soft    cpu             10000

           600:700         hard    locks           10

根据说明,我们添加如下内容,这些数值来自于mongoDB文档里面的推荐数值。有个要求就是nproc要大于0.5nofile。


1

2

3

4

5

6

7

8

9

10

mongod soft fsize unlimited

mongod hard fsize unlimited

mongod soft cpu unlimited

mongod hard cpu unlimited

mongod soft as unlimited

mongod hard as unlimited

mongod soft nofile 64000

mongod hard nofile 64000

mongod soft nproc 64000

mongod hard nproc 64000

重启后就搞定了。这里要留意的是,请指明用户,不要用*代替。谁启动mongoDB就用户就填谁,可以用ps命令查询。


1

2

3

[[email protected] ~]$ ps -ef | grep mongod

mongod      945      1  1 12:11 ?        00:00:14 /usr/bin/mongod -f /etc/mongod.conf

yucanlin   3040   2649  0 12:32 pts/0    00:00:00 grep --color=auto mongod

另外,如果想查询mongod的limits,可以使用以下命令。其中945是pid。有上面的ps命令查询得到。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[[email protected] ~]$ cat /proc/945/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            8388608              unlimited            bytes    

Max core file size        0                    unlimited            bytes    

Max resident set          unlimited            unlimited            bytes    

Max processes             64000                64000                processes

Max open files            64000                64000                files    

Max locked memory         65536                65536                bytes    

Max address space         unlimited            unlimited            bytes    

Max file locks            unlimited            unlimited            locks    

Max pending signals       7859                 7859                 signals  

Max msgqueue size         819200               819200               bytes    

Max nice priority         0                    0                   

Max realtime priority     0                    0                   

Max realtime timeout      unlimited            unlimited            us

余 灿琳 2015年3月23日 计算机 2 Comments

时间: 2024-11-03 22:08:12

转:mongoDB 修改 ulimit的相关文章

[转]修改ulimit值的学习点滴

修改ulimit值的学习点滴: 网上有好多修改ulimit的文章,但大多仅限于对当前交互shell的修改,如果只是为了提高某一次执行脚本的文件句柄打开数,以下方法非常有效: 操作系统: CentOS 5.1 x86_64 1)修改当前交互终端的limit值 查询当前终端的文件句柄数: ulimit -n 回车,一般的系统默认的1024. 修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535. 2)将ulimit 值添加到/etc/profile文件中(适用

MongoDB修改、删除文档的域属性实例

MongoDB修改.删除文档的域属性实例 在网站的开发中,可能最初的设计不合理,或者后期业务的变更,会造成文档结构会有些没用的属性,需要去删除或修改,由于MongoDB 是无 Schema 的,不像关系数据库那样列属性定义在表而非记录中,MongoDB 的集合中的每个文档可以拥有各自不同的域属性.MongoDB 中使用 db.collections.update 修改集合中若干文档的... aiyou.com/p/212603aiyou.com/p/212605aiyou.com/p/21260

linux 修改ulimit 的参数

ulimit -a 显示当前用户的各种限制. ulimit -n 的数值表示每个进程可以打开的文件数目. 一般情况下, ulimit -n 的数值是1024. 当进程打开的文件数目超过此限制时,该进程就会退出. 因此,有些时候我们需要修改此限制. 如果我们只是普通用户,只是暂时的修改ulimit -n,可以直接shell命令来修改(ulimit -n 1024000).但是这个设置时暂时的保留!当我们退出bash后,该值恢复原值. 如果要永久修改ulimit,需要修改/etc/security/

Mac OSX下修改 ulimit 参数

OSX下Leopard, Yosemite版本的操作系统下, 修改 ulimit 命令默认的程序是 launchd.默认的ulimit命令继承自launchd, 默认的limits参数如下: daviddeMacBook-Pro:etc david$ sudo launchctl limitPassword:  cpu         unlimited      unlimited        filesize    unlimited      unlimited        data 

mongodb 修改数据结构的一个例子以及小梳理

mongodb的存储结构是灵活可变的,但是,并不意味着我们就肆意地使用不规则的文档结构.不规则的文档结构对于开发和后期的维护都是一个灾难.所以,还是要有一个约定的格式. 但是,由于前期设计的不周详和其他种种原因,数据库文档结构在开发过程的中修改总是难以避免的,应该尽量减少这种修改.但是,到了必须改的时候还是得改: 1 { 2 "_id" : ObjectId("54a1f775e4b03dad3af55c3c"), 3 "myId" : &quo

只针对apache修改ulimit参数

今天对公司服务器进行了优化,但主管了看了之后要求我不要全局修改open files参数,要求只修改apache的open files参数.也就是局部修改.   系统:centos 5.51.查看全局ulimit和apache ulimit参数上图我们可以看到全局ulimit中open files参数值是65535,现在来看apache的 1 for pid in `ps aux |grep httpd |grep -v grep|awk '{print $2}'` 2do   3 cat /pr

【MongoDB学习笔记32】MongoDB修改副本集配置

一.删除副本集成员 spock:PRIMARY> rs.config()    {             "_id" : "spock",             "version" : 1,             "members" : [                     {                             "_id" : 0,                  

MongoDB修改数据类型

如果类型写入错误,可以通过下面的方式在命令行中修改之. db.jobtracker_data.find({'collect_time' : { $type : 2 }}).forEach(function(x) { x.collect_time = parseInt(x.collect_time); db.jobtracker_data.save(x); }) 本来collect_time字段的值应该是long long,结果不小心变成了string.上面的命令行用$type 为2查找凡是col

mongodb修改器(3)

1.更新 db.persons.update({name:"caohui"},{id:2});只更新一条,直接替换更新 db.persons.update({name:"caohui"},{id:2},true);只更新一条,直接替换更新,如果不存在则insert 2.全量更新 db.persons.update({name:"caohui"},{$set:{id:2}},false,true);全量局部更新 3.$set           {