Address Sanitizer 用法

2021-05-11T01:25:06+08:00

简介

Address Sanitizer(ASan)是一个快速的内存错误检测工具。它非常快,只拖慢程序两倍左右(比起Valgrind快多了)。

它包括一个编译器instrumentation模块和一个提供malloc()/free()替代项的运行时库。

从gcc 4.8开始,AddressSanitizer成为gcc的一部分。当然,要获得更好的体验,

最好使用4.9及以上版本,因为gcc 4.8的AddressSanitizer还不完善,最大的缺点是没有符号信息。

阅读全文...

使用google heap profiler进行内存占用分析

2021-03-03T07:50:20+08:00

最近在项目中用到了google的heap profiler工具来分析内存占用,效果非常显著,因此在这里写一篇博客记录一下使用过程中遇到的一些问题。

heap profiler依赖于tcmalloc,所以先要在本机安装tcmalloc,安装过程非常的简单。然后开始使用tcmalloc进行编译自己写的程序。

  • 生成堆栈快照

先写一段申请大量内存的代码:

阅读全文...

开发小技巧备忘

2019-11-25T01:28:49+08:00

开发小技巧备忘

 

阅读全文...

使用Sysdig监视您的Ubuntu

2019-10-10T15:06:06+08:00

介绍

Sysdig是一个全面的开源系统活动监控,捕获和分析应用程序。它具有强大的过滤语言和可自定义的输出,以及可以使用称为chisels 的Lua脚本扩展的核心功能。

应用程序通过访问内核来工作, 内核允许它查看每个系统调用以及通过内核传递的所有信息。这也使其成为监视和分析系统上运行的应用程序容器生成的系统活动和事件的出色工具。

核心Sysdig应用程序监视其安装的服务器。但是,该项目背后的公司提供了一个名为Sysdig Cloud的托管版本,可以远程监控任意数量的服务器。

独立应用程序可在大多数Linux发行版上使用,但在Windows和macOS上也可用,功能更为有限。除了sysdig命令行工具,Sysdig还带有一个csysdig带有类似选项的交互式UI 。

在本教程中,您将安装并使用Sysdig来监视Ubuntu 16.04服务器。您将流式传输实时事件,将事件保存到文件,过滤结果以及浏览csysdig交互式UI。

阅读全文...

千万并发不是梦:TCPBurn并发测试

2019-05-17T01:49:43+08:00

如何构造出成千上百万的攻城士兵,是高并发测试的关键。而传统压力测试工具设计的时候并不是针对高并发测试设计的。针对高并发场景,传统压力测试工具往往自身是性能瓶颈。为适应高并发趋势,我们设计了TCPBurn,用于无状态协议的高并发压力测试,瞬间可以创造出任意多的攻城的精兵猛将。

 

我们以消息推送服务为例,来模拟海量用户并发场景。千万并发连接测试相关的公开资料很少,据说要达到C10M(千万连接)并发,需要从根本上解决内核自身的问题。我们的实验希望验证linux服务器环境下Nginx能否承受千万连接的考验。

阅读全文...

Valgrind memcheck 用法

2019-03-11T06:49:12+08:00

Valgrind是一组调试(debugging)和剖析(profiling)工具的集合。memcheck是其中应用最广泛的一个,它检查内存有关的问题,包括诸如内存访问越界、内存泄露等。

阅读全文...

linux 下使用 tc 模拟网络延迟和丢包

2018-09-12T08:06:50+08:00
1 模拟延迟传输简介
netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian 等等。 tc 是Linux 系统中的一个工具,全名为 traffic control(流量控制)。tc 可以用来控制 netem 的工作模式,也就是说,如果想使用 netem ,需要至少两个条件,一个是内核中的 netem 功能被包含,另一个是要有 tc 。

需要注意的是:本文介绍的流控只能控制发包动作,不能控制收包动作,同时,它直接对物理接口生效,如果控制了物理的 eth0,那么逻辑网卡(比如 eth0:1)也会受到影响,反之,如果您在逻辑网卡上做控制,该控制可能是无效的。(注:虚拟机中的多个网卡可以在虚拟机中视为多个物理网卡)。
 

阅读全文...