Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
in /home/monara/public_html/test.athavaneng.com/themes.php on line 99
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 226
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 227
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 228
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 229
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 230
Warning: Cannot modify header information - headers already sent by (output started at /home/monara/public_html/test.athavaneng.com/themes.php:1) in /home/monara/public_html/test.athavaneng.com/themes.php on line 231
#!/bin/bash
if [ -z "$NODE" ]; then
NODE="streamer@server.l"
fi
BOOTARGS=""
ERLARGS=""
export ERL_CRASH_DUMP_SECONDS=0
export CUDA_DEVICE_ORDER=PCI_BUS_ID
# Use `systemctl edit flussonic` to set Environment variables e.g.
#
# [Service]
# Environment=ERL_MORE_OPTS="+JPperf true"
# Environment=ASYNC_THREADS="+A 1024"
# Environment=MEM="+MMmcs 30 +Mdai 0"
# Environment=SCHED="+stbt tnnps +SP 50:50"
# Deprecated way of setting environment vars
[ -f /etc/default/flussonic ] && . /etc/default/flussonic
# +zdbbl 20480 -- distribution buffer busy limit in kilobytes, couple of segments
DISTARGS=${DISTARGS-"+zdbbl 20480 -kernel inet_dist_use_interface {127,0,0,1} -kernel prevent_overlapping_partitions false"}
# production defaults
# +A 16 -- number of threads in async thread pool
# +a 2048 -- stack size in kilo words for threads in the async-thread pool
# +IOPt 30 -- number of IO poll threads to use, percentage of schedulers configured (i.e. of number of CPU cores)
# +IOPp 25 -- number of IO pollsets to use, percentage of number of poll threads
ASYNC_THREADS_DEFAULT="+A 16 +a 2048 +IOPt 30 +IOPp 25"
# +MMmcs 30 -- maximum possible memory segment cache
# +MBas aoffcaobf -- binary allocator strategy
# +MBsbct 4096 -- binary allocations less than 4 MB go to multiblock carrier
# +MBmmsbc 100000000 +MBmmmbc 100000000
# -- all carriers are allocated by mseg_alloc
# +MBsmbcs 16000 +MBlmbcs 16000
# -- binary multiblock carrier size is 16 MB, large enough to not waste CPU on allocation but not too large to keep footprint reasonable on 128-core systems
# +MBacul -- When a utilization value > 0 is used, allocator instances are allowed to abandon multiblock carriers.
# +Mdai 16 -- max dirty allocator instances
MEM_DEFAULT="+MMmcs 30 +MBas aoffcaobf +MBsbct 4096 +MBmmsbc 100000000 +MBmmmbc 100000000 +MBsmbcs 16000 +MBlmbcs 16000 +MBacul 10 +Mdai 16"
# +stbt db -- bind schedulers to CPU cores if possible (some default spread), this should improve performance
# +sbwt short -- schedulers go to sleep fast, releasing CPU to OS (for nice utilization in `top` tool)
# +swt low|medium|..-- how easily schedulers wake up to steal jobs. Early wakeups distribute work over multiple schedulers faster, but work does more easily bounce between schedulers.
# +sfwi 50 -- schedulers wake up often (50 ms) to check for new jobs
# +sub true -- uniform job balancing (prefer all schedulers to be equally utilized)
# +zebwt short -- ets busy wait threshold (may improve ets lock contention)
# +SDio 64 -- number of dirty IO threads, should be larger than number of disks in RAID
SCHED_DEFAULT="+stbt db +sbwt short +swt medium +sfwi 50 +sub true +zebwt short +SDio 64"
while [ $# -ge 1 ]; do
opt="$1"
OPTARG="$2"
shift
case $opt in
--help|-h)
echo "$0 [-n nodename] [-s server_id_path] [-c config_path] [-l log_dir] [-m snmp_dir] [-k known_hostname] \
[-p pidfile] [-b boot_error_file] [-a alias ip] -d"
echo " -n default streamer@server.l: nodename"
echo " -s default priv/server.id or /etc/flussonic/server.id: path to server id file"
echo " -c default priv/flussonic.conf or /etc/flussonic/flussonic.conf: path to config file"
echo " -l default /var/log/flussonic: path to log directory"
echo " -m default /var/run/flussonic: path to snmp directory"
echo " -k default `hostname`: hostname of flussonic as it shows to others"
echo " -p default none: path to pidfile"
echo " -a hostname ip: alternative way to specify DNS hostname of some peer"
echo " -d daemonize"
echo " -noinput disable interactive console for systemd"
exit 1
;;
--node|-n)
NODE=$OPTARG
shift
;;
--server_id_path|--server-id-path|-s)
BOOTARGS="$BOOTARGS server_id_path $OPTARG"
shift
;;
--config|-c)
BOOTARGS="$BOOTARGS config_path $OPTARG"
CONFIG_PATH=$OPTARG
shift
;;
--logs|-l)
BOOTARGS="$BOOTARGS log_dir $OPTARG"
LOGDIR="$OPTARG"
shift
;;
--snmp_dir|--snmp-dir|-m)
BOOTARGS="$BOOTARGS snmp_dir $OPTARG"
shift
;;
--hostname|-k)
BOOTARGS="$BOOTARGS hostname $OPTARG"
shift
;;
--pid|-p)
BOOTARGS="$BOOTARGS pid_path $OPTARG"
PIDFILE="$OPTARG"
shift
;;
--bootlog|-b)
BOOTARGS="$BOOTARGS boot_error_file $OPTARG"
ERRORFILE="$OPTARG"
shift
;;
--alias|-a)
host="${OPTARG}"
shift
ip="$1"
shift
BOOTARGS="$BOOTARGS alias $host $ip"
;;
-noinput)
ERLARGS="$ERLARGS -noinput"
;;
--debug)
BOOTARGS="$BOOTARGS debug_start"
;;
--console_level|--console-level)
BOOTARGS="$BOOTARGS console_level ${OPTARG}"
shift
;;
--daemonize|-d)
DAEMONIZE=true
;;
--json|-j)
# JSON console output
BOOTARGS="$BOOTARGS json"
;;
*)
echo "Invalid option '$opt' '$OPTARG'"
exit 4
esac
done
if [ "$PROD" = "true" ] || [ -f /opt/flussonic/bin/erl -a ! -e apps/manager/src ]; then
export HOME=/etc/flussonic
export PATH=/opt/flussonic/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
export LANG=C
BOOTARGS="$BOOTARGS production"
SCHED=${SCHED-$SCHED_DEFAULT}
MEM=${MEM-$MEM_DEFAULT}
ASYNC_THREADS=${ASYNC_THREADS-$ASYNC_THREADS_DEFAULT}
ulimit -n 131072
ARCH=`uname -m`
if [ ! -f /etc/alpine-release -a "$ARCH" = "x86_64" ]; then
export LD_PRELOAD=$(ls /opt/flussonic/lib/corelib-*/priv/os3_amd64.so)
fi
export PROCNAME=streamer
if [ -w /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor -a "$ARCH" = "x86_64" ]; then
for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo performance > $i; done
fi
# TODO: need remove, only tx2 case support
if [ -e /sys/devices/tegra_udrm ]; then
nvpmodel -m 0
jetson_clocks
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvenc/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvdec/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/nvdec/max_rate > /sys/kernel/debug/bpmp/debug/clk/nvdec/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvenc/max_rate > /sys/kernel/debug/bpmp/debug/clk/nvenc/rate
fi
if [ -f /.dockerenv ]; then
DO_NOT_DO_NET_TUNING=yes
fi
if [ -z "$DO_NOT_DO_NET_TUNING" ]; then
sysctl -w net.core.rmem_default=1048576
sysctl -w net.core.rmem_max=8388608
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.udp_mem="8388608 12582912 16777216"
sysctl -w net.ipv4.tcp_wmem="4096 4194394 16777216"
sysctl -w net.ipv4.tcp_congestion_control=htcp
sysctl -w net.ipv4.tcp_slow_start_after_idle=0
for DEV in /proc/sys/net/ipv4/conf/*/rp_filter
do
echo 0 > "$DEV"
done
fi
export CHECK_SCALING_GOVERNOR=60
if [ -d /opt/flussonic ]; then
cd /opt/flussonic
fi
else
if [ ! -z ${CONFIG_PATH} ] && [ -d apps/web/priv/ssl ] && [ -f apps/web/priv/copy_ssl_certificate.sh ]; then
DEST_CERT_PATH=$(dirname "${CONFIG_PATH}")
SOURCE_CERT_PATH=apps/web/priv/ssl
./apps/web/priv/copy_ssl_certificate.sh -s=${SOURCE_CERT_PATH} -d=${DEST_CERT_PATH} &>/dev/null
fi
fi
if [ -z ${ERL_INETRC+x} ]; then
if [ -f /etc/flussonic/.inetrc ]; then
export ERL_INETRC=/etc/flussonic/.inetrc
elif [ -f /opt/flussonic/.inetrc ]; then
export ERL_INETRC=/opt/flussonic/.inetrc
else
export ERL_INETRC=`pwd`/deploy/packaging/root/opt/flussonic/.inetrc
fi
fi
if [ -d _build/prod/opt/flussonic/lib/ ]; then
export ERL_LIBS=_build/prod/opt/flussonic/lib/
export FLUSSONIC_BUNDLED_WWWROOT=`pwd`/_build/prod/opt/flussonic/wwwroot
elif [ -d _build/default/lib ]; then
export ERL_LIBS=_build/default/lib
export FLUSSONIC_BUNDLED_WWWROOT=`pwd`/wwwroot
else
export ERL_LIBS=/opt/flussonic/lib
export FLUSSONIC_BUNDLED_WWWROOT=/opt/flussonic/wwwroot
fi
if [ "$PIDFILE" != "" ] && [ -f $PIDFILE ]; then
if kill -0 `cat $PIDFILE` 2>/dev/null ; then
echo "Seems that flussonic is running under pid `cat $PIDFILE`. Stop it first"
exit 5
fi
fi
# BEAM_TUNE must be constructed
# * after filling default values for $ASYNC_THREADS $SCHED $MEM
# * before usage in /opt/flussonic/bin/erl invocation
ERL_MORE_OPTS=${ERL_MORE_OPTS-""}
BEAM_TUNE=${BEAM_TUNE:-"$ASYNC_THREADS $SCHED $MEM $ERL_MORE_OPTS"}
if [ "$DAEMONIZE" = "true" ] ; then
if [ "$PIDFILE" = "" ] || [ "$LOGDIR" = "" ] || [ "$ERRORFILE" = "" ] ; then
echo "Cannot daemonize without pid file and logdir and boot error file"
exit 5
fi
mkdir -p $LOGDIR/console
mkdir -p `dirname $PIDFILE`/
run_erl -daemon `dirname $PIDFILE`/ $LOGDIR/console "exec /opt/flussonic/bin/erl $BEAM_TUNE \
-name $NODE -boot start_sasl -sasl errlog_type error \
-s launcher start $BOOTARGS"
i=0
while [ $i -lt 100 -a ! -f "$PIDFILE" -a ! -f "$ERRORFILE" ] ; do
echo -n "."
i=`expr $i + 1`
sleep 1
done
if [ -f "$PIDFILE" ] ; then
echo "done"
else
if [ -f "$ERRORFILE" ] ; then
echo "failed: `cat $ERRORFILE`"
rm -f $ERRORFILE
exit 1
fi
fi
else
exec /opt/flussonic/bin/erl $BEAM_TUNE \
-name $NODE -boot start_sasl -sasl errlog_type error $ERLARGS $DISTARGS \
-s launcher start $BOOTARGS
fi