I'm hosting a website on a web host using a nodejs application (expressjs, request, etc.). The web host has an apache terminal from where I can call node app.js &
or forever start app.js
and the app runs fine.
However, once the terminal is closed, the number of processes being used balloons to about 30, meaning that the next time I open the terminal, instead of being greeted with [hostname@server ~] $
I instead get:
bash: fork: retry: No child processes
bash: fork: retry: No child processes
bash: fork: retry: No child processes
bash: fork: retry: No child processes
bash: fork: Resource temporarily unavailable
bash-4.2$
Somehow I believe a fork bomb is being created, and I can't seem to figure out where or why? I'm not using fork()
anywhere, and if I use forever
to start my app, the logs show no signs of errors or new processes being created.
When this happens, I can't use any terminal commands half the time, until I manage to pkill/pgrep.
I tried calling bash-4.2$ top
, and got this:
top - 13:41:13 up 71 days, 20:57, 0 users, load average: 1.82, 1.81, 1.72
Tasks: 14 total, 1 running, 2 sleeping, 11 stopped, 0 zombie
%Cpu(s): 11.7 us, 2.7 sy, 0.1 ni, 85.5 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 41034544 total, 2903992 free, 6525792 used, 31604760 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 28583704 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1001511 xxxxxxxx 20 0 11880 3692 1384 S 0.0 0.0 0:00.02 bash
1001578 xxxxxxxx 20 0 11880 2840 524 T 0.0 0.0 0:00.00 bash
1001598 xxxxxxxx 20 0 11880 2672 348 T 0.0 0.0 0:00.00 bash
1001599 xxxxxxxx 20 0 11880 2896 524 T 0.0 0.0 0:00.00 bash
1001600 xxxxxxxx 20 0 11880 2720 396 T 0.0 0.0 0:00.00 bash
1001607 xxxxxxxx 20 0 11880 2928 532 T 0.0 0.0 0:00.00 bash
1001613 xxxxxxxx 20 0 11880 2964 532 T 0.0 0.0 0:00.00 bash
1001618 xxxxxxxx 20 0 11880 2780 348 T 0.0 0.0 0:00.00 bash
1001619 xxxxxxxx 20 0 12012 3024 544 T 0.0 0.0 0:00.00 bash
1001620 xxxxxxxx 20 0 11880 2804 372 T 0.0 0.0 0:00.00 bash
1001651 xxxxxxxx 20 0 12012 2836 352 T 0.0 0.0 0:00.00 bash
1001653 xxxxxxxx 20 0 12016 3392 896 T 0.0 0.0 0:00.00 bash
1004463 xxxxxxxx 20 0 9904 1840 1444 S 0.0 0.0 0:00.00 bash
1005200 xxxxxxxx 20 0 56364 1928 1412 R 0.0 0.0 0:00.00 top
Which looks like somehow bash
processes are being repeatedly made?
My actual nodejs app.js
is a typical expressjs web app, with code such as (shortened example code):
var app = express();
app.use(express.static('..//'))
.use(cors())
.use(cookieParser());
...
app.post('/profile', function(req,res){
"use strict";
var id = req.query.id;
con.query("SELECT * FROM xxxxxxx WHERE xxxxx=" + id, function(err,result){
res.send(result);
});
});
...
app.get('*', function(req, res) {
"use strict";
res.redirect('/404.html');
});
console.log('Listening on 8080');
app.listen(8080);
Any ideas on why this issue is occurring? I'm relatively new to node so any help is appreciated, and apologies if any noob mistakes have been made.