如何将 Apache 配置为仅分叉一个子进程/工作进程?

2024-02-20

我希望启动 apache,以便它分叉一个子进程。 (我正在分析一个模块。我知道 -X 标志,)

根据文档

两个指令对活动子进程的数量设置了硬性限制 以及子进程中的服务器线程数,并且只能是 通过完全停止服务器然后再次启动来更改。ServerLimit 是对活动子进程数量的硬限制,并且必须大于或等于 MaxClients 指令除以 ThreadsPerChild 指令。线程限制是一个 服务器线程数的硬限制,并且必须大于 或等于 ThreadsPerChild 指令。如果非默认值是 为这些指令指定,它们应该出现在其他工作人员之前 指令。

我尝试将我的设置设置为:

<IfModule prefork.c>
StartServers       1
MinSpareServers    1
MaxSpareServers    1
ServerLimit      1
MaxClients       1
MaxRequestsPerChild  4000
</IfModule>


<IfModule worker.c>
StartServers         1
MaxClients          25
MinSpareThreads     25
MaxSpareThreads     25 
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

当我重新启动时,我仍然得到四个进程。

root     17173     1  0 11:44 ?        00:00:00 /usr/sbin/httpd -k start
root     17205 17173  0 11:46 ?        00:00:00 /usr/sbin/httpd -k start
apache   17206 17173  0 11:46 ?        00:00:00 /usr/sbin/httpd -k start
apache   17207 17173  0 11:46 ?        00:00:00 /usr/sbin/httpd -k start

我究竟做错了什么?

奇怪的是,如果我使用 -X 标志,我仍然会得到三个进程。

/usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf

apache   17224  4097  1 11:51 pts/1    00:00:00 /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf
root     17226 17224  0 11:51 pts/1    00:00:00 /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf
apache   17227 17224  0 11:51 pts/1    00:00:00 /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf

你应该得到两个进程,第一个是 root 拥有的,绑定 80 端口,管理 child[ren],第二个是应答 http 请求的进程。

尝试用ps auxf你应该得到类似的东西:

ps auxf | grep httpd | grep -v 'grep'
root     16955  0.0  0.2 275440 17996 ?        Ss   13:50   0:00 /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf
www-data 16987  0.0  0.1 275472  7620 ?        S    13:50   0:00  \_ /usr/sbin/httpd -X -f /etc/httpd/conf/httpd.conf

现在,浏览网页,似乎有时会生成第二个根进程,可能是因为 Apache 中加载的一个特定模块需要它。如果您真的想跟踪它,则必须删除模块,删除高级的东西(例如SSL 证书、RewriteLock 等)。

您还可以尝试lsof -p PID在每个过程中检查差异。

以下是此行为的一些其他示例:

  • https://serverfault.com/questions/310764/why-apache-child-process-runs-as-root https://serverfault.com/questions/310764/why-apache-child-process-runs-as-root
  • 多个 apache 根进程 https://stackoverflow.com/questions/13631459/multiple-apache-root-processes
  • https://superuser.com/questions/511841/multiple-apache-root-processes https://superuser.com/questions/511841/multiple-apache-root-processes

但没有人对此有真正的答案。

还检查当前使用哪个 mpm(prefork、worker、event?)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Apache 配置为仅分叉一个子进程/工作进程? 的相关文章

  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • Linux 上的静态 Qt5 构建:部署时如何处理字体?

    我使用这些配置选项创建了 Qt 5 2 0 库的静态版本 Ubuntu 12 04 开源 确认许可 force pkg config 发布 静止的 前缀 home juzzlin qt5 无icu opengl桌面 无油嘴滑舌 辅助功能 n
  • Linux 上的 Pervasive ODBC 错误 [01000][unixODBC][驱动程序管理器]无法打开 lib '/usr/local/psql/lib/odbcci.so':找不到文件

    我正在尝试让 Pervasive v10 客户端 ODBC 在 Centos 6 上运行 据我所知 没有 64 位 ODBC 客户端 因此我必须使用 32 位客户端 我终于成功安装了它 但尝试使用时出现以下错误 isql v mydsn 0
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • Apache Tika 能够提取中文、日语等外语吗?

    Apache Tika 能够提取中文 日语等外语吗 我有以下代码 Detector detector new DefaultDetector Parser parser new AutoDetectParser detector Input
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • 无法查看神经节仪表板

    我已经使用 rpm 文件进行了 ganglia 设置 OS centOS 6 3 Server httpd gmond 和 gmetad 正在运行 当我在浏览器中加载它时收到 禁止错误 Forbidden You don t have pe
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 在 apache docker 容器中运行虚拟主机

    我在同一个 apache 容器中有两个 php 应用程序 我试图在端口上运行其中一个应用程序 因为它需要通过根域而不是子文件夹进行访问 我想在端口 8060 上运行应用程序 我尝试使用 apache 虚拟主机执行此操作 但它不会加载页面 h
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4

随机推荐

  • 如何检测一种类型是否是另一种类型的可见基础?

    If I do struct A struct C private A typedef char yes 1 typedef char no 2 template
  • 如何在Python中比较多个元组列表?

    我如何比较像这样的多个元组列表 1 2 3 6 5 3 1 5 3 5 2 1 1 8 3 9 输出应该是 1 2 1 5 1 8 3 6 3 5 3 9 这意味着我只想要那些值x axis价值与他人相匹配 5 3 和 2 1 应该被丢弃
  • 我向我的项目添加了一个新类,并收到一条错误消息“Program.Main() 有多个条目”。为什么?

    问题是 在我添加新类后 当我构建解决方案时出现了错误 有什么问题吗 在 Form1 中 我还没有任何代码 我刚刚添加了一个新课程 using System using System Collections Generic using Sys
  • React-native 解码的 Base64 编码字符串

    我尝试在 React Native 中解码 Base64 编码的字符串标记 atob 不起作用 并且像 js base64 这样的库无法解决问题 有人有解决办法吗 我发现一些简单的方法对我有用 与节点相同的 api 安装缓冲器 yarn a
  • 从 Azure Blob 存储读取文件

    我想从 azure 存储中读取 PDF 文件字节 因为我有一个文件路径 https hostedPath pdf 1001 12 Jun 2012 18 39 05 594 pdf 那么是否可以通过直接传递路径名来从 blob 存储中读取内
  • DDD是否适合所有类型的应用?

    对于这里和其他论坛提出的很多问题 我看到的一个常见反应是 您不需要为此执行 DDD 它是一个简单的 CRUD 应用程序 DDD 是一种过度设计 嗯 我是 DDD 的新手 我觉得 DDD 中有很多元素具有普遍吸引力并且可以全面使用 无论您的应
  • Powershell 中的本机 .tar 提取

    我有一个 tar gz我需要提取的文件 我已经处理了gunzip位GzipStream对象来自System IO Compression 但我找不到任何用于处理该命名空间中的 tarball 的内容 有没有办法处理 tarPowershel
  • logrotate 日期格式似乎不支持 %H:%M:%S

    我是 logrotate 的新手 当配置到 dateformat 属性时 logrotate 似乎不支持 strftime H 这是配置 daily rotate 2 size 3M missingok notifempty dateext
  • 在 Prolog 中交换列表的连续项

    我正在尝试编写可以交换列表中两个元素的 Prolog 代码 但前提是它们是彼此连续 那是 conseq swap d e a g d e f X 应该给出 X a g e d f d 和 e 是连续的 However conseq swap
  • 在单个事务中发送多个 SQL 命令

    我有一个巨大的清单INSERT INTO 字符串 目前我运行它们 using SqlConnection connection new SqlConnection connectionString connection Open forea
  • 按钮位于画布中央

    我有 4 个重叠的画布 充当图层 绝对定位并水平和垂直居中 在此画布上 我想在画布中心的一列中覆盖四个 HTML CSS 按钮 用于游戏菜单 我是 CSS 和 HTML 的新手 我一直无法弄清楚如何让按钮在绝对定位的画布上居中 我怎样才能做
  • 通用扩展类并实现接口[重复]

    这个问题在这里已经有答案了 这听起来可能是一个奇怪的问题 但是如何定义一个必须扩展类并实现接口的泛型呢 我目前有一个具有以下原型的通用函数 public static
  • cudaArray 与设备指针

    我对设备指针和设备指针的预期用途之间的区别感到困惑cudaArray结构 有人可以解释一下为什么我会使用其中一种而不是另一种吗 我的基本问题是 在浏览文档并阅读 CUDA by Example 一书之后 我不明白 API 设计者的意图 从我
  • 使用 Sprite Kit 创建自定义滑块 - 如何传递@selector?

    我正在开发的 Sprite Kit 游戏使用自定义滑块充当颜色选择器 颜色是从滑块轨道图形中选取的 这是一个UIImage包含梯度 我研究过使用定制的UISlider 但是标准的 IOS UI 控件不能很好地与 Sprite Kit 的场景
  • 如何通过 python 脚本在 ArcGIS 中添加 shapefile?

    我正在尝试使用 Python 自动执行 ArcGIS Desktop 通常使用 ArcMap 中的各种任务 并且我一直需要一种将形状文件添加到当前地图的方法 然后对其做一些事情 但那是另一个故事 到目前为止我能做的最好的就是添加一个laye
  • AngularJS ng-options 将数据类型添加到选项的值

    尝试使用最新版本 1 5 8 的 AngularJS 和 ng options 来填充下拉列表 问题是它添加了数据类型和值 如下所示
  • 如何将YUV_420_888图像转换为位图[重复]

    这个问题在这里已经有答案了 我正在开发 AR 项目 我需要捕获当前帧并将其保存到图库 我可以使用AR core中的Frame类获取图像 但图像的格式是YUV 420 888 我已经尝试了很多解决方案来将其转换为位图 但无法解决它 这就是我转
  • 在 Safari 9.1.2 中,悬停时的 SVG 转换失败 (11601.7.7)

    我试图在悬停时将文本和 svg 淡入另一种颜色 a color ff0000 display inline block margin 0 0 0 1em text decoration none text transform lowerca
  • Linux 中 C 语言的消息框

    我想在 Linux 中用 C 执行程序后显示 成功 弹出消息 它应该在 KDE 和 GNOME 上运行 我怎样才能做到这一点 您正在寻找桌面通知 http www galago project org specs notification
  • 如何将 Apache 配置为仅分叉一个子进程/工作进程?

    我希望启动 apache 以便它分叉一个子进程 我正在分析一个模块 我知道 X 标志 根据文档 两个指令对活动子进程的数量设置了硬性限制 以及子进程中的服务器线程数 并且只能是 通过完全停止服务器然后再次启动来更改 ServerLimit