请教各位一个关于fs的writeFile方法的问题
主要经过是这样的,在一个项目中需要动态写一些文件,大概几十个吧,每个文件的内容在10KB左右,都不大,写文件用了异步的方法,在一个循环里面写,所以几乎都是在同一时间写的,这时候就会报一个错:EMFILE,网上找了一下说是linux不允许同时打开超过1024个文件,但是我同时顶多也打开了几十个而已,写的内容也不多,于是单独去测试了一下,在一个循环里面,用异步方法写文件,发现最多同时只能写248个文件,再多就不会写下去了,请问下这是什么原因?跟操作系统有关么?我是OSX 10.7,nodejs版本是0.8.XXX
3 回复
几十个的话,可以用一个队列,一个一个写。 速度不会受什么影响
是的,这么几个文件,内容也不多,改成同步方法也是没什么影响,只是遇到问题了,想问下这是什么原因造成的。
linux这一限制是针对某个用户而不是进程 可能你别的地方打开的文件太多了,导致只剩248个
你可以运行 ulimit -n ${num_of_files_greater_than_1024} 来提高这一限制