centos core dump centos清理缓存
其实centos core dump的问题并不复杂,但是又很多的朋友都不太了解centos清理缓存,因此呢,今天小编就来为大家分享centos core dump的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
有人在CentOS 6.x上跑过Genymotion吗
我在ubuntu上用Genymotion,很快的
你说的是编译glibc吧.centos应该可以直接升级glic到新版本的吧
没有直接可升级的版本,CentOS 6.2用yum安装只有2.12版本的,我下载源代码编译之后安装到另一个位置,用LD_LIBRARY_PATH
指向新编译的库之后许多程序跑不起来了(最新版本连ls也会core dump,2.15可能跑ls、ping等程序,但不能跑gdb或vim等),所以
也不敢把它直接装到系统中来试。
linux内核调试之 crash分析dump文件
Linux下有多个内存转储分析工具,如 lcrash、Alicia、Crash。Crash是一个由 Dave Anderson开发并维护的内存转储分析工具,当前版本为5.0.0。在没有统一标准的内存转储文件格式的情况下,Crash支持多种格式。
Crash的命令格式如下:crash [OPTION]... NAMELIST MEMORY-IMAGE[@ADDRESS]其中,namelist是用于调试版本内核的名称列表,通常需要自定义编译,或者从发行版网站下载包含内核的/usr/lib/debug/lib/modules/内核版本/vmlinux软件包。而memory-image是转存的某种格式的dump文件。
为了使用 Crash,需要安装相应的kernel-debuginfo和debug-info-common软件包,如 CentOS 8下,可以从debuginfo.centos.org/8/...下载安装包。
使用 Crash的命令提示符执行相关操作。Crash内置命令用于查看寄存器值、调用堆栈等信息,这些命令与 gdb相似。
例如,bt命令用于打印内核堆栈,可以列出所有内核堆栈或指定进程的堆栈。使用 bt+ pid列出特定进程的堆栈,bt-f列出所有堆栈详细信息,bt-p仅打印崩溃线程的内核栈。
dmesg命令用于查看崩溃时的内核日志信息。
dis命令用于反汇编地址或函数,显示该地址对应的源码。例如,dis-l显示特定行号的源码。
rd命令用于读取内存内容。
mod命令用于查看、加载模块的符号调试信息。需要加载包含符号信息的模块。
x/FMT命令用于查看内存内容,FMT参数包括大小、格式和长度。
sym命令用于将虚拟地址转换为符号。
ps命令用于打印内核崩溃时的进程信息。
file命令用于打印指定进程的文件打开列表。
Crash还支持如 vm [pid]查看进程的虚拟地址空间,task [pid]查看进程的task_struct和thread_info信息,以及kmem-I查看内存使用情况。
Crash可以用于实际测试,如主动触发崩溃情况分析和分析空指针产生的 core dump文件。在实验中,内核版本为 4.18.0-193.19.1.el8_2.x86_64,Crash版本为 7.2.7-3.el8,且使用了 kexec-tool。
以上是 Crash工具的主要功能和使用方法,通过这些命令,开发者可以深入分析内存转储文件,定位并解决潜在的内存错误。
云主机 CentOS Kernel Hung住处理办法
云主机无法ssh及ping通,VNC查看提示“echo 0>/proc/sys/kernel/hung_task_timeout_secs disables this message”
1.重启云主机进行恢复无效,怀疑云主机底层资源有问题
2.查看宿主机上云主机的磁盘进程,有ntp未结束进程,sudo kill-9$PID将所有进程杀死
climc server-syncstatus后台同步状态
climc server-start
3.进入云主机排查
sar-r查看内存利用率,是否有大量free
sar-u查看CPU利用率
4.如果没有core dump,可以检查/var/log/message,搜索“echo 0>/proc/sys/kernel/hung_task_timeout_secs” disables this messageand“blocked for more than 120 seconds”
内存数据落盘时引发的故障
默认情况下,Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘,导致后续的IO请求都是同步的。将缓存写入磁盘时,有一个默认120秒的超时时间。出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。
另外,在进程处理于可中断的睡眠状态S时<需要看dump>,进程要等待如套接字、信号量被挂起,进入到对应事件等待队列中的的这个时间太长,占用了队列空间使进程长时间处于阻塞状态,影响了进程队列的有序调度
根据应用程序情况,对vm.dirty_ratio,vm.dirty_background_ratio两个参数进行调优设置。
推荐如下设置:
# sysctl-w vm.dirty_ratio=10
# sysctl-w vm.dirty_background_ratio=5
# sysctl-p
如果系统永久生效,修改/etc/sysctl.conf文件。加入如下两行:
#vi/etc/sysctl.conf
vm.dirty_background_ratio= 5
vm.dirty_ratio= 10
重启系统生效。