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

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

限制linux用户的进程数

修改以下文件

vi /etc/security/limits.conf
vpsee hard nproc 32
@student hard nproc 32
@faculty hard nproc 64

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

ulimit -u
65535
ulimit -u 65534
ulimit -u 65535
-bash: ulimit: max user processes: cannot modify limit: Operation not permitted
ulimit -a
core file size     (blocks, -c) 0
data seg size      (kbytes, -d) unlimited
scheduling priority       (-e) 0
file size        (blocks, -f) unlimited
pending signals         (-i) 30493
max locked memory    (kbytes, -l) 64
max memory size     (kbytes, -m) unlimited
open files           (-n) 65535
pipe size      (512 bytes, -p) 8
POSIX message queues   (bytes, -q) 819200
real-time priority       (-r) 0
stack size       (kbytes, -s) 10240
cpu time        (seconds, -t) unlimited
max user processes       (-u) 65534
virtual memory     (kbytes, -v) unlimited
file locks           (-x) unlimited

查看各系统用户的进程数

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

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

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

问题原因分析:

问题原因

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

到此这篇关于php中unable to fork报错简单解决方法的文章就介绍到这了,更多相关php中unable to fork报错怎么解决内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PHP多进程之pcntl_fork的实例详解

    PHP多进程编之pcntl_fork的实例详解 其实PHP是支持并发的,只是平时很少使用而已.平时使用最多的应该是使用PHP-FMP调度php进程了吧. 但是,PHP的使用并不局限于做Web,我们完全也可以使用PHP来进行系统工具类的编程,做监控或者是运维.在使用这些方向的时候,我们可以使用到PHP的更多特性,例如并发(多进程).socket编程等. 那么接下来就说说我遇到的PHP多进程的编程.这个多进程的使用是有一个背景的,下面模糊描述一下背景. 我需要一个监控系统,当然使用PHP语言,监控系

  • PHP使用pcntl_fork实现多进程下载图片的方法

    本文实例讲述了PHP使用pcntl_fork实现多进程下载图片的方法.分享给大家供大家参考.具体分析如下: PHP pcntl_fork - 在当前进程当前位置产生分支,子进程,译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0. 注意:PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展. 1.首先在ubuntu下编译pc

  • php pcntl_fork和pcntl_fork 的用法

    pcntl_fork()函数就是为当前的进程创建一个子进程.并且先运行父进程,返回的是子进程的PID,肯定大于零.在父进程的代码中可以用pcntl_fork(&$status)暂停父进程知道他的子进程有返回值.注意:父进程的阻塞同时会阻塞子进程.但是父进程的结束不影响子进程的运行. 父进程运行完了会接着运行子进程,这时子进程会从执行pcntl_fork()的那条语句开始执行(包括此函数),但是此时它返回的是零(代表这是一个子进程).在子进程的代码块中最好有exit语句,即执行完子进程后立即就结束

  • php中pcntl_fork创建子进程的方法实例

    一.php中pcntl_fork函数概述 pcntl_fork()函数是php中用于创建子进程的一个函数,返回创建的子进程的pid. 该函数创建子进程具体fork的过程: (1)调用该函数即创建一个子进程,创建成功父进程返回子进程的pid,子进程返回0: (2)创建子进程实际上对父进程的一个拷贝,共享代码空间,拷贝父进程的数据,也就是说父进程改变父进程的数据,子进程改变子进程的数据变量等: 二.示例代码分析 代码示例: <?php $curr_pid = posix_getpid();//获取当

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

    今天小编遇到一个问题,当调用了system方法,并且执行了shell脚本,开始的时候,一切都非常正常,但是当程序运行后一段时间,出现了显示unable to fork的报错,这个是什么原因呢,后来小编排查了下,主要是因为达到用户的进程上限了,下面小编给大家介绍下解决方式. 限制linux用户的进程数 修改以下文件 vi /etc/security/limits.conf vpsee hard nproc 32 @student hard nproc 32 @faculty hard nproc

  • 基于php双引号中访问数组元素报错的解决方法

    最近在做微信公众号开发,在一个发送图文接口中,需要把数组元素拼接在XML字符串中 foreach ($itemArr as $key => $value){ $items .= "<item> <Title><![CDATA[$value['title']]]></Title> <Description><![CDATA[[$value['description']]]></Description> <

  • vuex2中使用mapGetters/mapActions报错的解决方法

    解决方案 可以安装整个stage2的预置器或者安装 Object Rest Operator 的babel插件 babel-plugin-transform-object-rest-spread . 接着在babel的配置文件 .babelrc 中应用插件: { "presets": [ ["es2015", { "modules": false }] ], "plugins": ["transform-object

  • .NET中OpenFileDialog使用线程报错的解决方法

    昨天,在做一个NPOI读取的小demo的时候,使用OpenFileDialog打开文件,最开始的写法,直接在按钮点击事件中写,会报错,代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Microsoft Office Excel(*.xls;*.xlsx)|*.xls;*.xlsx"; ofd.FilterIndex = 1; ofd.RestoreDirectory = true; if (ofd.ShowD

  • 关于vue中使用three.js报错的解决方法

    目录 前言 1.vue的问题? 2.Proxy的异常情况 3.Three.js的问题 4.defineProperty异常情况 5.解决 总结 前言 最近在学习three.js,同时也学习一下vue3,然后就出现问题了,报错直接用不了,错误信息如下: Uncaught TypeError: 'get' on proxy: property 'modelViewMatrix' is a read-only and non-configurable data property on the prox

  • Android线程中设置控件的值提示报错的解决方法

    本文实例讲述了Android线程中设置控件的值提示报错的解决方法.分享给大家供大家参考,具体如下: 在Android线程中设置控件的值一般会与Handler联合使用,如下: package com.yarin.android.Examples_04_15; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import andro

  • Vue2.x中利用@font-size引入字体图标报错的解决方法

    利用 vue-cli 搭建的项目平台 利用stylus写的css样式 有 css-loader 依赖包x 下图是 webpack.base.conf.js 关于字体文件的配置 有人这里会有重复的字体文件的配置,删除一项即可 出现的问题:引入字体图标出现问题 1.报错 将字体引入的相对路径改成绝对路径 相对路径 绝对路径 2.不报错,但是出现的字体图标是小方框 有警告信息: 小方块: 报错是因为重定向的问题 出现上述问题的原因 ①没在用到的地方引入字体的样式文件 ②使用的是后缀名为 .styl 文

  • Typescript中使用引用路径别名报错的解决方法

    在TS中引用路径别名提示找不到模块或者相应的声明 1.ts中使用路径别名报错 在react中通常路径别名都是在webpack的webpack.config.js文件中配置的,但是在引入了ts之后,webpack中的路径别名引用失效了此时我们需要在跟src文件同级目录的tsconfig.json文件中添加配置: 注意要在compilerOptions中添加(webpack中的路径也需要配置) "compilerOptions": { "target": "e

  • layui数据表格 table.render 报错的解决方法

    一.报错信息 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Jan 23 15:20:18 CST 2019 There was an unexpected error (type=Internal Server Error, status=500). An error happened during temp

  • 详解VS2019使用scanf()函数报错的解决方法

    目录 scanf_s()函数 scanf_s()函数与scanf()函数的区别 VS2019使用scanf()函数报错的解决方法 解决方法一 解决方法二 解决方法三 解决方法四 首先来看一段很简单的C语言代码 #include<stdio.h> int main(void) { char s[10]; scanf("%s",s); printf("%s",s); return 0; } 这段代码的作用就是输入一个字符串,再把这个字符串输出.在其他IDE(

随机推荐