У меня есть сервер узлов, который находится на экземпляре ec2 под управлением Ubuntu.
Я поддерживаю код на Gitlab и загружаю туда обновления.
Процесс обновления вручную состоит в том, чтобы просто извлечь изменения и перезапуститьсервер, который я хочу автоматизировать, и для этого я использую Gitlab webhook и создал простую конечную точку, которая выполняет:
childProcess.exec('git pull && bash deploy.sh',{ cwd: '/home/ubuntu/someXyzFolder' }, function(err, stdout, stderr){
if (err) {
return res.status(500).send(err);
}
res.status(200).send("OK");
});
Таким образом childProcess не может выполнить эти команды в качестве своего состояния отправки 500 с этой ошибкой:
{"killed":false,"code":1,"signal":null,"cmd":"git pull && bash deploy.sh"}
несколько человек пострадали от этой проблемы и решили ее, создав своп из-за нехватки памяти
Я выполнил на своем сервере команду free
, которая ответила
ubuntu@ip-xxx-xxx-xxx-xxx:/var/somefolder/somefolder$ free
total used free shared buff/cache available
Mem: 1007532 404276 381512 772 221744 452944
Swap: 0 0 0
В соответствии с этим у меня должно быть достаточно оперативной памяти, верно?
Я не уверен, убивает ли Linux oom это или что-то еще.
Дайте мне знать ваши мысли об этом.
-Спасибо
РЕДАКТИРОВАТЬ: вот мой deploy.sh
git pull
npm install
gulp build
sudo killall forever
sudo killall node
rm /removeTheSymlinkOfTheCurrentBuildFolder
ln -s /makeaNewFolderWithCurrentTimeStamp/`ls -ltr /some | tail -n 1 | awk {' print $9 '}` /andMakeItCurrent
sudo forever /currentBuildFolder/server.js &