文档章节

FreeSwitch inbound 模式,CPU过载问题分析解决

attobit
 attobit
发布于 2016/09/30 16:07
字数 304
阅读 467
收藏 0

现象:外部程序使用ESL通过inbound模式与FreeSwitch交互,出现FreesSwitch进程CPU过载。      

分析:
通过gdb attach到FreesSwitch进程,查看各线程的backtrace
分析bt结果,看到很多event socket的线程执行到read_packet函数中进行poll操作

        #0  0x00007fe6ba71f043 in poll () from /lib64/libc.so.6
        #1  0x00007fe6bcb539c5 in apr_poll () at poll/unix/poll.c:117
        #2  0x00007fe6bca5e5c3 in switch_poll () at src/switch_apr.c:973
        #3  0x00007fe6b4c1950e in read_packet () at mod_event_socket.c:1449
        #4  0x00007fe6b4c1e8bc in listener_run () at mod_event_socket.c:2667
        #5  0x00007fe6bb0279d1 in start_thread () from /lib64/libpthread.so.0
        #6  0x00007fe6ba72886d in clone () from /lib64/libc.so.6

event socket的线程数等于建立到8021端口的连接数
所以此时有两个问题,1连接数比预想多,2空闲连接poll操作占用CPU。

对于第一个问题,程序bug:
外部程序对于esl的handle没有做重复的初始化,而esl_connect()函数对于handle入参也没有做初始化处理。导致socket没有在esl_disconnect时真正的释放。


对于第二个问题,可以通过如下修改,降低空闲连接占用CPU:
Patch代码:https://freeswitch.org/fisheye/changelog/freeswitch/?cs=e7f05b4

© 著作权归作者所有

共有 人打赏支持
attobit
粉丝 0
博文 6
码字总数 1858
作品 0
深圳
FreeSWITCH 与 Asterisk(译)

Anthony Minssale/文 Seven/译 VoIP通信,与传统的电话技术相比,不仅仅在于绝对的资费优势,更重要的是很容易地通过开发相应的软件,使其与企业的业务逻辑紧密集成。Asterisk作为开源VoIP软...

mickelfeng
2013/03/06
0
0
freeSwitch安装步骤 for CentOS

下载: 下载地址:http://files.freeswitch.org/ 或者直接用git安装。可能会失败 git clone -b v1.2.stable git://git.freeswitch.org/freeswitch.git 安装依赖环境: yum install autoconf......

会哭的鳄鱼
2017/10/24
0
0
freeswitch实战经验1:服务器向成员主动发起会议邀请

接触过freeswitch的童鞋们都知道,freeswitch自动会议室功能,比如大家都拨3000这个号码,就可以进行电话会议功能了。但是,现在有这么一个场景:现在某个主持人想开电话会议,想直接由frees...

BLUE-魏晓峰
2013/06/17
0
0
freeSWITCH编译java esl模块

一、背景 假设源代码路径为/home/freeswitch 二、编译安装libesl.a 1. cd /home/freeswitch(源代码的根目录) 执行./configure,以便生成必要的Makefile文件。 2. cd /home/freeswitch/libs/...

会哭的鳄鱼
2017/10/24
0
0
用freeswitch架设局域网内sip电话

FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。 首先保证已经有lib...

Yisen
2011/06/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
30分钟前
1
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
42分钟前
3
0
OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部