从systemd运行freeswitch有两个问题:
编辑2-我已经把慢速启动问题移到这里(Freeswitch pauses on check_ip at boot on centos 7.1),虽然它们可能是相关的,但作为一个独立的问题可能是好的。
编辑-我注意到了一些其他的东西。当从那里运行终端输出时,看看这些从终端输出捕获的下一行。差距是4分钟,但已经过去10分钟了。我之所以注意到这一点,是因为我试图找出端口8021接受fs_cli连接需要几分钟的原因。为什么会这样?以前从没发生过,我安装了很多fs盒。这对1.7和今天的1.6都是一样的。
2015-10-23 12:57:35.280984 [DEBUG] switch_scheduler.c:249 Added task 1 heartbeat (core) to run at 1445601455
2015-10-23 12:57:35.281046 [DEBUG] switch_scheduler.c:249 Added task 2 check_ip (core) to run at 1445601455
2015-10-23 13:01:31.100892 [NOTICE] switch_core.c:1386 Created ip list rfc6598.auto default (deny)
我有时会启动两个进程。以下是发生此类事件后我的状态行:
# systemctl status freeswitch -l
freeswitch.service - freeswitch
Loaded: loaded (/etc/systemd/system/multi-user.target.wants/freeswitch.service)
Active: activating (start) since Fri 2015-10-23 01:31:53 BST; 18s ago
Main PID: 2571 (code=exited, status=0/SUCCESS); : 2742 (freeswitch)
CGroup: /system.slice/freeswitch.service
├─usr/bin/freeswitch -ncwait -core -db /dev/shm -log /usr/local/freeswitch/log -conf /usr/local/freeswitch/conf -run /usr/local/freeswitch/run
└─usr/bin/freeswitch -ncwait -core -db /dev/shm -log /usr/local/freeswitch/log -conf /usr/local/freeswitch/conf -run /usr/local/freeswitch/run
Oct 23 01:31:53 fswitch-1 systemd[1]: Starting freeswitch...
Oct 23 01:31:53 fswitch-1 freeswitch[2742]: 2743 Backgrounding.
有两个进程正在运行。
PID文件有时写得不够快,无法让systemd进程接收它,但当我看到这个文件时(无论我运行命令有多快),它总是在我执行以下操作时出现:
Oct 23 02:00:26 arribacom-sbc-1 systemd[1]: PID file
/usr/local/freeswitch/run/freeswitch.pid not readable (yet?) after
start.
现在,在(2)中,一切似乎都正常,我可以使用
systemctl stop freeswitch
没有任何问题,但在(1)中似乎什么也做不了。
我想知道这两者是否相关,而且freeswitch正在向systemd报告程序在实际运行之前正在运行。然后systemd要么启动另一个进程,要么(有时)不启动。
有人能指点一下吗?我试着给自由开关的用户列表发邮件,但是尽管我已经注册了,但是我根本无法让任何邮件出现在列表上(但这是另一个问题)。
*更新*
如果删除-ncwait,似乎可以改进双进程启动,但仍会收到无法读取PID警告,因此我仍然确定存在问题,可能是在计时方面(?)是的。
我在centos 7.1上,我的自由开关版本是
FreeSWITCH Version 1.7.0+git~20151021T165609Z~9fee9bc613~64bit (git
9fee9bc 2015-10-21 16:56:09Z 64bit)
这是我的freeswitch.service文件(有些事情在我了解它们在做什么和可能产生的任何副作用之前已经被注释掉了):
[Unit]
Description=freeswitch
After=syslog.target network.target
#
[Service]
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
PermissionsStartOnly=true
ExecStart=/usr/bin/freeswitch -nc -core -db /dev/shm -log /usr/local/freeswitch/log -conf /u
ExecReload=/usr/bin/kill -HUP $MAINPID
#ExecStop=/usr/bin/freeswitch -stop
TimeoutSec=120s
#
WorkingDirectory=/usr/bin
User=freeswitch
Group=freeswitch
LimitCORE=infinity
LimitNOFILE=999999
LimitNPROC=60000
LimitSTACK=245760
LimitRTPRIO=infinity
LimitRTTIME=7000000
#IOSchedulingClass=realtime
#IOSchedulingPriority=2
#CPUSchedulingPolicy=rr
#CPUSchedulingPriority=89
#UMask=0007
#
[Install]
WantedBy=multi-user.target
最佳答案
在当前主分支中,从debian/
目录中获取两个文件:freeswitch-systemd.freeswitch.service
--应该是/lib/systemd/system/freeswitch.service
freeswitch-systemd.freeswitch.tmpfile
--应该是/usr/lib/tmpfiles.d/freeswitch.conf
您可能需要调整这些路径,或者构建freeswitch来使用标准的debian路径。
关于linux - Freeswitch的系统启动不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33298818/