Tag: 内存

如何在Java中find非堆空间内存泄漏?

我们有一个使用eclipse-jetty版本8.1.6的java webserver。 最近我们开始注意到内存不足的错误。 我们对活动的线程数目没有分析。 这在100左右似乎是合理的。该进程有5GB的最大堆内存和4GB的初始堆内存。 Process Details Environment: Docker(kubernetes) java.version="1.8.0_91" java.vm.info="mixed mode" java.vm.name="Java HotSpot(TM) 64-Bit Server VM" thread size = 1024K ulimit is unlimited for max process per user. Container(Pod) Max memory is allocated to be 8GB networking服务器平均每分钟接收350个请求。 我们还在ELB(kubernetes服务)之后运行了许多这样的实例。 运行几个小时后,我们注意到这个OOM。 这个问题是随机的,它发生在压力testing。 OOM StackTrace: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) [na:1.8.0_91] at […]

linux mke2fs失败:在我的docker镜像中没有名为/ dev / ram0的设备

在完整的centos vm中,在/ dev方向下有很多dev描述符,所以我可以使用下面的命令mke2fs其中之一: # create a mount point: mkdir /tmp/ramdisk0 # create a filesystem: mke2fs /dev/ram0 # mount the ramdisk: mount /dev/ram0 /tmp/ramdisk0 从http://www.linuxfocus.org/English/November1999/article124.html 。 很好,但是在一个centos docker镜像里面,我发现在/ dev下面没有这样的ramX设备。 所以: 如果/ dev / ram0已经是某种内存文件系统,为什么需要使用mke2fs命令使其成为文件系统映射? 如何做到这一点在docker内装载?

应用程序在不同的系统上占用不同的内存量

我有两个不同的Xeon处理器和不同数量的RAM。 两个都在Ubuntu 16上运行,并具有相同的docker版本。 我的应用程序被docker化。 我在两个系统上运行了相同的Docker镜像,两个系统的内存消耗量分别为610 MB和814 MB。 我试图找出为什么会出现这种差异。 有一个更快的CPU减less内存的使用? 如果是的话,为什么它需要更less的内存?

docker伪文件不显示交换内存信息

我想知道我的容器是否使用交换内存,以及多less。 但是伪文件没有这个信息。 这是memory.stat文件: cache 688128 rss 520192 rss_huge 0 mapped_file 0 dirty 0 writeback 0 pgpgin 2572 pgpgout 2277 pgfault 2513 pgmajfault 0 inactive_anon 548864 active_anon 12288 inactive_file 630784 active_file 16384 unevictable 0 hierarchical_memory_limit 9223372036854771712 total_cache 688128 total_rss 520192 total_rss_huge 0 total_mapped_file 0 total_dirty 0 total_writeback 0 total_pgpgin 2572 total_pgpgout 2277 total_pgfault 2513 total_pgmajfault 0 […]

内存不足Predictionio

我使用Docker使用predictionio,并按照从这里的 README中给出的说明 仪表板启动并运行后,我运行“./run.sh”命令。 但是,在创build应用程序并生成密钥后,会发生内存不足错误。 Java HotSpot(TM)64位服务器VM警告:INFO:os :: commit_memory(0x0000000715550000,2863333376,0)失败; 错误='不能分配内存'(错误= 12) Java运行时环境没有足够的内存来继续。 本地内存分配(mmap)无法映射2863333376字节以提交保留的内存。

Docker:缩放Python容器,内存开销

据htop介绍,我有一个使用大约120M VIRT,16K RES和12K SHR内存的Alpine Linux容器。 现在我想知道,如果我想要运行该容器的多个实例,每个容器将抓住~120M的内存? 假设我在GCP的0.6 GB RAM f1-micro上托pipe了这个function,根据OS + Docker的消耗情况,我只能运行它的4个实例,甚至更less。 如果是这样,我会通过在每个Docker容器中运行多个python脚本实例来获得任何好处,希望Python和库(例如Twisted)在容器内重新共享?

如何在Docker中使用Liblas在Python中没有错误?

我正在尝试使用liblas来处理docker中的python中的一些激光雷达数据,但是我一直收到一个错误。 我试图运行的代码是从liblas python教程复制粘贴,并应该简单地创build一个las文件并写一个指向它: from liblas import file from liblas import header from liblas import point h = header.Header() # Support storing time values h.dataformat_id = 1 # Store a 1.1 version file h.minor_version = 1 f = file.File('test/junk.las', mode="w", header=h) pt = point.Point() f.write(pt) f.close() print 'The very very end' 当我尝试运行代码时,它似乎到了最后(它打印出'非常非常结束',但是然后它写入错误信息: *** Error in `python': […]

如何找出docker运行最多消耗的RAM数量?

我已经创build了一个新的docker服务,并确定其所需的资源。 由于将RAM应用于新的服务是贪婪的 – 说容器可以有8GB的内存就可以得到它们 – 我不想浪费集群的资源。 现在我正在试图找出docker运行高峰的RAM数量。 例如,我创build了一个httpie-image(对于正确的偏执, Dockerfile也在dockerhub上 ,我通过执行: docker run -it k0pernikus/httpie-docker-alpine HEAD https://stackoverflow.com/ 我知道有一个docker stats命令,但它似乎显示当前的内存使用情况,我真的不想监视。 如果我在容器结束后运行它,它将显示0 。 (要获取容器ID,我使用d标志。) $ docker run -itd k0pernikus/httpie-docker-alpine HEAD https://stackoverflow.com/ 132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c $ docker stats 132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c 它会显示: CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 132a93ffc9e297250b8ca37b2563aa2b5e423e146890fe3383a91a7f26ef990c 0.00% 0 B / 0 B […]

由于内存中断,Tomcat被Docker容器杀死

我最近正在用tomcat开发一个rest服务。 我设置了JAVA_OPTS = -Xmx1648m -Xmn1648 -server并确保它们已经生效。 docker正在运行,内存限制设置为4g。 我们的观察是,tomcat进程的内存使用量不断增长,最终达到4g。 然后,内存成本在几分钟到几小时之间随机地保持在99%〜100%之间。 然后,tomcat进程崩溃没有任何错误,如jvm堆oom。 我使用jmap来转储堆时,由docker统计观察的内存消耗大约3.5克。 转储文件大小在400m以下。 使用mat来分析转储文件显示大部分内存部分实际上可能被垃圾收集。 我也手动运行jcmd pid GC.run,这大大减less了内存使用(从2g到1.4g)。 我的检查是,tomcat从来没有达到jvm设置的限制,否则,应该有关于jvm堆oom的错误日志。 然后,内存应该被jvm或tomcat中的其他线程使用。 但是我找不到解决这个问题的办法。 请帮忙!

docker工人如何分配与CPU相关的内存

我想在给定的物理主机上运行N个docker容器。 我想限制每个容器的总资源(RAM和CPU)的一个子集。 在这样做的时候,我想把机器架构考虑进去。 我有128场演唱会。 64个演出与cpu的一半密切相关,另外64个演出与cpu的另一半紧密相关。 我的问题是,我如何指定哪个确切的cpu和哪些确切的内存段给docker集装箱。 如果cpu和RAM之间的通信具有最低的延迟,我将获得最佳性能。 我已经看过文档,我没有看到答案。 我错过了吗? 有没有其他的文件,或者可能是docker的插件,这将使这成为可能? https://docs.docker.com/engine/admin/resource_constraints/#limit-a-containers-access-to-memory