文档章节

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

attobit
 attobit
发布于 2016/09/30 16:07
字数 304
阅读 495
收藏 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架设局域网内sip电话

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

Yisen
2011/06/16
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

没有更多内容

加载失败,请刷新页面

加载更多

CentOS 安装PHP5和PHP7

安装PHP5 下载解压二进制包 [root@test-a src]# cd /usr/local/src/[root@test-a src]# wget http://cn2.php.net/distributions/php-5.6.32.tar.bz2[root@test-a src]# tar jxvf php-5.6......

野雪球
今天
4
0
windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
3
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
4
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
6
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部