文档章节

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

attobit
 attobit
发布于 2016/09/30 16:07
字数 304
阅读 528
收藏 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 1.2.14 发布,电话软交换机

FreeSWITCH 1.2.14 发布,这是一个维护版本,修复了很多 bug。 下载地址:http://files.freeswitch.org/freeswitch-1.2.14.tar.bz2 FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和...

oschina
2013/10/17
2.3K
0
OSC第52期高手问答 ----- 解读FreeSWITCH

OSCHINA 本期高手问答(7月28日-8月3日)我们请来了 @SevenDu (杜金房)为大家解答关于FreeSWITCH方面的问题。 @SevenDu 杜金房:FreeSWITCH中文站(www.freeswitch.org.cn)创始人,FreeSWI...

阿娇OSC
2014/07/28
10.2K
69
FreeSWITCH 1.4.4 发布,电话软交换机

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

oschina
2014/05/24
1K
0
FreeSWITCH 1.2 RC2 发布

FreeSWITCH 刚刚发布了 1.2 版本的第二个 RC 版,可从 这里 下载. 官网上没有提及该版本的改进内容。 FreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的...

oschina
2012/05/09
1K
0
FreeSWITCH 与 Asterisk(译)

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

mickelfeng
2013/03/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

跟我学Spring Cloud(Finchley版)-14-Feign使用Hystrix

Feign默认已经整合了Hystrix,本节详细探讨Feign使用Hystrix的具体细节。 服务降级 加配置,默认Feign是不启用Hystrix的,需要添加如下配置启用Hystrix,这样所有的Feign Client都会受到Hys...

周立_ITMuch
19分钟前
2
0
spark集群使用hanlp进行分布式分词操作说明

本篇分享一个使用hanlp分词的操作小案例,即在spark集群中使用hanlp完成分布式分词的操作,文章整理自【qq_33872191】的博客,感谢分享!以下为全文: 分两步: 第一步:实现hankcs.hanlp/co...

左手的倒影
21分钟前
2
0
Oracle分组排序几种常见方式

在日常操作中分页和分组比较多见,这里主要讲讲分组排序的不同场景: 1.row_number() over() row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,...

rechardchensir
29分钟前
1
0
JVM(三)对象的生死判定和算法详解

好的文章是能把各个知识点,通过逻辑关系串连起来,让人豁然开朗的同时又记忆深刻。 导读:对象除了生死之外,还有其他状态吗?对象真正的死亡,难道只经历一次简单的判定?如何在垂死的边缘...

王磊的博客
35分钟前
2
0
three.js 3D框架

https://threejs.org/docs/index.html#manual/zh/introduction/Creating-a-scene

壹峰
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部