linux内存泄露命令 linux内存泄漏检测工具

Linux 当jmeter压测时,JVM内存泄漏,端口不够问题,解决办法在Linux环境,使用jmeter压测会遇到很多问题 , 比如:配置不对,权限不足这些都是很好解决 。
但是遇到这几个问题:
1.内存泄漏2.端口不够
遇到两个问题网上解决办法都很杂 ,没有一个清晰明了的解决办法,所以针对这两个问题,写出解决办法:
例如:
屏蔽“聚合报告”“查看结果数”,等插件
脚本尽量最小变量,多个线程组下CSV文件设置,如果 只在当前线程组 使用变量,尽量不使用“全部现场” 。
bin/下的jmeter文件(非jmeter.sh)编辑:(Windows环境编辑jmeter.bat)
JVM_ARGS="-Xms4g -Xmx4g"
还有另一个方法:启动加参数设置:JVM_ARGS="-Xms2048m -Xmx2048m" jmeter -t test.jmx
(上面调整内存格式可以1g 2g , 也可以1024m 2048m , 这样写都可以)
【linux内存泄露命令 linux内存泄漏检测工具】Response code: Non HTTP response code: java.net.BindException
Response message: Non HTTP response message: Address already in use: connect
Linux本来的默认的端口欧范围:1024-65535,64511个,所以当压测接口调用超过65535个就会出现端口不够的问题 。
查Linux支持多少端口,
cat /proc/sys/net/ipv4/ip_local_port_range
然后找运维修改,或者:
修改文件/etc/sysctl.conf
键入如下语句:
net.ipv4.ip_local_port_range = 1024 65535
压测过程还有其他问题,比如宽带限制,负载均衡,关闭缓存等,多百度即可 。
linux内核内存泄露检测经常碰到系统跑着跑着一段时间内存满了linux内存泄露命令,出现内存泄漏linux内存泄露命令的问题 , 系统软件太庞大,这类问题又不好直接从源码中分析,所以需要借助工具来分析了,kmemleak就是这样的一个工具 。
在Kernel hacking中打开CONFIG_DEBUG_KMEMLEAK =y即使能了kmemleak , 其实就是开了一个内核线程,该内核线程每10分钟(默认值)扫描内存,并打印发现新的未引用的对象的数量 。kmemleak的原理其实就是通过kmalloc、vmalloc、kmem_cache_alloc等内存的分配,跟踪其指针 , 连同其他的分配大小和堆栈跟踪信息,存储在PRIO搜索树 。如果存在相应的释放函数调用跟踪和指针,就会从kmemleak数据结构中移除 。下面我们看看具体的用法 。
查看内核打印信息详细过程如下linux内存泄露命令:
1、挂载debugfs文件系统
mount -t debugfs nodev /sys/kernel/debug/
2、开启内核自动检测线程
echo scan/sys/kernel/debug/kmemleak
3、查看打印信息
cat /sys/kernel/debug/kmemleak
4、清除内核检测报告 , 新的内存泄露报告将重新写入/sys/kernel/debug/kmemleak
echo clear/sys/kernel/debug/kmemleak
内存扫描参数可以进行修改通过向/sys/kernel/debug/kmemleak 文件写入 。参数使用如下:
off 禁用kmemleak(不可逆)
stack=on 启用任务堆栈扫描(default)
stack=off 禁用任务堆栈扫描
scan=on 启动自动记忆扫描线程(default)
scan=off 停止自动记忆扫描线程
scan=secs 设置n秒内自动记忆扫描,默认600s
scan 开启内核扫描
clear 清除内存泄露报告
dump=addr 转存信息对象在addr
通过“kmemleak = off”,也可以在启动时禁用Kmemleak在内核命令行 。在初始化kmemleak之前,内存的分配或释放这些动作被存储在一个前期日志缓冲区 。这个缓冲区的大小通过配CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE设置 。
如何在linux下检测内存泄漏是不是说没有一种内存检查工具能够在linux使用呢,也不是,像valgrind工具还是相当不错的 。他的下载地址是 下载一个valgrind 3.2.3 (tar.bz2) 工具,按照里面的README提示,安装后就可以使用这个工具来检测内存泄露和内存越界等 。这是一个没有界面的内存检测工具 , 安装后,输入valgrind ls -l 验证一下该工具是否工作正常(这是README里面的方法,实际上是验证一下对ls -l命令的内存检测),如果你看到一堆的信息说明你的工具可以使用了 。在编译你的程序时,请设置-g参数 , 编译出后使用如下的命令来判断你的程序存在内存泄露: valgrind --tools=memcheck --leak-check=full yourProg在输出信息中就会看到你的内存问题了 。

推荐阅读