我有一个在Docker容器中运行的Java应用程序。我已将此容器部署在ECS群集中。我想公开一个JMX端口,以便可以使用安装在该计算机上的CollectD代理收集JVM统计信息。 我在Java应用程序中指定的JVM参数是 JAVA_OPTS="-Dspring.config.location=classpath:/base/ -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8008 -Dcom.sun.management.jmx…

2020年11月30日 0条评论 22点热度 阅读全文

我正在AWS的ECS上通过Docker运行任务。该任务执行一些受CPU限制的计算,我想并行运行这些计算。我使用Runtime.getRuntime().availableProcessors()中指定的线程数启动线程池,该线程池在我的PC上本地运行良好。出于某种原因,即使有多个可用核心,在AWS ECS上,此值始终返回1。因此,我的计算是连续进行的,并且没有利用多个内核。 例如,现在,我有一个任务在“t3.medium”实例上运行,根据docs,该实例应具有2个内核。 当我执行以下代码时: System.out.p…

2020年6月8日 0条评论 44点热度 阅读全文

我们正在AWS ECS中运行Java微服务。因此,对于Docker,我们使用-Xmx指定了一些硬Java堆限制。确定要为堆保留多少内存以及为非堆内存(元空间,堆栈,JIT缓存等)需要多少是非常棘手的部分。当前,我们正在运行压力测试以识别何时拥有Docker OOMKiller。例如,对于2GB的AWS任务( docker ),最大可以为堆设置-Xmx1400m(对于-Xmx1450m,我们没有足够的内存来存储非堆的东西(退出代码137))实际上,Java 10+具有“-XX:MaxRAMPercentage”,但是…

2019年8月25日 0条评论 56点热度 阅读全文

我的任务定义配置有以下限制: "cpu": "1024", "memory": "8192" 我正在使用“docker” cgroup标志在docker容器中运行jar: java -XX:+UseContainerSupport -XX:MaxRAMPercentage=80 -XX:InitialRAMPercentage=70 /myjar.jar foo.Main 但是ECS会因OOM错误而终止我的服务。 我已经进行了测量,并使用以下方法测量了JVM内存使用情况,并在我的应用程序中将其报告为调试措施: va…

2019年8月15日 0条评论 14点热度 阅读全文

当前在容器化环境(ECS)中运行SpringBoot应用程序,并且我观察到了以下情况:容器在启动过程中被终止,而容器仍保持Liquibase changelock。 这会导致所有随后旋转的容器出现问题,最终需要人工干预。 是否可以确保如果进程收到SIGTERM,它将正常处理终止并释放锁? 我已经确保通过InitProcessEnabled(在CloudFormation模板中)启用容器并使用“exec java ...”作为我们使用的Java代理在这种情况下正常关闭,从而确保容器正在接收信号。 解决方案如下: 嘿,…

2019年8月10日 0条评论 15点热度 阅读全文

我是AWS的新手。因此,如果我的问题没有道理,请接受我的意见。 我的目标是在一个AWS EC2实例中运行多个docker容器(具有不同的docker配置)。到目前为止,我已经能够使用Java SDK以编程方式启动和停止EC2实例。 我想在EC2中运行docker实例时,我将不得不使用ECS Api(AmazonECSClient-包含在AWS Java SDK中)。不幸的是,使用AWS Java SDK几乎找不到任何示例。 有人知道如何做到这一点吗?任何指针都会有所帮助。 解决方案如下: API文档here给出了足…

2019年7月14日 0条评论 14点热度 阅读全文

给定一个通过mmap文件创建大型Linux内核页面缓存的进程,在具有内存限制的docker容器(cgroup)中运行会导致内核slab分配错误: Jul 18 21:29:01 ip-10-10-17-135 kernel: [186998.252395] SLUB: Unable to allocate memory on node -1 (gfp=0x2080020) Jul 18 21:29:01 ip-10-10-17-135 kernel: [186998.252402] cache: kmalloc-2…

2019年6月1日 0条评论 15点热度 阅读全文

This question already has answers here: Error in using aws-java-sdk-s3 (4个答案) 在4个月前关闭。 在对aws-java-sdk-secretsmanager添加依赖项后尝试在ECS中启动任务时收到以下错误,但该服务在本地正常启动。 java.lang.NoSuchFieldError: SIGNING_REGION 我知道错误是由于我在网上找到的aws-java-sdk-core和aws-java-sdk-secretsmanager中的不…

2019年4月6日 0条评论 15点热度 阅读全文

我在aws ecs forgate中创建了一个集群,然后创建了一个任务。我注意到我的任务总是每4-5分钟将其状态从pending更改为running,这导致我的应用程序一次又一次地重新启动。 我不需要此功能,任何人都可以告诉您如何解决此问题。 解决方案如下: 当我使用fargate运行容器时,我发生了同样的情况,然后我检查了指标,我的cpu利用率超过90%,因此它总是失败,然后又重新启动...分配的资源对我来说是不够的。因此,当您创建任务定义时,请给CPU和内存较高的内存。

2019年3月17日 0条评论 16点热度 阅读全文

我想利用AWS开发工具包为我的ECS服务的自动扩展策略设置和定义最小/最大任务。 因此,我能够使用代码为ECS容器实例成功修改我的自动伸缩组策略。 UpdateAutoScalingGroupRequest request = new UpdateAutoScalingGroupRequest().withAutoScalingGroupName("helloWorld-ASG").withMinSize(1); UpdateAutoScalingGroupResult response = client.upda…

2019年2月27日 0条评论 22点热度 阅读全文