服务器的性能是服务器稳定的主要指标。服务器的性能排查有很多方法。本章节介绍了几种关于Kamailio性能排查的机制,这些工具用于排查Kamailio处理速度变慢的问题。当然,我们首先推荐的是,如果用户有大量的流量,请确保工作进程的数量足够大(请参阅历史文档中关于children、tcp_children和sctp_children核心参数介绍)。对于相当大的订阅者用户基数的服务器配置来说,一个比较合适的设置值应该是16。
如果系统有太多的工作进程则会增加上下文切换的开销,因此用户必须考虑优化其他导致延迟真正原因,例如在内存中增加更多的缓存,数据库中使用更好的索引,支持周边的缓存DNS服务器等方式。系统处理过程中可能在很多节点产生异常负载,例如我们前面提到的数据库读写,存储空间访问等等。在kamailio中,因为每个action执行性能差也可能导致性能问题。因此,如果需要细节的跟踪需要特别的工具来实现。今天,笔者介绍两个系统默认支持的两个主要排查工具:通过core模块设置延迟时间打印异常,使用基准测试模块计算某个action的执行时间。
Core模块时延打印报告
核心模块可以跟踪执行配置文件操作或数据库查询所需的时间,并且在持续时间高于配置的阈值时输出日志消息。此功能可通过几个核心参数阀值进行控制:
● latency_limit_action-将其设置为大于0的值(毫秒表示),报告在配置文件的操作(action)中的花费时间超过了此设置值
● latency_limit_db-将其设置为大于0的值(毫秒表示),报告SQL查询花费的执行时间超过此设置值
● latency_log-打印与延迟报告相关的消息日志级别下面的示例展示如何设置这些参数报告耗费时长超过100ms的action,耗费时长超过200ms的数据库查询操作,以及日志级别为L_WARN(0)的示例:
latency_limit_action=100 // 超过100毫秒就打印报告
latency_limit_db=200 // 超过DB查询花费时间就打印报告
latency_log=0
性能基准测试模块
该模块增加了一个测试基准机制,可以测试配置文件中的路由块所花费时间。这个模块可以支持更底层,更细节的某个执行流程所花费的时间。该模块的实现文档可在以下链接中找到:
http://kamailio.org/docs/modules/4.2.x/modules/benchmark.html
这个模块和log_latency_action启用的核心功能不同,这个模块使用基准测试跟踪每个action操作的执行时间,配置文件开发人员可以决定需要分析的具体action流程。它通过在配置文件中设置一个基准点来跟踪,从这个基准点开始计时并执行到需要打印的点,结合持续时间来跟踪流程。如果用户怀疑认证流程的执行有问题,执行时间异常等问题。用户要获取用户身份验证的路由[AUTH]执行时间,需要将此路由块的执行插入基准测试流程中:
bm_start_timer(“auth”); // 启动基准测试点
route(AUTH); // 需要跟踪的模块
bm_log_timer(“auth”); // 打印输出点
使用基准模块参数loglevel设置的日志级别,统计数据写入到了syslog。该模块可以保留许多重复的详细信息,打印平均统计数据。
以上笔者简单介绍了通过core模块设置延迟时间打印异常,使用基准测试模块计算某个action的执行时间来判断Kamailio的性能执行状态。后续,笔者会介绍其他的性能测试手段。
作者:james.zhu
来源:SIP实验室
原文:https://mp.weixin.qq.com/s/LkBWrBqWxTcLjZjrUmiP7Q
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。