最近[b]NodeJs[/b]项目经常挂起,后台在日志发现,有一个Error存在:
[b]Caught exception: Error: accept EMFILE[/b]
翻阅了不少的论坛跟Google,原来是ulimit限制了。在ubuntu里面open file 设置默认最大值为1024,于是需要将其修改。
xusongqin@ubuntu:/data/projects/mahjong-websocket/game-server/logs/self$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 128029
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) [b][color=red]1024[/color][/b]
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 128029
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
如果是root用户的话,直接 ulimit -n 65535即可,
而non-root的用户的话,则需要修改/etc/security/limits.conf的配置内容:
只需要在里面加入(下面4行配置即可):
最终为:
#<domain> <type> <item> <value>
#
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
[b]* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535[/b]
# End of file
退出当前终端,重新登录终端查看。
xusongqin@ubuntu:/data/projects/mahjong-websocket/game-server/logs/self$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 128029
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) [b]65535[/b]
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 128029
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
console - Caught exception: Error: accept EMFILE
at errnoException (net.js:770:11)
at TCP.onconnection (net.js:1030:24)
[b]Caught exception: Error: accept EMFILE[/b]
翻阅了不少的论坛跟Google,原来是ulimit限制了。在ubuntu里面open file 设置默认最大值为1024,于是需要将其修改。
xusongqin@ubuntu:/data/projects/mahjong-websocket/game-server/logs/self$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 128029
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) [b][color=red]1024[/color][/b]
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 128029
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
如果是root用户的话,直接 ulimit -n 65535即可,
而non-root的用户的话,则需要修改/etc/security/limits.conf的配置内容:
只需要在里面加入(下面4行配置即可):
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
最终为:
#<domain> <type> <item> <value>
#
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
[b]* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535[/b]
# End of file
退出当前终端,重新登录终端查看。
xusongqin@ubuntu:/data/projects/mahjong-websocket/game-server/logs/self$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 128029
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) [b]65535[/b]
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 128029
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited