该虚拟服务器具有8GB RAM,4个内核,Ubuntu 18.04,应该能够处理多个线程。通过ssh连接两次或使用node和concurrently
启动react-express应用时,会出现pthread_create: Resource temporarily unavailable
错误。
ps
最多返回不到50个进程:
ps --no-headers auxwwwm | cut -f1 -d' ' | sort | uniq -c | sort -n
2 message+
2 systemd+
4 postfix
4 syslog
8 www-data
30 root
46 my_user
在这一点上,对我而言几乎没有任何事情可做。我的ulimit -u
是62987。我没有搜索解决任何问题。不知何故,我在同时运行的进程数量上受到限制,但是我不知道如何解决这个问题。
我得到的一些错误日志是:spawn nodemon EAGAIN
,node[1706]: pthread_create: Resource temporarily unavailable
或npm err syscall spawn sh
我认为服务器应该可以轻松地一次处理两个节点应用程序。而且不断变化的错误消息对我没有帮助。
编辑:当一个简单的节点应用程序已在运行时,它也不允许我启动mongodb或MariaDB。
编辑:ulimit -a
的结果
ulimit -a
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-m: resident set size (kbytes) unlimited
-u: processes 62987
-n: file descriptors 1024
-l: locked-in-memory size (kbytes) 16384
-v: address space (kbytes) unlimited
-x: file locks unlimited
-i: pending signals 1545098
-q: bytes in POSIX msg queues 819200
-e: max nice 0
-r: max rt priority 0
-N 15: unlimited
我想念的是什么,可以做什么?
我无法发表评论,因此我必须在此处写一个答案以尝试进行故障排除。
您是否可以在不启动节点服务的情况下尝试启动MongoDB和MariaDB或其他?您说您的节点应用程序很简单,实际上没有任何意义。此步骤测试您的程序是否引起了问题。
或者您可以尝试使用此简单的HTTP服务器:
const http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end("hello world!");
}).listen(8080);
如果您可以启动多个标准程序,则意味着您的程序有问题。
如果不能,可能是您的虚拟服务器,请尝试与提供商联系。