snapshot of https://github.com/jitsi/jitsi-videobridge.git @ fcbf741c646bc237d2ed85a1e86910532532b831 (2026-09-15)
This commit is contained in:
63
resources/collect-dump-logs.sh
Executable file
63
resources/collect-dump-logs.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
# script that creates an archive in current folder
|
||||
# containing the heap and thread dump and the current log file
|
||||
|
||||
JVB_HEAPDUMP_PATH="/tmp/java_*.hprof"
|
||||
STAMP=`date +%Y-%m-%d-%H%M`
|
||||
PID_PATH="/var/run/jitsi-videobridge.pid"
|
||||
JVB_UID=`id -u jvb`
|
||||
|
||||
RUNNING=""
|
||||
unset PID
|
||||
|
||||
# for systemd we use different pid file
|
||||
if [ ! -f $PID_PATH ]; then
|
||||
PID_PATH="/var/run/jitsi-videobridge/jitsi-videobridge.pid"
|
||||
fi
|
||||
|
||||
[ -e $PID_PATH ] && PID=$(cat $PID_PATH)
|
||||
if [ ! -z $PID ]; then
|
||||
ps -p $PID | grep -q java
|
||||
[ $? -eq 0 ] && RUNNING="true"
|
||||
fi
|
||||
|
||||
#Find any crashes in /var/crash from our user in the past 20 minutes, if they exist
|
||||
CRASH_FILES=$(find /var/crash -name '*.crash' -uid $JVB_UID -mmin -20 -type f)
|
||||
|
||||
if [ ! -z $RUNNING ]; then
|
||||
echo "Jvb at pid $PID"
|
||||
THREADS_FILE="/tmp/stack-${STAMP}-${PID}.threads"
|
||||
HEAP_FILE="/tmp/heap-${STAMP}-${PID}.bin"
|
||||
|
||||
# If the JVB has crashed (with OOM, for example), the JVM might be
|
||||
# configured to take a heap dump. This is configured with the HeapDumpPath
|
||||
# VM option. The HeapDumpPath is a manageable VM option and the default
|
||||
# path format is java_pidXXXX.hprof.
|
||||
#
|
||||
# During the time the JVM is taking a heap dump, the process will appear
|
||||
# running, but the JVM won't allow us to connect to it and take a
|
||||
# heap/thread dump. Briefly, we want to make sure we grab the java heap
|
||||
# dump, even if the process appears to be running.
|
||||
|
||||
HEAPDUMP_FILE="/tmp/java_pid${PID}.hprof"
|
||||
|
||||
# Wait for the JVM to finish writing the heapdump.
|
||||
while lsof ${HEAPDUMP_FILE}; do sleep 1; done
|
||||
|
||||
sudo jstack ${PID} > ${THREADS_FILE}
|
||||
sudo jmap -dump:live,format=b,file=${HEAP_FILE} ${PID}
|
||||
|
||||
tar zcvf jvb-dumps-${STAMP}-${PID}.tgz ${THREADS_FILE} ${HEAP_FILE} ${HEAPDUMP_FILE} ${CRASH_FILES} /var/log/jitsi/jvb.log /tmp/hs_err_*
|
||||
rm ${HEAP_FILE} ${THREADS_FILE}
|
||||
else
|
||||
ls $JVB_HEAPDUMP_PATH >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "JVB not running, but previous heap dump found."
|
||||
tar zcvf jvb-dumps-${STAMP}-crash.tgz $JVB_HEAPDUMP_PATH ${CRASH_FILES} /var/log/jitsi/jvb.log /tmp/hs_err_*
|
||||
rm ${JVB_HEAPDUMP_PATH}
|
||||
else
|
||||
tar zcvf jvb-dumps-${STAMP}-crash.tgz /var/log/jitsi/jvb.log ${CRASH_FILES} /tmp/hs_err_*
|
||||
echo "JVB not running, previous heap dump not found. Archiving logs only."
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user