Tag: 内存

与docker和高山使用内存映射文件

我们有一个最近被移植到docker的java应用程序。 此应用程序使用内存映射文件。 我们观察到在进行这种改变时性能下降很大,我们正在努力确切地诊断这种情况发生的原因。 我们之前的设置包括使用CentOS 6.8,Java 8以及存储在与应用程序运行相同的文件系统中的文件。 我们的新设置包括Docker 17.03,CentOS 7.4, openjdk:8u131-alpine ,并将容器挂载到只读的容器,并保存用于内存映射文件的文件。 通过使用iostat我们已经看到docker解决scheme中的tps与非docker解决scheme相比是多次的。 我们不确定是否因为操作系统更频繁地将部分文件加载到内存中。 使用Yourkit和VisualVM我们可以意识到Yourkit解决scheme中存在一些内存问题,经过一段时间后,应用程序内存不足。 这可能是因为一些资源正在其他地方使用,应用程序无法正确处理所有传入的负载。 另外,我们还想了解内存映射文件是使用容器内还是容器外的内存,因为依赖我们会为容器本身保留更多或更less的内存。 此外,任何build议,以更好地了解这个问题的根源是什么,可以被赞赏。

Docker会给RAM多余的里程吗?

根据 | 到 | 无数 | Docker通过跨容器共享系统资源来提供超轻量级的虚拟化,而不是为每个容器分配这些资源的副本。 我甚至读过那些吹嘘自己可以“ 在同一个虚拟机上运行几十个,甚至几百个容器”的文章。 但是,如果我的应用程序需要2GB的RAM运行,而底层的物理机器只有8GB的内存,我通常只能运行我的应用程序的3个实例(留下~2GB的系统内存,实用程序等) 。 Docker是否会用RAM做一些神奇的事情,让我真的可以运行几十个容器,每个容器都分配了2GB的内存,但不知何故在底层共享了未使用的内存? 还是那些声明比其他任何媒体炒作都要多?

docker显示没有SQLite数据库的内存版本

我正在检查SQLite操作消耗的内存量(主要是插入)。 我在Docker容器上运行我的程序,并用docker stats <container id>检查内存使用情况。 我观察到一个奇怪的行为,只有内存使用量增长,操作完成后才能恢复正常。 这里是代码片段: conn = sqlite3.connect(app.config['DATABASE']) cur = conn.cursor() cur.execute('insert into users (uid, full_name, email, username, job_title) values (?,?,?,?,?)', [user_cn, user_full_name, user_email, user_uname, user_jobtitle]) conn.commit() conn.close() 它只是一个代码片段(我把大部分代码截掉了),这个过程发生了几千次(每次插入提交,最后closures一次)。 正如我所说,我只观察到stats上内存使用量的增加,我观察到的另一件事是top不显示任何内存活动(保持0.1%)。 在我的研究中,我试着在linux上运行一些虚拟操作: for i in {1..100000}; do echo "aaaaaaaaaaaaaaaaaaa" >> woot.data; done 我观察到相同的行为,所以我想这不是SQLite的问题,但我仍然包括它,因为它的我的用例,也许它的configuration/连接密切相关的东西。 任何意见解决这个奥秘将不胜感激! 编辑:docker的版本是: Docker version 1.5.0, build a8a31ef/1.5.0

我如何只显示在Docker容器中分配的资源?

只是一个简单的问题,我GOOGLE了一段时间,但没有find答案:我怎样才能显示在Docker容器内使用顶部/ htop等分配资源(CPU核心/内存)? 亲切的问候和愉快的周末:) 〜变形

CoreOS单容器高内存使用率

所以我有一个简单的Go Web应用程序,我部署为一个Docker容器。 我正在使用t2.small AMI在AWS上运行一个t2.small实例。 该容器是非常小的,根据docker stat仅使用大约10MB的内存: CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O 8e230506e99a 0.00% 11.11 MB / 2.101 GB 0.53% 49.01 MB / 16.39 MB 1.622 MB / 0 B 然而CoreOS实例似乎使用了大量的内存: $ free total used free shared buffers cached Mem: 2051772 1686012 365760 25388 253096 1031836 -/+ buffers/cache: […]

如何减less.NET Core docker容器的内存使用量?

我们在托pipeWeb API的Docker / Ubuntu上运行.NET Core 1.1容器。 这些容器基于microsoft/aspnetcore:1.1.2 ,为Ubuntu x64平台发布了二进制文件,并在构build映像时复制到其中,并且非常简单。 目前我们的Web API也非常简单,最多只有less数控制器从SQL Server中提取数据。 他们没有重大的caching或任何不寻常的,但是当运行使用500-900 Mb的RAM每个地方。 这不是由于内存泄漏造成的 – 每个容器的内存使用量随时间变化都是稳定的,在使用过程中上下变化10-15Mb。 这个级别的RAM使用应该是完全没有必要的 – 我怎样才能减less它? 我已经回顾了Docker容器的内存使用问题,但它不同,在这一点上没有答案。

更新docker中现有容器的内存/ CPU限制

我知道我们可以像这样创build一个内存限制的容器 docker run -ti –memory-reservation 1G ubuntu:14.04 /bin/bash 但如何更新现有容器的内存/ CPU的限制?

Docker容器CPU和内存利用率

我有一个在我的Jenkins作业中使用此命令运行的Docker容器: docker run –name="mydoc" reportgeneration:1.0 start=$START end=$END config=$myfile 这工作得很好。 该图像是从一个DockerFile创build的,该DockerFile执行一个带有ENTRYPOINT的shell脚本。 现在我想知道这个容器使用了多lessCPU和内存。 我正在使用Jenkins作业,在“执行shell命令”中,我正在运行上面的Docker运行命令。 我看到了“docker统计”的命令。 它在我的Ubuntu机器上工作得很好。 但我希望它通过Jenkins运行,因为我的容器通过Jenkins控制台运行。 所以这里有我的限制。 我不知道是否有任何方法来停止docker stats命令。 在Ubuntu命令行中,我们点击“ctrl + c”来停止它。 jenkins怎么做? 即使我想出docker stats的方法,一旦“docker运行”命令被执行,容器将不会被激活并退出。 对于退出的容器,CPU和内存使用率将为零。 docker run 'image' docker stats container id/name 有了上面这两行, docker stats命令将只能得到一个退出的容器,我不认为docker stats甚至不能在Jenkins控制台上工作,因为它不能被停止。 有什么方法可以通过Jenkins控制台以更好的方式获得容器的资源利用率(CPU,内存)?

Docker容器,内存消耗和日志

我一直在尝试Docker几天。 我使用的是基本上包含MySQL(MariaDB),PHP(php-fpm)和NGINX的Drupal镜像(docker4drupal)。 几乎每次我把数据库导入到数据库容器,在一个512MB RAM的VPS上,MariaDB的容器就会死掉,而像“MySQL服务器已经消失”这样的消息出现了……当我的VPS有1GB或2GB内存。 所以,这似乎是一个记忆问题,但我需要证据! 我不知道日志在哪里告诉我,我的容器因为内存不足而死亡。 我检查MariaDB日志,但我找不到任何东西…它只是说日志,像“数据库不正常关机”,并且“开始”,然后“wating连接”… 所以,独立于我的MariaDBconfiguration(这是不适合的512MB VPS)…我在哪里可以明确地find为什么容器与数据库服务器死亡的原因? 任何帮助是受欢迎的。 非常感谢。 PD:我从PHP容器执行mysql cli,这就是为什么尽pipe数据库容器死亡,我仍然可以看到输出发生了错误。

没有find与DCHQ上节点所需最小内存匹配的服务器

我试图在DCHQ平台上运行应用程序,这些是我在azure色云上的虚拟机configuration CPU 2内存3GB磁盘162GB 这是YAML AppServer: image: websphere-liberty:webProfile6 publish_all: true mem_min: 20000m host: host1 cluster_size: 1 environment: – database_driverClassName=com.mysql.jdbc.Driver – database_url=jdbc:mysql://{{MySQL|container_ip}}:3306/{{MySQL|MYSQL_DATABASE}} – database_username={{MySQL|MYSQL_USER}} – database_password={{MySQL|MYSQL_ROOT_PASSWORD}} – LICENSE=accept MySQL: image: mysql:latest host: host1 mem_min: 9000m environment: – MYSQL_USER=root – MYSQL_DATABASE=names – MYSQL_ROOT_PASSWORD={{alphanumeric|8}} 我看到这个错误: 没有find匹配的服务器和节点所需的最小内存[AppServer] 内存在3GB以下,我可能会做错什么?