我想在mongo集合上创建文本索引。我写了
db.test1.ensureIndex({'text':'text'})
然后我在mongod过程中看到了
Sun Jan 5 10:08:47.289 [conn1] build index library.test1 { _fts: "text", _ftsx: 1 }
Sun Jan 5 10:09:00.220 [conn1] Index: (1/3) External Sort Progress: 200/980 20%
Sun Jan 5 10:09:13.603 [conn1] Index: (1/3) External Sort Progress: 400/980 40%
Sun Jan 5 10:09:26.745 [conn1] Index: (1/3) External Sort Progress: 600/980 61%
Sun Jan 5 10:09:37.809 [conn1] Index: (1/3) External Sort Progress: 800/980 81%
Sun Jan 5 10:09:49.344 [conn1] external sort used : 5547 files in 62 secs
Sun Jan 5 10:09:49.346 [conn1] Assertion: 16392:FileIterator can't open file: data/_tmp/esort.1388912927.0//file.233errno:24 Too many open files
我在MaxOSX 10.9.1上工作。 请帮忙。
答案 0 :(得分:9)
我遇到了同样的问题(执行了不同的操作,但仍然是#34;太多的打开文件"错误),而且正如lese所说,它似乎归结为&# 39; MAXFILES'限制机器运行mongod。
在Mac上,最好通过以下方式检查限制:
sudo launchctl limit
这会给你:
<limit name> <soft limit> <hard limit>
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 1024 2048
我解决这个问题的方法是暂时将限制设置得更高(我原本是软的:256,硬:1000或类似的东西):
sudo launchctl limit maxfiles 1024 2048
然后重新运行查询/索引操作并查看它是否中断。如果没有,并且为了保持更高的限制(当你退出shell会话时它们将重置,你将它们设置为开启),创建一个&#39; /etc/launchd.conf'文件包含以下行:
limit maxfiles 1024 2048
(或将该行添加到现有的launchd.conf文件中,如果已有的话)。
这将在登录时通过launchctl在每个shell上设置maxfile。
答案 1 :(得分:4)
答案 2 :(得分:4)
我在restore命令之前添加了一个临时ulimit -n 4096
。
你也可以用
mongorestore --numParallelCollections=1 ...
这似乎有所帮助。
但是连接池似乎仍然用尽了。