当前位置:首页 > PHP教程 > php应用 > 列表

php中unable to fork报错简单解决方法

发布:smiling 来源: PHP粉丝网  添加日期:2022-04-11 15:31:47 浏览: 评论:0 

今天小编遇到一个问题,当调用了system方法,并且执行了shell脚本,开始的时候,一切都非常正常,但是当程序运行后一段时间,出现了显示unable to fork的报错,这个是什么原因呢,后来小编排查了下,主要是因为达到用户的进程上限了,下面小编给大家介绍下解决方式。

限制linux用户的进程数

修改以下文件

  1. vi /etc/security/limits.conf 
  2. vpsee hard nproc 32 
  3. @student hard nproc 32 
  4. @faculty hard nproc 64 

ulimit 不带 -H 和 -S 参数的时候同时设置 Hard 和 Soft

  1. ulimit -u 
  2. 65535 
  3. ulimit -u 65534 
  4. ulimit -u 65535 
  5. -bash: ulimit: max user processes: cannot modify limit: Operation not permitted 
  6. ulimit -a 
  7. core file size     (blocks, -c) 0 
  8. data seg size      (kbytes, -d) unlimited 
  9. scheduling priority       (-e) 0 
  10. file size        (blocks, -f) unlimited 
  11. pending signals         (-i) 30493 
  12. max locked memory    (kbytes, -l) 64 
  13. max memory size     (kbytes, -m) unlimited 
  14. open files           (-n) 65535 
  15. pipe size      (512 bytes, -p) 8 
  16. POSIX message queues   (bytes, -q) 819200 
  17. real-time priority       (-r) 0 
  18. stack size       (kbytes, -s) 10240 
  19. cpu time        (seconds, -t) unlimited 
  20. max user processes       (-u) 65534 
  21. virtual memory     (kbytes, -v) unlimited 
  22. file locks           (-x) unlimited 

查看各系统用户的进程数

  1. ps h -Led -o user | sort | uniq -c | sort -n 
  2. 2 nobody 
  3. 3 redis 
  4. 34 www 
  5. 64 mysql 
  6. 174 root 

确定某用户的进程数的分布情况

ps -o nlwp,pid,lwp,args -u username | sort -n

问题原因分析:

问题原因

system调用会fork新的进程,因为每个用户有最大进程数限制,简单的说就是达到用户的进程上限了。

Tags: unable to fork

分享到: