docker – Kubernetes OOM pod被杀死,因为内核内存增长很多

weixin_38104933 2019-09-12 01:19:47
我正在开发一个java服务,它基本上在网络文件系统中创建文件来存储数据.它运行在Ubuntu 18.04 LTS中的k8s集群中.当我们开始限制kubernetes(限制:内存:3Gi)的内存时,pod开始被kubernetes OOMKILL. 一开始我们认为这是java进程中的内存泄漏,但更深入地分析我们注意到问题是内核的内存.我们验证了查看文件/sys/fs/cgroup/memory/memory.kmem.usage_in_bytes 我们将案例分离为仅使用DD命令创建文件(不带java),如下所示: for i in {1..50000}; do dd if=/dev/urandom bs=4096 count=1 of=file$i; done 使用dd命令我们看到同样的事情发生了(内核内存增长到OOM).在k8s重新启动pod后,我做了一个describe pod: >最后状态:终止>原因:OOMKilled>退出代码:143 创建文件会导致内核内存增长,删除这些文件会导致内存减少.但我们的服务存储数据,因此它会不断创建大量文件,直到因为OOMKilled而终止pod并重新启动. 我们测试了使用带有-kernel-memory参数的独立docker来限制内核内存,并且它按预期工作.内核内存增长到极限并且不再上升.但我们没有找到任何方法在kubernetes集群中这样做.有没有办法限制K8S环境中的内核内存?为什么文件的创建会导致内核内存增长并且不会被释放?
...全文
1581 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38113341 2019-09-12
  • 打赏
  • 举报
回复
感谢所有这些信息,它非常有用! 在我的应用程序中,我通过使用以下命令创建一个运行cron作业的新侧容器,每5分钟解决一个问题: echo 3 > /proc/sys/vm/drop_caches (请注意,您需要侧容器以特权模式运行) 它运行良好,具有可预测的优点:每隔5分钟,您的内存缓存将被清除.
代码下载链接: https://pan.quark.cn/s/90fbf78c3289 "1元云购"是一种依托互联网的购物方式,用户仅需投入微小的资金(一般为一元)便有机会赢取高价值商品。此类模式常借助抽奖机制来判定获胜者,从而吸引众多用户加入。"1元云购源代码"是承载该业务流程的程序代码,其用途在于搭建一个完整的1元云购系统。 在构建1元云购源代码的过程中,主要包含以下几个核心技术要点: 1. **数据库架构**:为了有效存储商品详情、用户资料、交易历史及开奖结果,必须设计科学合理的数据库框架。这包括商品数据表、用户信息表、订单记录表和开奖记录表等,确保数据的统一性与完整性。 2. **支付渠道对接**:1元云购平台需与第三方支付服务(例如支付宝、微信支付)进行对接,以实现用户的在线支付操作。这涉及API接口调用、交易状态同步、退款流程管理等环节。 3. **随机数生成策略**:抽奖过程的核心在于公平透明地选定获奖者,通常采用随机数生成策略来实现。该策略需保障每位参与者拥有相等的获奖机会,同时防止欺诈行为。 4. **用户界面开发**:卓越的用户体验是吸引参与者的关键因素。前端页面应兼具视觉吸引力与操作便捷性,清晰展示商品信息、购买步骤、中奖规范等,并提供用户注册、登录、查询订单等功能。 5. **服务器程序设计**:后端系统负责处理用户请求,如管理订单、计算中奖号码、更新数据库信息等。这部分通常采用PHP等服务器端技术实现,需应对并发访问与高负载情形。 6. **安全措施**:1元云购平台可能面临恶意攻击,例如SQL注入、XSS跨站脚本攻击等。因此,源代码需遵循安全编程准则,对用户输入进行过滤与校验,同时运用HTTPS等加密手段保障数据传输安全。 7. **...

479

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧