此文已由作者杨延亮授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
问题背景
云主机在运行或者启动的过程中,可能会存在卡死的情况。往往在云主机重启之后又恢复正常,但是问题现场得不到保留,不利于问题的分析定位。本文提供了一种方法,可以通过在云主机所在的物理节点(宿主机)上执行相关命令,来获取云主机卡死时的内存栈信息,以便分析定位(本文只针对Linux虚拟机)。
方法步骤
假如卡住的云主机UUID为:d1467712-a022-41c9-9963-8f41c6a4b2bd,在宿主机上执行如下命令,可以获取云主机对应的宿主机信息(pubbeta1-nova63.yq.163.org)
登录云主机对应的宿主机,执行如下命令,来生成对应的core文件。
virsh dump d1467712-a022-41c9-9963-8f41c6a4b2bd d1467712-a022-41c9-9963-8f41c6a4b2bd.core 或者
virsh dump d1467712-a022-41c9-9963-8f41c6a4b2bd d1467712-a022-41c9-9963-8f41c6a4b2bd.core --memory-ony
——需要指出的是,core文件生成的路径需要保留至少和虚拟机内存大小相当的空间,以防core文件生成失败,或生成core文件不完整。此处生成的core文件即包含了云主机卡死时的内存调用栈信息。执行crash vmliux vmcore命令即可对生成的core文件进行分析定位
——其中vmliux需要云主机对应的kernel-debuginfo和kernel-debuginfo-common这两个包,vmcore即为步骤2中生成的core文件。
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 Lily-一个埋点管理工具