FreePBX 60 seconden fix

From 4AllBusiness
Jump to navigation Jump to search

FreePBX heeft een 60 seconden CRON bug gekregen in versie 12, 13, 14. Er zijn een aantal zaken die gewijzigd dienen te wordne om op hoisting servers meer dan 15 PBXen te kunnen hosten, zonder dat ze allemaal elke hele minuut iets uitvoeren, waardoor ze allemaal een slechte geluidskwaliteit hebben.

Een aantal zaken staan beschreven, maar een aantal ook niet. In maart 2019 is dit uitgebreid besproken, maar nog niet echt opgelost, er zijn wel een aantal zaken verandert.

Na te kijken vanaf CLI Elke minuut cron kan aangepast worden, of uitgezet worden

crontab -e -u asterisk

BouW een random sleep in door

* * * * * uittevoerencommando 

te vervangen voor

* * * * * sleep $(( ( RANDOM % 50 )  + 1 )) && uittevoerencommando

of zet de minuut cron uit waar het kan door er een hekje # voor te zetten

Enkele improvements voor Fpbx 14 vanaf maart 2019 Vervang AGI door FASTAGI

clear
#Setting instellen via commandline
#fwconsole setting -l voor optie's
#enable fastagi - default in 15 disabled in 14
#eerst core updaten per maart 2019
#60sec dashboard fix per 6mrt2019 in edge modus
fwconsole ma --edge update core
fwconsole ma --edge update framework
fwconsole ma --edge update dashboard
fwconsole setting LAUNCH_AGI_AS_FASTAGI 1
fwconsole setting SYS_STATS_DISABLE 1
fwconsole r
fwconsole restart
#
#60sec stats uitschakelen ivm hostingproblemen
fwconsole setting SYS_STATS_DISABLE 1
#Overige 4Ab Settings
fwconsole reload
fwconsole restart


Deze fix is leuk, maar lost het hele probleem nog niet op. Er zijn nog steeds een aantal cronjobs die elke minuuut eprden uitgevoerd en problemen geven. Deze kunnen we oplossen door een random sleep in te bouwen in de cronjob. Dit is getest en het werkt!! Voro de sleeprandom fix is het maximum CPU 100% elke minuut. Na de Sleeprandom fix is het maximum CPU nog maar 28%

Voorbeeld van Cronjob voor en na. Bij elke minuut cronjob wordt toegevoegd: Een random sleep van 40 seconden

sleep $(( ( RANDOM % 40 )  + 1 )) &&

Dus Cronjob asterisk /var/spool/cron

Orgineel van een Sangoma hosted PBX, ik vermoed een verschil, met name de */15 van Firewall en userman

*/1 * * * * /var/lib/asterisk/bin/pagepro-scheduler.php 2>&1 >/dev/null
@daily  [ -x /var/lib/asterisk/agi-bin/update_license.php ] && /var/lib/asterisk/agi-bin/update_license.php --delay
@daily [ -x /var/lib/asterisk/bin/freepbx_sipstation_check ] && /var/lib/asterisk/bin/freepbx_sipstation_check
* * * * * [ -x /var/www/html/admin/modules/dashboard/scheduler.php ] && /var/www/html/admin/modules/dashboard/scheduler.php > /dev/null 2>&1
27 * * * * /usr/sbin/fwconsole util cleanplaybackcache -q
*/1 * * * * /usr/sbin/fwconsole calendar --sync 2>&1 > /dev/null
*/15 * * * * [ -e /etc/asterisk/firewall.enabled ] && touch /var/spool/asterisk/incron/firewall.firewall
@daily /usr/sbin/fwconsole pms mk_dirty > /dev/null 2>&1
* * * * * /usr/sbin/fwconsole pms wu_alert > /dev/null 2>&1
*/5 * * * * /usr/sbin/fwconsole qxactreports --sync -q 2>&1 > /dev/null
30 22 * * * /usr/sbin/fwconsole recordingreports -s -c -q > /dev/null 2>&1
0 0 1 * * php /var/lib/asterisk/agi-bin/backuprecordings.php  > /dev/null 2>&1
13 2 * * * /usr/sbin/fwconsole certificates --updateall -q 2>&1 >/dev/null
* * * * * [ -x /var/lib/asterisk/bin/schedtc.php ] && /var/lib/asterisk/bin/schedtc.php
@daily  [ -e /var/www/html/admin/modules/sysadmin/bin/check_portal.php ] && /var/www/html/admin/modules/sysadmin/bin/check_portal.php >/dev/null 2>&1
@daily  [ -x /var/lib/asterisk/agi-bin/ddns_client.php ] && /var/lib/asterisk/agi-bin/ddns_client.php >/dev/null 2>&1
@hourly  [ -x /var/lib/asterisk/bin/storage.php ] && /var/lib/asterisk/bin/storage.php >/dev/null 2>&1
*/15 * * * * /usr/sbin/fwconsole userman --syncall -q
5 6 * * * [ -e /usr/sbin/fwconsole ] && /usr/sbin/fwconsole ma listonline --sendemail -q > /dev/null 2>&1
5 7 * * * [ -e /usr/sbin/fwconsole ] && /usr/sbin/fwconsole sys listonline --sendemail -q > /dev/null 2>&1
28 3 * * * /usr/sbin/fwconsole certificates --updateall -q 2>&1 >/dev/null



[root@4ab cron]# cat asterisk
@daily  [ -e /var/www/html/admin/modules/sysadmin/bin/check_portal.php ] && /var/www/html/admin/modules/sysadmin/bin/check_portal.php
@daily  [ -x /var/lib/asterisk/agi-bin/ddns_client.php ] && /var/lib/asterisk/agi-bin/ddns_client.php
18 * * * * /usr/sbin/fwconsole util cleanplaybackcache -q
*/1 * * * *  sleep $(( ( RANDOM % 40 ) + 1 )) && var/lib/asterisk/bin/pagepro-scheduler.php 2>&1 >/dev/null
@weekly ID=freepbx_backup_1 /var/lib/asterisk/bin/backup.php --id=1 >/dev/null 2>&1
*/15 * * * * [ -e /etc/asterisk/firewall.enabled ] && touch /var/spool/asterisk/incron/firewall.firewall
30 0 * * * /usr/sbin/fwconsole certificates --updateall -q 2>&1 >/dev/null
@daily  [ -e /var/www/html/admin/modules/sysadmin/bin/check_portal.php ] && /var/www/html/admin/modules/sysadmin/bin/check_portal.php >/dev/null 2>&1
*/15 * * * * /usr/sbin/fwconsole userman --syncall -q
@daily /usr/sbin/fwconsole pms mk_dirty > /dev/null 2>&1usr/usr/sbin/fwconsole pms wu_alert > /dev/null 2>&1
* * * * *  sleep $(( ( RANDOM % 40 ) + 1 )) && /usr/sbin/fwconsole queuestats --syncall >> /tmp/reader.log 2>&1
*/5 * * * *  sleep $(( ( RANDOM % 40 ) + 1 )) && /usr/sbin/fwconsole qxactreports --sync -q 2>&1 > /dev/null2
@daily [ -x /var/lib/asterisk/bin/freepbx_sipstation_check ] && /var/lib/asterisk/bin/freepbx_sipstation_check 2>&1 > /dev/null
30 22 * * * /usr/sbin/fwconsole recordingreports -s -c -q > /dev/null 2>&1
0 0 1 * * php /var/lib/asterisk/agi-bin/backuprecordings.php  > /dev/null 2>&1
*/3 * * * * [ -x /var/lib/asterisk/bin/schedtc.php ] && /var/lib/asterisk/bin/schedtc.php
*/1 * * * * sleep $(( ( RANDOM % 40 ) + 1 )) && /usr/sbin/fwconsole calendar --sync 2>&1 > /dev/null
@hourly  [ -x /var/lib/asterisk/bin/storage.php ] && /var/lib/asterisk/bin/storage.php >/dev/null 2>&1
@daily  [ -x /var/lib/asterisk/agi-bin/update_license.php ] && /var/lib/asterisk/agi-bin/update_license.php --delay
26 1 * * 2 /var/lib/asterisk/bin/queue_reset_stats.php --id=260
* * * * *  sleep $(( ( RANDOM % 40 ) + 1 )) && [ -x /var/www/html/admin/modules/dashboard/scheduler.php ] && /var/www/html/admin/modules/dashboard/scheduler.php > /dev/null 2>&1
59 6 * * * [ -e /usr/sbin/fwconsole ] && /usr/sbin/fwconsole ma listonline --sendemail -q > /dev/null 2>&1
59 8 * * * [ -e /usr/sbin/fwconsole ] && /usr/sbin/fwconsole ma installall --sendemail -q > /dev/null 2>&1
* * * * *  sleep $(( ( RANDOM % 40 ) + 1 )) && php /var/lib/asterisk/bin/vqplus_generate_periodical_events.php > /dev/null 2>&1

SED commando om alles te wijzigen naar random

sed -i 's/\* \* \* \* \* \/usr/\* \* \* \* \* sleep $(( ( RANDOM \\% 30 ) + 1 )) \&\& \/usr/g' /var/spool/cron/asterisk
sed -i 's/\* \* \* \* \* php/\* \* \* \* \* sleep $(( ( RANDOM \\% 30 ) + 1 )) \&\& php/g' /var/spool/cron/asterisk
sed -i 's/\* \* \* \* \* \[/\* \* \* \* \* sleep $(( ( RANDOM % \\30 ) + 1 )) \&\& \[/g' /var/spool/cron/asterisk
sed -i 's/\*\/1 \* \* \* \* var/\* \* \* \* \* sleep $(( ( RANDOM \\% 30 ) + 1 )) \&\& var/g' /var/spool/cron/asterisk
sed -i 's/\* \* \* \* \* var/\* \* \* \* \* sleep $(( ( RANDOM % \\30 ) + 1 )) \&\& var/g' /var/spool/cron/asterisk
sed -i 's/\*\/5 \* \* \* \* \/usr/\* \* \* \* \* sleep $(( ( RANDOM \\% 30 ) + 1 )) \&\& \/usr/g' /var/spool/cron/asterisk
sed -i '/\* \* \* \* \* \/usr/d' /var/spool/cron/asterisk
sed -i '/\* \* \* \* \* php/d' /var/spool/cron/asterisk
sed -i '/\* \* \* \* \* \[/d' /var/spool/cron/asterisk
sed -i '/\*\/1 \* \* \* \* var/d' /var/spool/cron/asterisk
sed -i '/\* \* \* \* \* var/d' /var/spool/cron/asterisk
sed -i '/\*\/5 \* \* \* \* \/usr/d' /var/spool/cron/asterisk
#