10年 Java程序员,硬核人生!勇往直前,永不退缩!

欢迎围观我的git:https://github.com/R1310328554/spring_security_learn 寻找志同道合的有志于研究技术的朋友,关注本人微信公众号: 觉醒的码农,或Q群 165874185

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

java 容器启动到一半,突然就死掉了,查看日志,发现“ killed ”

 

 

why? 凭感觉是 容器需要的内存超过了 k8s 的限制,被k8s 杀掉了, 但是竟然k8没有日志。 好吧,可能是我不会查看k8s 的日志。

 

试了两个方法:

1、内核日志 /var/log/messages
dmesg打印环形缓冲区的内容。这些信息还会实时发送到syslogd或klogd(在它们运行时),最终以形式发送给/var/log/messages;什么时候dmesg最有用是捕获之前syslogd和/或klogd开始的启动时消息,以便将它们正确记录。
2、dmesg | grep -i -B100 'killed process'
一旦设置了内存限制,将立即生效,并且当物理内存使用量达到limit的时候,memory.failcnt的内容会加1,但这时进程不一定就会被kill掉,内核会尽量将物理内存中的数据移到swap空间上去,如果实在是没办法移动了(设置的limit过小,或者swap空间不足),默认情况下,就会kill掉cgroup里面继续申请内存的进程。
 
 
 

 

 

基本找到原因,后面修改yaml, 把内存放大了点,就没有了这个错误!

 


参考:
https://www.jianshu.com/p/a9288b7edfa3

http://www.dockone.io/article/5932

https://blog.csdn.net/u012516914/article/details/109108660

 

posted on 2021-11-15 20:50  CanntBelieve  阅读(2368)  评论(0编辑  收藏  举报