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

网站建设销售如何接单易捷网

网站建设销售如何接单,易捷网,劳力士官方二手表网站,dw网页制作源代码一、背景 linux 中为了防止进程恶意使用资源#xff0c;系统使用 ulimit 来限制进程的资源使用情况#xff08;包括文件描述符#xff0c;线程数#xff0c;内存大小等#xff09;。同样地在容器化场景中#xff0c;需要限制其系统资源的使用量。ulimit: docker 默认支持…一、背景 linux 中为了防止进程恶意使用资源系统使用 ulimit 来限制进程的资源使用情况包括文件描述符线程数内存大小等。同样地在容器化场景中需要限制其系统资源的使用量。ulimit: docker 默认支持 ulimit 设置可以在 dockerd 中配置 default-ulimits 可为宿主机所有容器配置默认的 ulimitdocker 启动时可添加 –ulimit 为每个容器配置 ulimit 会覆盖默认的设置目前 k8s 暂不支持 ulimit。cgroup: docker 默认支持 cgroup 中内存、cpu、pid 等的限制对于线程限制可通过 –pids-limit 可限制每个容器的 pid 总数dockerd 暂无默认的 pid limit 设置k8s 限制线程数可通过在 kubelet 中开启 SupportPodPidsLimit 特性设置 pod 级别 pid limit。/etc/securiy/limits.conf,systcl.confg通过 ulimit 命令设置只对当前登录用户有效永久设置可通过 limits.conf 配置文件实现以及系统级别限制可通过 systcl.confg 配置文件。 二、实验对比 ① 环境 本地环境os: Ubuntu 16.04.6 LTS 4.4.0-154-generic docker: 18.09.7 base-image: alpine:v3.9k8s 环境kubelet: v1.10.11.1 docker: 18.09.6 ② ulimit 用户级别资源限制分为 soft 限制与 hard 限制 soft 用户可修改但不能超过硬限制 hard只有 root 用户可修改 修改方式ulimit 命令临时修改/etc/security/limits.conf永久修改工作原理根据 PAM Pluggable Authentication Modules 简称 PAM机制应用程序启动时按 /etc/pam.d 配置加载 pam_xxxx.so 模块。/etc/pam.d 下包含了 login 、sshd 、su 、sudo 等程序的 PAM 配置文件 因此用户重新登录时将调用 pam_limits.so 加载 limits.conf 配置文件。 三、文件描述符限制 RLIMIT_NOFILEThis specifies a value one greater than the maximum filedescriptor number that can be opened by this process.Attempts (open(2), pipe(2), dup(2), etc.) to exceed thislimit yield the error EMFILE. (Historically, this limit wasnamed RLIMIT_OFILE on BSD.)Since Linux 4.5, this limit also defines the maximum number offile descriptors that an unprivileged process (one without theCAP_SYS_RESOURCE capability) may have in flight to otherprocesses, by being passed across UNIX domain sockets. Thislimit applies to the sendmsg(2) system call. For furtherdetails, see unix(7).根据定义nofile 限制进程所能最多打开的文件数量作用范围进程 设置 ulimit nofile 限制 soft 100/hard 200默认启动为 root 用户 $ docker run -d --ulimit nofile100:200 cr.d.xiaomi.net/containercloud/alpine:webtool top进入容器查看 fd soft 限制为 100 个 / # ulimit -a -f: file size (blocks) unlimited -t: cpu time (seconds) unlimited -d: data seg size (kb) unlimited -s: stack size (kb) 8192 -c: core file size (blocks) unlimited -m: resident set size (kb) unlimited -l: locked memory (kb) 64 -p: processes unlimited -n: file descriptors 100 -v: address space (kb) unlimited -w: locks unlimited -e: scheduling priority 0 -r: real-time priority 0使用 ab 测试并发 90 个 http 请求创建 90 个 socket正常运行 / # ab -n 1000000 -c 90 http://61.135.169.125:80/ / # lsof | wc -l 108 / # lsof | grep -c ab 94并发 100 个 http 请求受到 ulimit 限制 / # ab -n 1000000 -c 100 http://61.135.169.125:80/ This is ApacheBench, Version 2.3 $Revision: 1843412 $ Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 61.135.169.125 (be patient) socket: No file descriptors available (24)四、线程限制 RLIMIT_NPROCThis is a limit on the number of extant process (or, more pre‐cisely on Linux, threads) for the real user ID of the callingprocess. So long as the current number of processes belongingto this processs real user ID is greater than or equal tothis limit, fork(2) fails with the error EAGAIN.The RLIMIT_NPROC limit is not enforced for processes that haveeither the CAP_SYS_ADMIN or the CAP_SYS_RESOURCE capability.由定义可知nproc 进程限制的范围是对于每个 uid并且对于 root 用户无效。 五、容器 uid 同一主机上运行的所有容器共享同一个内核主机的内核docker 通过 namspace 对 pid/utc/network 等进行了隔离虽然 docker 中已经实现了 user namespace但由于各种原因默认没有开启见 docker user namespace $ docker run -d cr.d.xiaomi.net/containercloud/alpine:webtool top宿主机中查看 top 进程显示 root 用户 $ ps -ef |grep top root 4096 4080 0 15:01 ? 00:00:01 top容器中查看 iduid 为 0 对应宿主机的 root 用户虽然同为 root 用户但 Linux Capabilities 不同实际权限与宿主机 root 要少很多。在容器中切换用户到 operatoruid 为 11执行 sleep 命令主机中查看对应进程用户为 app对应 uid 同样为 11 / # id uid0(root) gid0(root) groups0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video) / # su operator / $ id uid11(operator) gid0(root) groups0(root) / $ sleep 100 $ ps -ef |grep sleep 100 app 19302 19297 0 16:39 pts/0 00:00:00 sleep 100 $ cat /etc/passwd | grep app app❌11:0::/home/app:六、验证不同用户下 ulimit 的限制 设置 ulimit nproc 限制 soft 10/hard 20默认启动为 root 用户 $ docker run -d --ulimit nproc10:20 cr.d.xiaomi.net/containercloud/alpine:webtool top进入容器查看 fd soft 限制为 100 个 / # ulimit -a -f: file size (blocks) unlimited -t: cpu time (seconds) unlimited -d: data seg size (kb) unlimited -s: stack size (kb) 8192 -c: core file size (blocks) unlimited -m: resident set size (kb) unlimited -l: locked memory (kb) 64 -p: processes 10 -n: file descriptors 1048576 -v: address space (kb) unlimited -w: locks unlimited -e: scheduling priority 0 -r: real-time priority 0启动 30 个进程 / # for i in seq 30;do sleep 100 ; done / # ps | wc -l 36切换到 operator 用户 / # su operator# 启动多个进程到第11个进程无法进行fork / $ for i in seq 8; dosleep 100 done / $ sleep 100 / $ sleep 100 sh: cant fork: Resource temporarily unavailableroot 下查看 / # ps -ef | grep operator79 operator 0:00 sh99 operator 0:00 sleep 100100 operator 0:00 sleep 100101 operator 0:00 sleep 100102 operator 0:00 sleep 100103 operator 0:00 sleep 100104 operator 0:00 sleep 100105 operator 0:00 sleep 100106 operator 0:00 sleep 100107 operator 0:00 sleep 100109 root 0:00 grep operator / # ps -ef | grep operator| wc -l 10七、验证 ulimit 在不同容器相同 uid 下的限制 设置 ulimit nproc 限制 soft 3/hard 3默认启动为 operator 用户起 4 个容器第四个启动失败 $ docker run -d --ulimit nproc3:3 --name nproc1 -u operator cr.d.xiaomi.net/containercloud/alpine:webtool top eeb1551bf757ad4f112c61cc48d7cbe959185f65109e4b44f28085f246043e65 $ docker run -d --ulimit nproc3:3 --name nproc2 -u operator cr.d.xiaomi.net/containercloud/alpine:webtool top 42ff29844565a9cb3af2c8dd560308b1f31306041d3dbd929011d65f1848a262 $ docker run -d --ulimit nproc3:3 --name nproc3 -u operator cr.d.xiaomi.net/containercloud/alpine:webtool top b7c9b469e73f969d922841dd77265467959eda28ed06301af8bf83bcf18e8c23 $ docker run -d --ulimit nproc3:3 --name nproc4 -u operator cr.d.xiaomi.net/containercloud/alpine:webtool top b49d8bb58757c88f69903059af2ee7e2a6cc2fa5774bc531941194c52edfd763 $ $ docker ps -a |grep nproc b49d8bb58757 cr.d.xiaomi.net/containercloud/alpine:webtool top 16 seconds ago Exited (1) 15 seconds ago nproc4 b7c9b469e73f cr.d.xiaomi.net/containercloud/alpine:webtool top 23 seconds ago Up 22 seconds nproc3 42ff29844565 cr.d.xiaomi.net/containercloud/alpine:webtool top 31 seconds ago Up 29 seconds nproc2 eeb1551bf757 cr.d.xiaomi.net/containercloud/alpine:webtool top 38 seconds ago Up 36 seconds nproc1八、总结 ① ulimit ulimit 限制 fd 总数限制级别进程可对所有用户生效ulimit 限制线程总数限制级别用户uid)限制同一个 uid 下所有线程/进程数对于 root 账号无效对于目前线上情况有较小的概率因 ulimit 限制导致 fork 失败如同一个宿主机中有多个 work 容器且基础镜像相同即 uid 相同若一个容器线程泄露由于 ulimit 限制会影响其他容器正常运行。 ② cgroup cgroup 中对 pid 进行了隔离通过更改 docker/kubelet 配置可以限制 pid 总数从而达到限制线程总数的目的。线程数限制与系统中多处配置有关取最小值参考 stackoverflow 上线程数的设置 docker容器启动时设置 –pids-limit 参数限制容器级别 pid 总数 kubelet开启 SupportPodPidsLimit 特性设置 –pod-max-pids 参数限制 node 每个 pod 的 pid 总数以 kubelet 为例开启 SupportPodPidsLimit–feature-gatesSupportPodPidsLimittrue 配置 kubelet每个 pod 允许最大 pid 数目为 150 [rootnode01 ~]# ps -ef |grep kubelet root 18735 1 14 11:19 ? 00:53:28 ./kubelet --v1 --address0.0.0.0 --feature-gatesSupportPodPidsLimittrue --pod-max-pids150 --allow-privilegedtrue --pod-infra-container-imagecr.d.xiaomi.net/kubernetes/pause-amd64:3.1 --root-dir/home/kubelet --node-status-update-frequency5s --kubeconfig/home/xbox/kubelet/conf/kubelet-kubeconfig --fail-swap-onfalse --max-pods254 --runtime-cgroups/systemd/system.slice/frigga.service --kubelet-cgroups/systemd/system.slice/frigga.service --make-iptables-util-chainsfalse在 pod 中起测试线程root 下起 100 个线程 / # for i in seq 100; dosleep 1000 done / # ps | wc -l 106operator 下创建线程受到限制系统最多只能创建 150 个 / # su operator / $ / $ for i in seq 100; dosleep 1000 done sh: cant fork: Resource temporarily unavailable / $ ps | wc -l 150在 cgroup 中查看pids 达到最大限制 [rootnode01 ~]# cat /sys/fs/cgroup/pids/kubepods/besteffort/pod8b61d4de-a7ad-11e9-b5b9-246e96ad0900/pids.current 150 [rootnode01 ~]# cat /sys/fs/cgroup/pids/kubepods/besteffort/pod8b61d4de-a7ad-11e9-b5b9-246e96ad0900/pids.max 150总结 cgroup 对于 pid 的限制能够达到限制线程数目的目前 docker 只支持对每个容器的限制不支持全局配置kubelet 只支持对于 node 所有 pod 的全局配置不支持具体每个 pod 的配置。 ③ limits.conf/sysctl.conf limits.conf 是 ulimit 的具体配置目录项 /etc/security/limit.d/ 中的配置会覆盖 limits.conf。sysctl.conf 为机器级别的资源限制root 用户可修改目录项 /etc/security/sysctl.d/ 中的配置会覆盖 sysctl.conf在 /etc/sysctl.conf 中添加对应配置fd: fs.file-max {}; pid: kernel.pid_max {}测试容器中修改 sysctl.conf 文件 $ docker run -d --ulimit nofile100:200 cr.d.xiaomi.net/containercloud/alpine:webtool top cb1250c8fd217258da51c6818fa2ce2e2f6e35bf1d52648f1f432e6ce579cf0d $ docker exec -it cb1250c sh/ # ulimit -a -f: file size (blocks) unlimited -t: cpu time (seconds) unlimited -d: data seg size (kb) unlimited -s: stack size (kb) 8192 -c: core file size (blocks) unlimited -m: resident set size (kb) unlimited -l: locked memory (kb) 64 -p: processes unlimited -n: file descriptors 100 -v: address space (kb) unlimited -w: locks unlimited -e: scheduling priority 0 -r: real-time priority 0 / # / # echo 10 /proc/sys/kernel/pid_max sh: cant create /proc/sys/kernel/pid_max: Read-only file system / # echo 10 /proc/sys/kernel/pid_max sh: cant create /proc/sys/kernel/pid_max: Read-only file system / # echo fs.file-max5 /etc/sysctl.conf / # sysctl -p sysctl: error setting key fs.file-max: Read-only file system以 priviledged 模式测试谨慎测试 $ cat /proc/sys/kernel/pid_max 32768 $ docker run -d -- --ulimit nofile100:200 cr.d.xiaomi.net/containercloud/alpine:webtool top $ docker exec -it pedantic_vaughan sh / # cat /proc/sys/kernel/pid_max 32768 / # echo 50000 /proc/sys/kernel/pid_max / # cat /proc/sys/kernel/pid_max 50000 / # exit $ cat /proc/sys/kernel/pid_max 50000 # 宿主机的文件也变成50000由于 docker 隔离的不彻底在 docker 中修改 sysctl 会覆盖主机中的配置不能用来实现容器级别资源限制 limits.conf 可以在容器中设置效果同 ulimit。 推荐方案如下 fd 限制修改 dockerd 配置 default-ulimits限制进程级别 fd thread 限制修改 kubelet 配置 --feature-gatesSupportPodPidsLimittrue - -pod-max-pids{}cgroup 级别限制 pid从而限制线程数 其他注意事项调整节点 pid.max 参数放开或者调大镜像中 ulimit 对非 root 账户 nproc 限制。
http://www.yingshimen.cn/news/66148/

相关文章:

  • 月付购物网站建站网站建设是管理费用的哪项费用
  • 封面型网页网站有哪些内容重庆建筑设计公司排名
  • ASP个人网站的建设最新新闻消息事件
  • 怎么上传网站源码网页素材下载
  • 电脑如何安装免费wordpress广东seo价格是多少钱
  • 中国水土保持生态建设网站网站开发软件dw
  • 黄村专业网站开发公司免费php网站有哪些
  • 无限流量网站建设南宁网吧
  • 佛山建设企业网站大淘客网站建设
  • 什么是电子商务网站建设建设网站是否需要一个主机
  • 兰州网站建设搜王道下拉静态后台管理网站模板
  • 品牌茶业都在哪些网站做宣传查企业的网站有哪些
  • php做视频网站网站app搭建
  • 贸易公司 网站 扶持字体艺术设计在线生成
  • 网站开发面试网络营销平台的优势
  • 做喷绘可以在那个网站找收费下载网站源码
  • 南水北调建设管理局网站深圳市门户网站建设
  • 采集网站seo西安搬家公司哪家便宜
  • Wordpress iPhone 上传泉州百度首页优化
  • 动画设计策划案2022百度seo优化工具
  • 网站开发的工作经验要求深圳宝安网站推广
  • 邯郸网站建设安联网络公司青岛网站seo技巧
  • 做网站如何防止被骗wordpress收费下载资源插件
  • 网站首页效果图美食鉴赏国内网站
  • 网站权限控制企业自适应网站制作
  • 北京网站开发联系电话手机网页游戏排行榜
  • php网站建设带数据库模板WordPress用lamp还是lnmp
  • wordpress网站嵌入音乐锦州网页制作
  • 湖南做网站最厉害的公司网站设计个人心得
  • 手机网站模板 php搜索引擎优化的主要特征