-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkill.sh
executable file
·52 lines (46 loc) · 1.38 KB
/
kill.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/bin/bash
KILL_DISPATCHER_DELAY=10
KILL_ALL_WORKERS_DELAY=20
DISPATCHER_KILLED=false
WORKERS_KILLED=false
MODE_ARG=$1
echo $MODE_ARG
WORKERS_ARG=$2
echo $WORKERS_ARG
start=$(date +%s)
while true; do
if [[ $(($(date +%s) - $start)) -gt $KILL_DISPATCHER_DELAY && $DISPATCHER_KILLED == false ]]; then
DISPATCHER_KILLED=true
echo "Killing dispatcher"
pkill -f "task_dispatcher"
sleep 2
echo "Starting task dispatcher"
python3 components/task_dispatcher.py -m $MODE_ARG -w $WORKERS_ARG > "/var/log/faast/task_dispatcher.out" 2>&1 &
fi
if [[ $(($(date +%s) - $start)) -gt $KILL_ALL_WORKERS_DELAY && $WORKERS_KILLED == false ]]; then
WORKERS_KILLED=true
echo "Killing all workers"
pkill -f "$MODE_ARG"_worker
sleep 2
echo "Starting workers"
for ((i = 0; i < $((WORKERS_ARG)); i++)); do
echo "Starting worker $i"
python3 components/"$MODE_ARG"_worker.py 2 > "/var/log/faast/$MODE_ARG$i" 2>&1 &
done
fi
while true; do
pids=($(pgrep -f "$MODE_ARG"_worker))
num_pids=${#pids[@]}
if (( num_pids < WORKERS_ARG * 3 )); then
break
fi
pid=${pids[$((RANDOM % num_pids))]}
echo "Killing pid $pid"
kill $pid
SLEEP_PERIOD=$((RANDOM % 4 + 1))
echo "Sleeping for $SLEEP_PERIOD"
sleep $SLEEP_PERIOD
done
echo "Spawning new worker"
python3 components/"$MODE_ARG"_worker.py 2 > /dev/null 2>&1 &
done