puppet recurse 导致的性能问题一例
strace-p 21741 -cProcess 21741 attached - interrupt to quit
Process 21741 detached
% time secondsusecs/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资源去处理吧。
页:
[1]