搜索引擎Killed原因排查

问题描述

腾讯云单核2G内存,运行程序的时候,程序有时会挂掉了,设置ulimit -c unlimited之后,想要core文件,结果程序运行的时候,直接提示killed,没有出现core文件

调研查询

killed的原因多是因为内存不足了,系统自动将程序杀死,此时没有出现core文件
使用free -h查看内存使用情况

[root@VM_125_247_centos server]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        699M        325M        424K        814M        963M
Swap:            0B          0B          0B

可用空间还有325M,自己的服务器在使用的时候,每次会将倒排索引的文件加载到内存中,如果是高并发的情况下,就会出现问题

我连续点击我的服务器网页,搜索内容,最后程序被killed了,然后打开系统的日志文件

vim /var/log/messages

搜索我的程序名search,发现如下内容,说明程序占用 内存过大,被killed掉了

317799 Aug 14 10:22:09 VM_125_247_centos kernel: Out of memory: Kill process 6280 (search) score 585 or sacrifice child
317800 Aug 14 10:22:09 VM_125_247_centos kernel: Killed process 6280 (search) total-vm:1628312kB, anon-rss:1133948kB, file-rss:156kB, shmem-rss:0kB 

也可以使用top命令去查看某个单一进程使用内存的情况

top -p `pidof search`

search就是执行 程序的时候名称,此时top可以监控单个程序的运行状况

top指令含义

当我们使用top指令查看CPU使用情况的时候,会显示如下内容,各个字段的含义解释一下

%Cpu(s):  4.4 us,  1.7 sy,  0.0 ni, 93.6 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st

us 列显示了用户模式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
ni 列显示了用户进程空间内改变过优先级的进程占用CPU百分比。
id 列显示了cpu处在空闲状态的时间百分比。
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
hi 硬件中断占用CPU
si 软件中断占用CPU
st 丢失时间占用CPU

内核机制

内存不足触发了Linux内核的OOM机制Linux 下有个特性叫作 OOM killer(Out of Memory),从字面的意思可以看出和内存溢出相关,当内存耗尽时,该问题就会出现。在Linux2.6.内核中,当该功能打开后,在内存耗尽时,会根据一定的值计算出一个合适的用户空间的进程给kill掉,以便释放更多的内存,保证整个系统的稳定运行。在系统的日志中通常会有下面的打印日志:Out of memory: kill process 959 (sshd) score 55 or a child。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值