很久之前使用puppet时遇到的一个问题,简单分享下。

1.监控team报一台机器的swap报警,机器内存使用出现问题,导致系统开始使用swap。
2.登录服务器,通过top –d 1 –c查看系统状况,发现puppet内存使用量很大,而且一直在增加,手动运行,发现一直运行不完。
同时,分析puppet的运行日志,发现puppet开始运行的时间和内存监控图上面的趋势吻合,定位为puppet运行导致的问题。
3.手动运行puppet,并使用lsof和strace来定位问题。。
1)通过lsof发现系统打开了大量的file,并且都在调用lstat函数

lstat("/xxxxxx/live/b6c3506377254e9b879268aecbe77036/1338868/1338868515.block", {st_mode=S_IFREG|0644, st_size=261182, ...}) = 0

rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0

rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0

rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0

2)同时,strace来统计各个方法调用消耗的时间,发现消耗在getdents函数上。

strace  -p 21741 -c

Process 21741 attached - interrupt to quit

Process 21741 detached

% time     seconds  usecs/call     calls    errors syscall

------ ----------- ----------- --------- --------- ----------------

95.65    0.040955          87       469           getdents

4.22    0.001807           0    426525           rt_sigprocmask

0.07    0.000030           0       235           lstat

0.06    0.000026           0       235           close

0.00    0.000000           0       235           open

 0.00    0.000000           0       235           lseek

lstat和getdents函数都是用来查看文件属性信息的。

4.查看puppet中module的代码,发现在这个目录下使用了file的资源,并使用了recurse的参数。
而由于业务的特殊性,这个目录下面会有大量的文件,这样就导致puppet在判断文件的属性上消耗了大量的时间,进而占用了大量的内存。
问题找到了,解决方法也很简单,去掉recurse就好了,里面小文件的属性就交给exec资源去处理吧。
本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1355020,如需转载请自行联系原作者

puppet recurse 导致的性能问题一例相关推荐

  1. 频繁分配释放内存导致的性能问题的分析--brk和mmap的实现

    现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为:  进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70  2 用ps -o majflt,minflt -C pr ...

  2. EntityFramework Core 3多次Include导致查询性能低之解决方案

    上述我们简单讲解了几个小问题,这节我们再来看看如标题EF Core中多次Include导致出现性能的问题,废话少说,直接开门见山.首先依然给出我们上一节的示例类: 接下来我们在控制台进行如下查询: 如 ...

  3. 导致Oracle性能抖动的参数提醒

    第一章 技术人生系列 · 我和数据中心的故事(第四期)-导致Oracle性能抖动的参数提醒 中亦安图 | 2016-01-25 21:39 前言 不知不觉,技术人生系列·我和数据中心的故事来到了第四期 ...

  4. linux交换区使用过多导致的性能问题

    近日,我们开发发现有一台配置相同的服务器跑的特别慢,相同数据量的情况下,其他服务器只要跑10分钟,这台服务器要跑50分钟,经确认,所有的应用层配置参数都相同.上去之后,发现该服务器swap使用比较多, ...

  5. 【中亦安图】导致Oracle性能抖动的参数提醒(4)

    第一章 技术人生系列 · 我和数据中心的故事(第四期)-导致Oracle性能抖动的参数提醒 中亦安图 | 2016-01-25 21:39 前言 不知不觉,技术人生系列·我和数据中心的故事来到了第四期 ...

  6. 极客日报:腾讯视频、优酷、爱奇艺取消超前点播;苹果为小学生推出编程指南;Win11会导致游戏性能下降

    一分钟速览新闻点! 中国互联网企业员工平均年龄出炉 腾讯视频.优酷.爱奇艺取消超前点播 微信官方公布9月份朋友圈十大谣言 华为不放弃起诉瑞典相关部门 小米5G机东欧市场超越苹果.三星:排名第一 贝索斯 ...

  7. PostgreSQL 查询涉及分区表过多导致的性能问题 - 性能诊断与优化(大量BIND, spin lock, SLEEP进程)

    摘要: 标签 PostgreSQL , 分区表 , bind , spin lock , 性能分析 , sleep 进程 , CPU空转 , cache 背景 实际上我写过很多文档,关于分区表的优化: ...

  8. 记一次matespace导致的FGC导致接口性能尖刺

    0. 背景 自己服务一个核心接口的TP99有性能尖刺,开始的排查之旅. 先用skywalking定位了下执行慢的请求,发现依赖的数据库.redis组件均是快速返回.时间都占用'spingmvc'本身. ...

  9. 3个坏代码导致的性能问题案例:CPU占用飙到了900%

    读过<重构 - 改善既有代码的设计>一书的同学们应该都很了解"代码的坏味道".当然确定什么是代码"坏味道"是主观的,它会随语言.开发人员和开发方法的 ...

最新文章

  1. 高通总裁:物联网和云计算正改变游戏规则
  2. Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
  3. 利用IShellExecuteHook接口对程序监控
  4. linux命令(32):free命令
  5. java的编程规范_JAVA编程规范-OOP规范
  6. 7-6 What is a computer? (5 分)
  7. 简单工具类HttpUtils
  8. 部署ASDM图形化工具
  9. pcshare完美版
  10. python实现抠图_python和opencv实现抠图
  11. python操作selenium
  12. 判断三维空间中三点是否共线
  13. 记录下如何判断错误:no such file or directory
  14. Codeforces Young Physicist
  15. x5550支持服务器内存吗,英特尔® 至强® 处理器 X5550
  16. 应用交付工程师应该具备的关键能力(售后篇)
  17. quartus ii 13.0下载地址
  18. 山东二本计算机排名大学最新,2018山东二本大学排名
  19. [版本发布]OpenNCC百度定制版VCAM发布
  20. 【Unity3d】将Particle转成UGUI

热门文章

  1. tf.keras.layers.LSTM 示例
  2. Java源码详解四:String源码分析--openjdk java 11源码
  3. Linux: /dev/fd/详解
  4. oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。
  5. java按特殊标志截取_java 字符串分割处理split及特殊符号
  6. 万字大白话带你重拾JVM
  7. 数据库缓存最终一致性的四种方案
  8. vue 拷贝 数组_Vue实现对数组、对象的深拷贝、复制
  9. 旅行售货员 java_JAVA旅行商售货TSP
  10. 计算机类自主招生推荐信,自主招生推荐信范文-20210709232503.docx-原创力文档