freeswitch的一个性能问题
概述
freeswitch是一款简单好用的VOIP开源软交换平台。
在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的。
最近在测试某些场景的时候,压测会造成fs的内存占用持续升高,并在达到某个临界点的时候击溃fs的端口服务,导致全部sip呼叫响应503。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.10.7
GCC:4.8.5
起因
在问题发生后,通过对fs的模块、配置等进行排查,确定了几个方向。
方向1,日志写缓存。
方向2,呼叫session处理线程池。
方向3,端口启动数目。
经过测试和复现,方向锁定3端口启动数目。
测试方案
首先,在fs的conf/sip_profiles目录下生成1200个external****.xml文件,每个文件使用不同的端口号。
external9200.xml
<profile name="external9200">
…
<param name="sip-port" value="9200"/>
…
启动fs,使用sipp进行压测(脚本参见之前的文章)。
测试结果
启动fs后,没有呼叫的时候,已经占用了3.6G(46%)的内存。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20596 root -2 -10 17.1g 3.6g 8252 S 97.3 46.5 1:26.05 freeswitch
使用sipp-auto.py脚本进行并发测试。
测试呼叫跑满1小时。
20596 root -2 -10 18.5g 5.2g 3308 S 121.6 68.6 15:11.83 freeswitch
测试呼叫经过3个小时。
20596 root -2 -10 21.3g 5.4g 3168 S 231.5 70.4 772:38.37 freeswitch
从top的显示中可以看到fs的内存占用持续升高。
总结
fs启动打开的端口超过一定数目(1000)之后,会有内存占用过大和内存持续升高的问题。
在删除多余的端口资源后,测试恢复正常。
具体原因需要对sofia模块代码走读确定。
空空如常
求真得真
相关文章:

freeswitch的一个性能问题
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在fs的使用过程中,会遇到各种各样的问题,各种问题中,性能问题是最头疼的。 最近在测试某些场景的时候,压测会造成fs的内存占用持续升高,并在达到某个临界点的…...

各机构如何加强网络渗透、“渗透”防御
数据渗透,例如黑客攻击和“渗透”,或未经授权的信息传输。 联邦调查局、国家安全局以及网络安全和基础设施安全局最近的联合报告证明,网络安全仍然是当今国防部门面临的两个最大的网络威胁。 所谓的零日攻击尤其有害,因为组织在…...
Docker命令 常用中间件运维部署,方便构建自己服务
Tips:记录了如何安装不同中间件的Docker命令,帮助大家更方便的搭建自己服务,会不定期更新。 MySQL # Mysql 5版本: docker run -d -p 3306:3306 --privilegedtrue \ -v /itholmes/mysql/log:/var/log/mysql \ -v /itholmes/mysql…...

Android——gradle构建知识片-散装版
一、Gradle - Plugins插件库地址 Gradle - Plugins插件库地址https://plugins.gradle.org/ 二、将自己的代码Android Library发布到仓库Bintray、JCenter、JitPack 放弃JitPack,发布Android Library到Bintray、JCenter - 简书Bug:升级到gradle tools …...

3.3 Windows驱动开发:内核MDL读写进程内存
MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中,每个进程都有自己独立的虚拟地址空间,不同进程之间的内存空间是隔离的。因此,要在一个进程中读取或写入另一个进程的内存数据,需要先将目标进…...

开源与闭源:驾驭大模型未来的关键决断
在数字化的时代洪流中,开源与闭源的选择不断成为技术界的重要分水岭。随着特斯拉CEO埃隆马斯克的言论及其决策,公开支持开源,并糅合商业理念与技术革新,使得这场辩论再次成为公众关注的焦点。那么,在这场关乎技术发展脉…...

面向对象成员之属性
属性:通过方法改造出来 # 1.编写时 # 方法上方写property # 方法参数:只有一个self # 2.使用时:无需加括号 对象.方法 # 3.应用场景:对于简单的方法,当无需传参且有返回值时,可以使用 property class Foo(object):def _init_(self):...propertydef start(self):return 1pr…...

第六十二周周报
学习目标: 一、实验 二、论文 学习时间: 2023.11.11-2023.11.17 学习产出: 实验 1、CB模块实验效果出来了,加上去效果不太行,后续实验考虑是否将CB模块换到其他地方 2、CiFAR100实验已完成,效果比Vi…...

【机器学习】 特征工程:特征预处理,归一化、标准化、处理缺失值
特征预处理采用的是特定的统计方法(数学方法)将数据转化为算法要求的数字 1. 数值型数据 归一化,将原始数据变换到[0,1]之间 标准化,数据转化到均值为0,方差为1的范围内 缺失值,缺失值处理成均值、中…...

【深度学习实验】网络优化与正则化(七):超参数优化方法——网格搜索、随机搜索、贝叶斯优化、动态资源分配、神经架构搜索
文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、优化算法0. 导入必要的库1. 随机梯度下降SGD算法a. PyTorch中的SGD优化器b. 使用SGD优化器的前馈神经网络 2.随机梯度下降的改进方法a. 学习率调整b. 梯度估计修正 3. 梯度估计修正:动量法Momen…...

简单漂亮的首页
效果图 说明 这个首页我也是构思了很久,才想出这个界面,大家喜欢的话,可以拿走去使用 技术的话,采用的就是vue的语法,但是不影响,很多样式我都是直接手敲出来的 代码实现 标语 <!-- 标语 start-->&…...

SSM项目初始化流程与操作概念解释-SpringBoot简化版
文章目录 1.引入概念2.导入依赖3.项目配置4.依照SpringMVC框架构建项目 1.引入概念 例如某一个XX系统,该系统存在前台页面(给用户直观看或使用),和后台页面(给管理人员调整数据和权限)。 这二个页面都通过…...
Angular 路由无缝导航的实现与应用(六)
Angular 是一种流行的前端开发框架,它提供了强大的路由功能,用于构建单页应用程序(SPA)。本文将介绍 Angular 路由的基本概念和使用方法,并通过具体的代码实例演示如何利用路由实现无缝的页面导航。 什么是 Angular 路…...

quickapp_快应用_tabBar
tabBar 配置项中配置tabBar(版本兼容)使用tabs组件配置tabBar语法示例问题-切换tab没有反应问题-数据渲染问题解决优化 问题-tab的动态配置 第三方组件tabbar 一般首页都会显示几个tab用于进行页面切换,以下是几种tab配置方式。 配置项中配置tabBar(版本兼容) 在m…...

PCL_点云分割_基于法线微分分割
一、概述 PCL_点云分割_基于法线微分分割_点云法向量微分-CSDN博客 利用不同的半径(大的半径、小半径)来计算同一个点的法向量差值P。判断P的范围,从而进行分割。 看图理解: 二、计算流程 1、计算P点小半径的法向量Ns 2、计…...

计算机毕业论文内容参考|基于深度学习的交通标识智能识别系统的设计与维护
文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析总结与展望导文 基于深度学习的交通标识智能识别系统是一种利用深度学习模型对交通标识进行识别和解析的系统。它可以帮助驾驶员更好地理解交通规则和安全提示,同时也可以提高道路交通…...
SELinux零知识学习十六、SELinux策略语言之类型强制(1)
接前一篇文章:SELinux零知识学习十五、SELinux策略语言之客体类别和许可(9) 二、SELinux策略语言之类型强制 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使用权,大多数默认转换标志、审…...

轻量封装WebGPU渲染系统示例<34>-数据驱动之Json构建场景
场景和数据之间的互通: 场景数据化或者数据化场景,是当前的主流场景数据构成方式。方便传输方便交换甚至是交互。 内置数据互通机制更有利于用户在各种应用场合下实现具体的3D相关的应用需求。用户只需要关心标准的或者约定好的数据定义及操作方式就能方…...

全局异常拦截和Spring Security认证异常的拦截的顺序
📑前言 本文主要全局异常拦截和Spring Security认证异常的顺序,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日…...

Hive Lateral View explode列为空时导致数据异常丢失
一、问题描述 日常工作中我们经常会遇到一些非结构化数据,因此常常会将Lateral View 结合explode使用,达到将非结构化数据转化成结构化数据的目的,但是该方法对应explode的内容是有非null限制的,否则就有可能造成数据缺失。 SE…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...