经过一周的运行后,Elastic Beanstalk的CPU负载很高

时间:2017-02-24 17:57:31

标签: amazon-web-services docker amazon-s3 elastic-beanstalk cpu-usage

我在AWS Beanstalk上运行单实例工作程序。它是一个单容器Docker,每个工作日运行一次进程。大多数情况下,这些进程会同步S3中的大量小文件并进行分析。

设置运行正常大约一周,然后CPU负载开始线性增长,如此屏幕截图所示。

AWS Elastic Beanstalk CPU load chart

CPU负载保持在相当高的水平,从而减慢了我的计划进程。同时,我的顶级资源跟踪在容器内运行(privileged Docker模式启用它):

echo "%CPU %MEM ARGS $(date)" && ps -e -o pcpu,pmem,args --sort=pcpu | cut -d" " -f1-5 | tail

显示几乎没有CPU负载(仅在我的日常流程运行期间发生变化,在这些时间看似准确反映系统负载)。

在这个“背景”系统负载的来源方面,我在这里缺少什么?想知道是否有人看到过类似的行为,和/或可以从正在运行的容器内建议其他诊断。

到目前为止,我每周都重新启动设置以删除“后台”负载,但这是次优的,因为每次重启后的第一次运行必须从S3收集超过100万个小文件(而后续每天运行每天只添加几千个文件。)

1 个答案:

答案 0 :(得分:0)

简介有点奇怪。特别是它是线性增长。几乎像某些东西正在积累并且逐渐变得越来越长。 我没有足够的信息来指出具体问题。您可以检查的一些事项:

  • 您是否在任何地方收集文件,无论是有意还是在缓存或传输文件夹中?可能是系统正在运行后台进程(AV,索引,碎片整理,重复数据删除等)和大量小文件"正在积累成为需要被低效率地分页或处理的东西。

  • 您的流程的任何部分是否都使用每周命名约定或内务处理流程。随着周末的推移,你可能会遇到冲突或累积工作量。即第二周实际上是处理第一周和第二周。第二周的数据,但从未完成,以便第二天它逐渐变得更糟。我看到一些类似的东西,一个不合适的冒泡排序过程没有完成(由于缓慢但稳定的数据流入导致它不断重置,从未达到完成条件)并且随着阵列变大,过程的需求逐渐增加。

  • 您是否记录了每周翻转周期?

  • 趋势之后还有其他关键绩效指标吗? (网络,磁盘IO,内存,分页等)

  • 请考虑是否是误报。如果它是高CPU,则应该有其他指标镜像CPU行为,缓存使用,磁盘IO,S3传输统计/日志记录。

RL