我正在运行pdftoppm将用户提供的PDF转换为300DPI图像.这非常有用,除非用户提供的页面大小非常大. pdftoppm将分配足够的内存来在内存中保存该大小的300DPI图像,对于100英寸的方形页面,每像素100 * 300 * 100 * 300 * 4字节= 3.5GB.恶意用户可能只是给我一个愚蠢的大PDF并导致各种问题.

所以我想要做的是对我即将运行的子进程的内存使用量设置一些硬性限制 – 如果它试图分配超过500MB的内存,那么就会让进程死掉.那可能吗?

我不认为ulimit可以用于此,但是有一个单进程等效吗?

解决方法:

超时工具需要安装Perl 5和/ proc文件系统.之后,您将工具复制到例如/usr/local/bin如下:

curl https://raw.githubusercontent.com/pshved/timeout/master/timeout | \

sudo tee /usr/local/bin/timeout && sudo chmod 755 /usr/local/bin/timeout

在那之后,你可以通过内存消耗“笼罩”你的过程,就像你的问题一样:

timeout -m 500 pdftoppm Sample.pdf

或者你可以使用-t< seconds>和-x分别按时间或CPU约束限制进程.

此工具的工作方式是,如果生成的进程没有超额设置其设置边界,则每秒检查多次.这意味着实际上有一个小窗口,其中一个进程可能在超时通知之前超额订阅并杀死进程.

因此,更正确的方法可能涉及cgroups,但即使您使用Docker或runC,它们也需要更多参与设置,这些事件可以提供围绕cgroup的更加用户友好的抽象.

标签:linux,memory,ulimit

来源: https://codeday.me/bug/20190808/1621451.html

linux单进程最大内存,限制单个Linux进程的内存使用量相关推荐

  1. linux ps vsz malloc,认真分析下进程的内存,说说VSZ、RSS、PSS

    进程占用的内存可以有以下这些类型:自身的代码 共享库的代码 运行过程分配的堆和栈 通过mmap映射的磁盘文件内容 1. 虚拟内存与物理内存 这里要区分两个概念,虚拟内存和物理内存.物理内存对于进程来说 ...

  2. linux为系统分配内存,Linux操作系统知识讲解:走进Linux 内存分配算法

    Linux 内存分配算法 内存管理算法--对讨厌自己管理内存的人来说是天赐的礼物 1.内存碎片 1) 基本原理 产生原因:内存分配较小,并且分配的这些小的内存生存周期又较长,反复申请后将产生内存碎片的 ...

  3. linux内存管理(十四)-内存OOM触发分析

    在内存分配路径上,当内存不足的时候会触发kswapd.或者内存规整,极端情况会触发OOM,来获取更多内存. 在内存回收失败之后,会进行OOM,OOM的入口是__alloc_pages_may_oom, ...

  4. linux进程间通信快速入门【二】:共享内存编程(mmap、XSI、POSIX)

    文章目录 mmap内存共享映射 XSI共享内存 POSIX共享内存 参考 使用文件或管道进行进程间通信会有很多局限性,比如效率问题以及数据处理使用文件描述符而不如内存地址访问方便,于是多个进程以共享内 ...

  5. MacOS怎么查看进程占用内存是多少

    一.背景 在Linux下可以使用 free 命令来方便的查看内存占用情况,如 free -g.free -m等,但MacOS下没有这个命令. 既然如此,那么MacOS里是否有类似的工具呢? 而我们又该 ...

  6. mysql内存态_MySQL · 社区动态 · MySQL内存分配支持NUMA

    NUMA 问题曾经一直是困扰DBA的一个大问题,早在 2010 年, 就有人给MySQL报了Bug#57241, 指出了MySQL在x86系统下存在严重的 "swap insanity&qu ...

  7. linux查找用户前三进程_查看 Linux 系统中进程和用户的内存使用情况 | Linux 中国...

    有一些命令可以用来检查 Linux 系统中的内存使用情况,下面是一些更好的命令.-- Sandra Henry-stocker 有许多工具可以查看 Linux 系统中的内存使用情况.一些命令被广泛使用 ...

  8. 32M内存 跑linux内核,32位Linux单进程4G内存限制

    可用下面代码测试系统能给单进程分配多少用户态内存: 1 #include 2 #include 3 4 int main(){ 5   int MB = 0; 6   while(malloc(1 & ...

  9. linux进程管理内存管理,Linux专业知识四:Linux系统进程管理及查看内存

    本文主讲Linux专业知识之Linux系统进程管理及查看内存的情况,以Redhat RHEL7操作系统为例. 一.进程 程序与进程:程序是静态的(文件),进程是动态的(运行的程序). 进程和线程:一个 ...

最新文章

  1. 解决 python pip install安装速度慢| 版本低|跨过个别错误包
  2. 哈佛大学惊人发现:新冠对人类未来影响巨大!
  3. 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍
  4. C++访问权限与继承
  5. Android 制作类似支付圆圈和打钩界面ProgressWheel
  6. writing-mode属性
  7. redis timeout设置多少合适_热水器怎么调温度?一般热水器温度设置多少度比较合适?...
  8. ipmi对于统一硬件管理的意义
  9. 计算机批处理英语,英语计算机词汇大全
  10. ax.spines——matplotlib坐标轴设置
  11. Promise方法汇总
  12. Java 基础类库:System、Runtime、Object、Math、日期、时间
  13. win10开机无响应 无服务器,win10开机假死-状态栏和开始菜单无响应
  14. R语言ggplot2可视化线图(line plot)、自定义设置X轴标签为字符串标签,将原有的指定间隔的数字标签替换为指定的字符串标签(change x axis labels into string
  15. 联想计算机怎么添加打印机,电脑和联想打印机连接不上怎么办啊
  16. 视频照片合成软件哪个好?快速把手机照片做成视频,简单操作,效果精美!
  17. 处理导入的原理图库中Designator字体不对的问题
  18. 在Unity3D中开发的Rim Shader
  19. 上海交通大学计算机学院录取分数线,上海交通大学
  20. 大数据在企业运营中的应用研究

热门文章

  1. Java第十章总结集合类
  2. SAP ABAP 业务对象 BUS6041 AssetSubCostRev 后续资产成本和收入 BAPI 清单和相关 TCODE
  3. ArcMap投影后的数据添加经纬网
  4. [转]SQL Server 数据库规范
  5. c语言format是什么,初始化C盘时format c:/s 中/s是什么意思啊?
  6. Linux基本指令总结
  7. muduo C++网络库的学习笔记
  8. windows CE初次接触(一次升级长安致尚XT高德导航的经历)
  9. 【实习】解决请求参数过长问题
  10. 威尔逊云室的一些知识