Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Docker容器消失,作业太慢_Java_Docker_Amazon Ec2 - Fatal编程技术网

Java Docker容器消失,作业太慢

Java Docker容器消失,作业太慢,java,docker,amazon-ec2,Java,Docker,Amazon Ec2,我有一个多线程数据处理工作,在EC2实例上大约5小时(相同的代码)就完成了。但是当它在docker容器上运行时(我在创建容器之前将其配置为具有7GB的RAM),该作业在docker容器中缓慢运行了大约12个多小时,然后docker容器消失了。我们如何解决这个问题?为什么docker容器中的作业会非常慢?docker容器中的CPU处理速度非常慢,不仅仅是网络I/O。网络I/O速度慢是可以的。但我想知道,与EC2实例相比,CPU处理速度非常慢的原因是什么。另外,我在哪里可以找到导致docker容器死

我有一个多线程数据处理工作,在EC2实例上大约5小时(相同的代码)就完成了。但是当它在docker容器上运行时(我在创建容器之前将其配置为具有7GB的RAM),该作业在docker容器中缓慢运行了大约12个多小时,然后docker容器消失了。我们如何解决这个问题?为什么docker容器中的作业会非常慢?docker容器中的CPU处理速度非常慢,不仅仅是网络I/O。网络I/O速度慢是可以的。但我想知道,与EC2实例相比,CPU处理速度非常慢的原因是什么。另外,我在哪里可以找到导致docker容器死亡的主机操作系统中发生的事件的详细跟踪

**docker logs <container_id>**
19-Feb-2019 22:49:42.098 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
19-Feb-2019 22:49:42.105 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
19-Feb-2019 22:49:42.106 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 27468 ms
19-Feb-2019 22:55:12.122 INFO [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/logging]
19-Feb-2019 22:55:12.154 INFO [localhost-startStop-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/logging] has finished in [32] ms
searchResourcePath=[null], isSearchResourceAvailable=[false]
knowledgeCommonResourcePath=[null], isKnowledgeCommonResourceAvailable=[false]
Load language resource fail...
blah blah blah some application log
bash: line 1:    10 Killed                  /usr/local/tomcat/bin/catalina.sh run
Error in Tomcat run: 137 ... failed!
在04:09:23,从上面看,它显示了500个dockerd等,从下面看,在04:09:24,它确实杀死了11369个Java进程分数等。这意味着什么?它没有杀死docker进程吗?它杀死了docker容器中运行的Java进程

demsg-T | grep java 2019年2月20日星期三04:09:23][3281]503 3281 654479 38824 145 0爪哇 [Wed Feb 20 04:09:23 2019][11369]0 11369 3253416 1757772 4385 0爪哇 [Wed Feb 20 04:09:24 2019]内存不足:杀死进程11369(java)得分914或牺牲子进程
[Wed Feb 20 04:09:24 2019]终止进程11369(java)总vm:13013664kB,anon rss:7031088kB,文件rss:0kB,shmem rss:0kB

TL;DR您需要增加VM/主机上的内存,或减少应用程序的内存使用

操作系统正在杀死容器中运行的Java,因为主机内存不足。当容器内的进程死亡时,容器本身进入退出状态。您可以使用
docker ps-a
查看这些未运行的容器

默认情况下,docker不限制容器的CPU或内存。您可以在容器上添加这些限制,如果您的容器超过容器内存限制,docker将终止该容器。当您检查停止的容器时,该结果将在OOM状态下可见

您在docker进程上看到ether-500行设置的原因是为了防止操作系统在主机内存不足时杀死docker本身。相反,容器内的进程会被终止,您可以在docker中配置一个重启策略来重启该容器


您可以阅读有关内存限制的更多信息,在以下位置配置容器进程的OOM分数:

Killed
可能意味着您遇到内存不足错误,内核(docker外部)终止了进程。容器“消失”的原因这是因为一个容器运行您在命令中告诉它的任何内容,然后根据定义自杀。请解释您在此处显示的错误是什么(在问题中,您问了为什么它速度慢,并且没有提到错误)@BMitch感谢您的回答。从主机端,我在哪里可以看到具体发生的情况的详细跟踪。@Vinel您可以在/var/log中尝试内核/OS日志。“默认情况下,容器没有资源约束,可以使用主机内核计划程序允许的给定资源。[…]默认情况下,每个容器对主机CPU周期的访问是不受限制的”,正如BMitch和NotSoShabby所说,您应该调查错误。访问日志并查看您能找到什么。您确定默认情况下docker不会限制容器可以使用的内存吗?在docker的MAC GUI上,我可以看到默认情况下其最大2 GB的设置。@Vinel这是docker运行的虚拟机的大小,类似于在AWS中选择虚拟机大小。docker引擎在该VM内部运行,可以使用分配给它的所有资源。在新版本的Docker for Mac上,xhyve+linuxkit用于运行Docker。当我们启用Docker restart时,如果我们有一些正在写入的文件,它们会被保留吗?@Vinel如果容器本身配置为重新启动,那么卷中或容器文件系统本身中的任何文件都会存在。tmpfs中的任何内容都将丢失。如果使用类似于Swarm模式的orchestrator重新启动,则仅保留存储在卷中的数据。
[Tue Feb 19 14:49:04 2019] docker0: port 1(vethc30f313) entered blocking state
[Tue Feb 19 14:49:04 2019] docker0: port 1(vethc30f313) entered forwarding state
[Tue Feb 19 14:49:04 2019] docker0: port 1(vethc30f313) entered disabled state
[Tue Feb 19 14:49:07 2019] docker0: port 1(vethc30f313) entered blocking state
[Tue Feb 19 14:49:07 2019] docker0: port 1(vethc30f313) entered forwarding state
**[Wed Feb 20 04:09:23 2019] [10510]     0 10510   197835    12301     111        0          -500 dockerd
[Wed Feb 20 04:09:23 2019] [11241]     0 11241    84733     5434      53        0             0 docker
[Wed Feb 20 04:09:23 2019] [11297]     0 11297    29279      292      18        0          -500 docker-proxy**
[Wed Feb 20 04:09:30 2019] docker0: port 1(vethc30f313) entered disabled state
[Wed Feb 20 04:09:30 2019] docker0: port 1(vethc30f313) entered disabled state
[Wed Feb 20 04:09:30 2019] docker0: port 1(vethc30f313) entered disabled state