当前位置: 首页 > news >正文

肇庆网站建设方案wordpress加描述

肇庆网站建设方案,wordpress加描述,网站制作公司加盟,p2p网站功能模块文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参… 文章目录 一、什么是资源限制1、Docker的资源限制2、内核支持Linux功能3、OOM异常4、调整/设置进程OOM评分和优先级4.1、/proc/PID/oom_score_adj4.2、/proc/PID/oom_adj4.3、/proc/PID/oom_score 二、容器的内存限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参数 3、案例3.1、拉取容器压测工具镜像3.2、文档的Example选项说明3.3、测试内存使用限制3.4、验证3.5、内存软限制3.6、交换分区限制 4、扩大内存限制 三、容器的CPU限制1、实现原理2、命令格式及指令参数2.1、命令格式2.2、指令参数 3、案例3.1、启动一个进程占用8核CPU3.2、限制容器CPU3.3、将容器运行到指定的cpu上3.4、基于cpu-shares对cpu进行切分 四、容器的块I/O带宽限制1、实现原理2、指令格式及指令参数2.1、指令格式2.2、指令参数 3、案例3.1、创建两个不同块I/O带宽权重的容器3.2、限制读取速率3.3、限制写入速率3.4、限制读取IOPS每秒I/O操作次数3.5、限制写入IOPS 一、什么是资源限制 1、Docker的资源限制 默认情况下容器是没有资源限制的它会尽可能地使用宿主机能够分配给它的资源。Docker提供了一种控制分配多少量的内存、CPU或阻塞I/O给一个容器的方式即通过在docker run或docker create命令时设置运行时配置的标志。 2、内核支持Linux功能 docker info其中许多功能都要求您的内核支持Linux功能可以通过docker info命令来检查是否支持如果内核中禁用了某项功能那你可能会在下边收到一条Warning。 3、OOM异常 对于Linux主机如果没有足够的内容来执行其他重要的系统任务将会抛出OOM异常内存溢出、内存泄漏、内存异常随后系统会开始杀死进程以释放内存凡是运行在宿主机的进程都有可能被kill包括docker daemon和其他重要的应用程序。如果重要的系统进程被kill会导致和该进程相关的服务全部宕机。 产生OOM异常时Docker尝试通过调整docker守护程序上的OOM优先级来减轻这些风险以便它比系统上的其他进程更不可能被杀死但是容器的OOM优先级未调整时单个容器被杀死的可能性更大不推荐调整容器的优先级这种方式。 4、调整/设置进程OOM评分和优先级 Linux会每个进程算一个分数最终他会将分数最高的进程kill掉 4.1、/proc/PID/oom_score_adj 这个文件控制着一个进程在发生内存不足OOM时被内核选中杀死的倾向性。 值的范围是-1000到1000。默认情况下大多数进程的值为0。正值增加进程被选中杀掉的可能性负值则减少这种可能性。 如果设置为-1000则表示进程永远不会被宿主机kernel kill即便在极端的内存压力下也是如此。这个值允许用户或系统管理员根据进程的重要性来调整其在内存压力下的生存优先级。 4.2、/proc/PID/oom_adj 这个文件在较老的Linux内核版本中用于类似的目的控制进程在OOM时被杀死的优先级。 它的取值范围是-17到15作用和oom_score_adj相似该设置参数的存在是为了和旧版本的Linux内核兼容。值越低进程越不容易被杀死。 -17表示进程不会被killer终止。 4.3、/proc/PID/oom_score 这个文件显示了一个经过计算的分数反映了在内存不足情况下内核选择终止该进程的倾向性。 这个分数是基于多个因素动态计算出来的包括oom_score_adj或oom_adj的值、进程当前的内存使用量、进程的CPU使用时间user time system time、进程的存活时间uptime - start time等因素。 系统在决定哪个进程应该被OOM killer终结时会参考这个分数分数越高表示该进程在内存压力下被选中杀死的概率越大。通过观察这个值管理员可以了解内核是如何评估各个进程的内存压力状况的。 二、容器的内存限制 容器可以使用的内存为物理内存和交换空间Swap 1、实现原理 Docker实际上是使用Linux Cgroups中的Memory Subsystem来实现的对内存资源的限制。 对于每个容器创建后**Docker都会在Linux Cgroups的Memory Subsystem中建立一个Control Group并将容器中的所有进程都加入到这个cgroup中。**之后Docker就可以通过对该cgroup的Memory Subsystem相关参数进行调整来实现对容器进行内存资源的限制了。 对于内存限制Docker通过memory.limit_in_bytes属性来设置容器可用的最大内存容量一旦容器达到这个限制根据设置的不同可能被终止或受到其他类型的约束。 2、命令格式及指令参数 2.1、命令格式 dcoker run [options] #运行容器时设置 docker update [options] #容器运行后修改2.2、指令参数 参数描述-m 或 -memory容器可以使用的最大内存量。单位可以是b, k, m, g。允许的最小值为4m4MB。–memory-swap容器可以使用的交换分区和物理内存大小总和必须要在设置了物理内存限制的前提才能设置交换分区的限制。如果该参数设置未-1则容器可以使用主机上swap的最大空间–memory-swappiness设置容器使用交换分区的倾向性值越高表示越倾向于使用swap分区范围为0-1000为能不用就不用100为能用就用。–kernel-memory容器可以使用的最大内核内存量最小为4m由于内核内存与用户空间内存隔离因此无法与用户空间内存直接交换因此内核内存不足的容器可能会阻塞宿主机主机资源这会对主机和其他容器或者其他服务进程产生影响因此不要设置内核内存大小–memory-reservation允许指定小于–memory的软限制当Docker检测到主机上的争用或内存不足时会激活该限制如果使用–memory-reservation则必须将其设置为低于–memory才能使其优先。因为它是软限制所以不能保证容器不超过限制。–oom-kill-disable默认情况下发生OOM时kernel会杀死容器内进程但是可以使用该参数可以禁止oom发生在指定的容器上仅在已设置-m选项的容器上禁用oom如果-m参数未配置产生oom时主机为了释放内存还会杀死进程 3、案例 如果一个容器未作内存使用限制则该容器可以利用到系统内存最大空间默认创建的容器没有做内存资源限制 3.1、拉取容器压测工具镜像 docker pull lorel/docker-stress-ngdocker run -it --rm lorel/docker-stress-ng -help #查看docker-stress-ng的用法3.2、文档的Example选项说明 stress-ng --cpu 8 --io 4 --vm 2 --vm-bytes 128M --fork 4 --timeout 10s-c N, --cpu N 启动 N 个子进程 cpu --vm N 启动 N 个进程对内存进行压测--vm-bytes 128M 每个子进程使用多少内存默认 256M 3.3、测试内存使用限制 docker run --name stress -it --rm -m 256m lorel/docker-stress-ng:latest stress --vm 2 #限制内存最多使用256M限制内存使用最多256M 开启压测启动两个进程每个进程使用256M 3.4、验证 docker stats stress可以看到无论启动多少个使用256M的进程做压测这里启动了2个进程按理会使用512MB内存stress容器的最大内存使用量始终维持在256MB。 3.5、内存软限制 内存软限制不会真正限制到内存的使用 docker run -it --rm -m 256m --memory-reservation 128m --name test1 lorel/docker-stress-ng --vm 2 --vm-bytes 256m docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 0ffb4b8fdbde test1 174.52% 255.9MiB / 256MiB 99.95% 648B / 0B 5.33GB / 18.1GB 5-m 256m这是内存的硬限制hard limit容器使用的内存不能超过这个值。--memory-reservation 128m这是内存的软限制soft limit尝试保证至少有这么多内存可用给容器但实际上容器可以使用超过这个值直到达到硬限制前提是系统中有足够的空闲内存。 3.6、交换分区限制 docker run -it --rm -m 256m --memory-swap 512m --name test1 lorel/docker-stress-ng --vm 2 --vm-bytes 256m容器可以使用的交换分区和物理内存大小总和 必须要在设置了物理内存限制的前提才能设置交换分区的限制。 4、扩大内存限制 cat /sys/fs/cgroup/memory/memory.limit_in_bytes 9223372036854771712 #通过修改cgroup文件扩大内存限制缩小会报错三、容器的CPU限制 1、实现原理 Docker实际上是使用Linux Cgroups中的CPU Subsystem来实现的对CPU资源的限制。 Docker 会为每个容器在CPU Subsystem中建立一个Control Group,并且将该容器中的所有进程都加入到该cgroup中。之后Docker就可以通过对该cgroup的CPU Subsystem相关参数进行调整来实现对容器进行 CPU 资源的限制了。限制命令中的–cpu-shares参数实际上就是在配置CPU Subsystem中某个容器所对应的Control Group中参数cpu.shares的值。 2、命令格式及指令参数 2.1、命令格式 dcoker run [options] #运行容器时设置 docker update [options] #容器运行后修改2.2、指令参数 参数描述–cpus指定容器可以使用的CPU资源比例。例如在双核CPU主机上设置--cpus1.5容器理论上可使用相当于1.5个CPU的资源。若为4核可跨核心分配总使用量不超过1.5核心。–cpu-period设置CPU调度周期单位微秒通常与--cpu-quota搭配使用以限制容器在每个周期内的CPU使用量。–cpu-quota在给定的--cpu-period内设置容器可以使用的CPU时间单位微秒。与--cpu-period配合实现CPU使用量的绝对控制。–cpuset-cpus允许指定容器可运行在哪些CPU核心上实现CPU绑定“绑核”提高CPU访问效率或满足特定隔离需求。–cpuset-mems仅对具有非统一内存访问NUMA架构的系统有效用于指定容器可使用的内存节点优化内存访问速度。–cpu-shares设置容器的CPU份额权重与其他容器共享CPU资源时权重高的容器将获得更多的CPU时间。默认值为1024最大值为262144。 3、案例 3.1、启动一个进程占用8核CPU docker run -it --rm --name test1 lorel/docker-stress-ng --vm 1 --cpu 8 docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 7eb5882b9379 test1 812.96% 1.387GiB / 1.781GiB 77.88% 648B / 0B 4.02GB / 412MB 253.2、限制容器CPU docker run -it --rm --cpus 4 --name test1 lorel/docker-stress-ng --vm 1 --cpu 8 docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 0a1c3805e5c9 test1 398.99% 1.414GiB / 1.781GiB 79.40% 648B / 0B 1.14GB / 127MB 25toptop - 21:19:53 up 2:33, 2 users, load average: 12.50, 9.48, 4.62 Tasks: 175 total, 17 running, 158 sleeping, 0 stopped, 0 zombie %Cpu0 : 52.1 us, 0.3 sy, 0.0 ni, 45.5 id, 1.7 wa, 0.0 hi, 0.3 si, 0.0 st %Cpu1 : 49.8 us, 1.4 sy, 0.0 ni, 15.2 id, 32.5 wa, 0.0 hi, 1.0 si, 0.0 st %Cpu2 : 48.6 us, 1.7 sy, 0.0 ni, 6.2 id, 41.4 wa, 0.0 hi, 2.1 si, 0.0 st %Cpu3 : 49.1 us, 2.1 sy, 0.0 ni, 8.0 id, 39.4 wa, 0.0 hi, 1.4 si, 0.0 st %Cpu4 : 51.6 us, 0.7 sy, 0.0 ni, 46.0 id, 1.4 wa, 0.0 hi, 0.3 si, 0.0 st %Cpu5 : 48.4 us, 2.4 sy, 0.0 ni, 1.4 id, 46.3 wa, 0.0 hi, 1.4 si, 0.0 st %Cpu6 : 50.2 us, 1.0 sy, 0.0 ni, 23.9 id, 24.2 wa, 0.0 hi, 0.7 si, 0.0 st %Cpu7 : 45.3 us, 5.9 sy, 0.0 ni, 21.1 id, 26.6 wa, 0.0 hi, 1.0 si, 0.0 st3.3、将容器运行到指定的cpu上 docker run -it --rm --cpus 2 --cpuset-cpus 1,3 --name test1 lorel/docker-stress-ng --vm 1 --cpu 8 docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS ee11d834dde5 test1 186.68% 1.488GiB / 1.781GiB 83.60% 648B / 0B 44.8GB / 95.7MB 25toptop - 21:27:31 up 2:41, 2 users, load average: 14.97, 9.00, 5.77 Tasks: 176 total, 19 running, 157 sleeping, 0 stopped, 0 zombie %Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st %Cpu1 : 87.5 us, 10.9 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st %Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 32.9 us, 46.1 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 21.1 si, 0.0 st %Cpu4 : 0.0 us, 17.3 sy, 0.0 ni, 82.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 : 0.0 us, 12.7 sy, 0.0 ni, 79.2 id, 0.0 wa, 0.0 hi, 8.2 si, 0.0 st %Cpu6 : 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st %Cpu7 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st3.4、基于cpu-shares对cpu进行切分 docker run -it --rm -d --cpu-shares 1000 --name test1 lorel/docker-stress-ng --vm 1 --cpu 4 docker run -it --rm -d --cpu-shares 500 --name test2 lorel/docker-stress-ng --vm 1 --cpu 4 docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS d6dd34edb722 test1 543.41% 819.6MiB / 1.781GiB 44.95% 648B / 0B 102MB / 154MB 13 154b07a94e2f test2 241.15% 711.1MiB / 1.781GiB 39.00% 648B / 0B 406MB / 145MB四、容器的块I/O带宽限制 块I/O带宽(Block I/O BandwidthBlkio)用于管理容器在读写磁盘时的吞吐量Docker可通过设置权重、限制每秒字节数(B/s)和每秒I/O次数(IO/s)的方式控制容器读写盘的带宽。确保各容器之间以及与宿主机的资源使用保持合理平衡 1、实现原理 Docker利用cgroups的blkio子系统通过修改特定cgroup目录下的控制文件来实施这些限制。这些文件通常位于/sys/fs/cgroup/blkio/目录下具体路径会包含容器的唯一cgroup路径如/sys/fs/cgroup/blkio/docker/container-id/...。 权重分配通过修改blkio.weight文件。值范围为10到1000值越大优先级越高。每秒字节数限制: 读限制blkio.throttle.read_bps_device格式为major:minor bytes_per_second。写限制blkio.throttle.write_bps_device格式相同。 每秒I/O操作限制 读IOPS限制blkio.throttle.read_iops_device格式同上。写IOPS限制blkio.throttle.write_iops_device格式相同。 2、指令格式及指令参数 2.1、指令格式 dcoker run [options] #运行容器时设置 docker update [options] #容器运行后修改2.2、指令参数 指令参数描述–blkio-weight设置容器块I/O带宽权重影响容器相对于其他容器的I/O调度优先级。默认值为500。–device-read-bps限制容器对指定设备的读取速率单位可以是kbps, mbps, gbps等。–device-write-bps限制容器对指定设备的写入速率用法同上。–device-read-iops限制容器对指定设备的每秒读取I/O次数。–device-write-iops限制容器对指定设备的每秒写入I/O次数。 3、案例 3.1、创建两个不同块I/O带宽权重的容器 docker run -itd --name io1 --blkio-weight 200 centos:7 docker run -itd --name io2 --blkio-weight 600 centos:73.2、限制读取速率 docker run -it --device-read-bps /dev/sda:1mb centos:7限制对/dev/sda设备的读取速率为每秒1MB 3.3、限制写入速率 docker run -it --device-write-bps /dev/sda:2mb centos:7限制对/dev/sda设备的写入速率为每秒2MB 3.4、限制读取IOPS每秒I/O操作次数 docker run -it --device-read-iops /dev/sda:1000 centos:7限制对/dev/sda设备的读取每秒不能超过1000次读I/O操作 3.5、限制写入IOPS docker run -it --device-write-iops /dev/sda:500 centos:7限制对/dev/sda设备的读取每秒不能超过500次写I/O操作
http://www.w-s-a.com/news/674517/

相关文章:

  • 制作移动网站公司网站开发职业规划
  • 网站头部怎样做有气势wordpress 页面 锚
  • 秦皇岛网站建设系统推荐个人网站免费制作
  • 我做夫人那些年网站登录wordpress 扫码付费
  • 网站关键词代码怎么做公司 网站建设
  • 哈尔滨多语言网站建设wordpress分类链接
  • 购物网站项目介绍软件开发流程的五大步骤
  • 做的网站怎么放在网上2008 iis搭建网站
  • 网站维护服务公司上海兼职网站制作
  • 企业做网站需要多少钱湘潭九华网站
  • 嘉兴建站服务微营销官网
  • 比较好的网页模板网站浦项建设(中国)有限公司网站
  • 有趣的个人网站网页设计与制作的岗位职责
  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司
  • 做像美团淘宝平台网站多少钱开发网站企业
  • 网站建设前期费用二手购物网站策划书
  • dede学校网站百度联盟是什么
  • 献县网站建设网站开发专业定制
  • 龙华做网站yihe kj安徽六安彩礼一般给多少
  • flash网站建设公司我的小程序在哪里找
  • 建网站需要数据库吗如何制作简单的网页链接
  • 杭州设计企业网站高端公司上虞做网站公司
  • 做网站能赚钱么用wordpress搭建知名网站
  • 阿里云服务器网站开发青岛做网站找哪家