FreeSwitch启动之后,查看端口,发现没有监听8021端口,也就是没有监听EventSocket端口。
之前解决过这个问题,苦于没有做记录;今天又发生了这个问题,顿时手忙脚乱,现在把这个问题解决方法做个记录。
问题描述
FreeSwitch正常启动,没有报错,查看端口,发现8021没有被监听。如下图。
问题分析
FreeSwitch启动成功,也就是FreeSwitch核心功能正常运行,8021端口没有被监听,也就是mod_event_socket模块启动失败。
mod_event_socket模块默认是自动加载
分析日志
以mod_event_socket为关键词,搜索FreeSwitch的启动日志,发现这个模块启动失败了Thread ended for mod_event_socket
,如下。
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for mod_event_socket
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for CORE_SOFTTIMER_MODULE
[DEBUG] switch_loadable_module.c:735 Chat Thread Started
[NOTICE] switch_loadable_module.c:115 Thread ended for mod_event_socket
正常的日志
如果该模块启动成功会由mod_event_socket.c
打印出监听的端口,如下。
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for mod_event_socket
[CONSOLE] switch_loadable_module.c:139 Starting runtime thread for CORE_SOFTTIMER_MODULE
[DEBUG] switch_loadable_module.c:735 Chat Thread Started
[INFO] switch_time.c:615 Clock synchronized to system time.
[DEBUG] mod_event_socket.c:2961 Socket up listening on 0.0.0.0:8021
哪些操作导致event_socket启动失败
程序之前运行是正常的,在这之间做了哪些操作会导致启动失败?回顾了之前的操作有修改文件数限制,关闭IPv4转发,关闭IPv6功能等。
接着查看event_socket的配置文件conf/autoload_configs/event_socket.conf.xml
:
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="::"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<param name="apply-inbound-acl" value="lan"/>
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
listen-ip是IPv6地址?刚刚不是把IPv6关闭了吗?把它改成IPv4本地回环地址试试。如下:
<configuration name="event_socket.conf" description="Socket Client">
<settings>
<param name="nat-map" value="false"/>
<param name="listen-ip" value="0.0.0.0"/>
<param name="listen-port" value="8021"/>
<param name="password" value="ClueCon"/>
<param name="apply-inbound-acl" value="lan"/>
<!--<param name="stop-on-bind-error" value="true"/>-->
</settings>
</configuration>
修改监听地址
修改之后重启FreeSwitch再次查看端口情况,已经在0.0.0.0
上监听了8021端口了。
总结
因为没有IPv6地址所以监听失败,修改为0.0.0.0
就可以监听成功了。
- 出现的问题要及时做记录,以便下次查找
- 查看日志定位问题,查看配置文件以免有疏忽
- 回顾之前的操作,与问题对比靠拢