Kamailio性能问题排查手段-core模块的时延报告和性能基准测试模块

服务器的性能是服务器稳定的主要指标。服务器的性能排查有很多方法。本章节介绍了几种关于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 举报,一经查实,本站将立刻删除。

(0)

相关推荐

  • Kamailio的两种计费机制

    kamailio计费模块支持两种计费机制,实现对计费事件的写入: ● 通过给SIP事务打上特殊标记,当该事务完成时将会写入计费事件(即,发送给上游的SIP响应代码大于或等于200)…

    2024年4月7日
  • Kamailio Transformations:常用的伪变量转换函数

    伪变量转换函数大部分在 pv 模块中处理,官方文档记录的很全面,但是给的例子比较少。本文列举比较常用的转换函数。 参数列表转换 根据名字从参数列表里面找到对应的项目,并返回其值 n…

    2024年3月29日
  • Kamailio v5.8.0 版本发布

    2024 年 3 月 7 日 Kamailio v5.8.0正式发布,这是一个新的重要版本,经过近10个月的联合开发和测试,增加了新的功能和改进。 简而言之,该主要版本带来了 4 …

    2024年3月11日
  • Kamailio RPC over HTTP 简介

    简介 本文是关于如何通过 HTTP 在 Kamailio 上设置和使用 RPC 的基本概述。由于本示例极不安全,因此绝对不能在生产中使用。下一篇文章将介绍如何正确确保示例安全,以便…

    2023年10月10日
  • Kamailio 中的路由类型

    在Kamailio中,路由关键字就像其他编程语言中的函数。然而,由于 Kamailio 的消息处理性质,Kamailio 中存在各种类型的路由。并不是所有路由类型都能访问所有函数,…

    2023年11月14日
  • 在 Kamailio 中缓存数据库查询结果

    数据库查询是一项成本相对较高的操作。虽然在很多情况下绝对有必要这样做,但反复访问数据库以获取相同的信息却是一种糟糕的模式。在 Kamailio(至少对我来说)中,一个相当普遍的做法…

    2023年12月6日