如何在apache中设置每个连接的最大请求数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在apache中设置每个连接的最大请求数相关的知识,希望对你有一定的参考价值。

参考技术A Apache的主要工作模式有两种:prefork和worker
一、两种模式
prefork模式(缺省模式)
  prefork是Unix平台上的默认(缺省)MPM,使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接,效率高,但内存占用量比较大。
  这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。
worker模式
  worker使用多个子进程,每个子进程有多个线程,每个线程在某个确定的时间只能维持一个连接,内存占用量比较小,适合高流量的http服务器。缺点是假如一个线程崩溃,整个进程就会连同其任何线程一起”死掉”,所以要保证一个程式在运行时必须被系统识别为”每个线程都是安全的”。
  此多路处理模块(MPM)使网络服务器支持混合的多线程多进程。由于使用线程来处理请求,所以可以处理海量请求,而系统资源的开销小于基于进程的MPM。但是它也使用了多进程,每个进程又有多个线程,以获得基于进程的MPM的稳定性。
二、模式切换
1.查看模式
  如果apache已经安装,我们可以用"httpd -l"命令查看当前模式。若找到 prefork.c 则表示当前工作在prefork模式,同理出现 worker.c 则工作在worker模式。
  如果apache还未安装,我们在编译的时候可以加入 --with-pem=(prefork|worker) 选项决定启用什么模式。
2.切换模式
a. 将当前的prefork模式启动文件改名
mv httpd httpd.prefork
b. 将worker模式的启动文件改名
mv httpd.worker httpd
c. 修改Apache配置文件
vi /usr/local/apache2/conf/extra/httpd-mpm.conf
  找到里边的如下一段,可适当修改负载等参数:
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
d. 重新启动服务
/usr/local/apache2/bin/apachectl restart
  出于稳定性和安全性考虑,不建议更换apache2的运行方式,使用系统默认prefork即可。另外很多php模块不能工作在worker模式下,例如redhat linux自带的php也不能支持线程安全。所以最好不要切换工作模式。
三、prefork和worker模式比较
  prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。
  worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起"死掉"。由于线程共享内存空间,所以一个程序在运行时必须被系统识别为"每个线程都是安全的"。
  总的来说,prefork方式速度要稍高于worker,然而它需要的cpu和memory资源也稍多于woker。
(如果要想用worker模式,还不如使用Nginx)
四、prefork模式配置详解(根据官网翻译的)
<IfModule mpm_prefork_module>
ServerLimit 256
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
MaxRequestsPerChild 0
</IfModule>
ServerLimit
默认的MaxClient最大是256个线程,如果想设置更大的MaxClient值,就的设置这个ServerLimit参数。20000是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。生效前提:必须放在其他指令的前面。如果这个参数设置的值很高,那么就会申请很多的无用共享内存。如果ServerLimit和MaxClients都设置成一个很高的值,超过了系统的处理范围,那么Apache很可能不会启动或者系统变得不稳定。
StartServers
指定服务器启动时建立的子进程数量。因为进程的数量是根据负载来动态控制得,所以这个参数可以不用修改。prefork默认为5。
MinSpareServers
指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。
MaxSpareServers
设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数不要设的太大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成"MinSpareServers+1"。
MaxClients
限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit。
MaxRequestsPerChild
每个子进程在其生存期内允许处理的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果 MaxRequestsPerChild为"0",子进程将永远不会结束。将MaxRequestsPerChild设置成非零值有两个好处:
1. 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
2. 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

如何在 PyCharm 中设置最大行长?

【中文标题】如何在 PyCharm 中设置最大行长?【英文标题】:How do I set the maximum line length in PyCharm? 【发布时间】:2013-06-23 13:17:40 【问题描述】:

我在 Windows 上使用 PyCharm,并希望更改设置以将最大行长度限制为 79 字符,而不是默认限制 120 字符。

我在哪里可以更改 PyCharm 中每行的最大字符数?

【问题讨论】:

【参考方案1】:

这是我的 Pycharm 的截图。所需设置位于以下路径:File -&gt; Settings -&gt; Editor -&gt; Code Style -&gt; General: Right margin (columns)

【讨论】:

我想知道为什么默认值设置为 120 个字符。 PEP 8 明确指出:Limit all lines to a maximum of 79 characters. @Krøllebølle PEP 8 只是建议,不是强制性要求。 确实,回想一下我们遵循 PEP 8 的项目,我们太严格了。在 79 行限制之后,代码很快变得不可读和不可维护。让我们引用PEP-8:A style guide is about consistency. Consistency with this style guide is important. Consistency within a project is more important. Consistency within one module or function is most important. But most importantly: know when to be inconsistent -- sometimes the style guide just doesn't apply. PEP8 E501 — 行太长(> 79 个字符) — 现在已被弃用。即使像 Django 这样的大型知名项目也不再使用它 (code.djangoproject.com/ticket/23395),您可以在此处看到:One big exception to PEP 8 is our preference of longer line lengths. We’re well into the 21st Century, and we have high-resolution computer screens that can fit way more than 79 characters on a screen. Don’t limit lines of code to 79 characters if it means the code looks significantly uglier or is harder to read. @ChrisCogdon 我有一个论据来对抗来自 Django 的“古代终端”稻草人(?):在我的 1920 像素宽屏幕上,我可以容纳 3 个横向最大宽度约为 79 列的源文件。我相信它可以让我更好地了解我正在使用的内容,因为我可以在我正在处理的视图旁边打开库模块和模板文件。【参考方案2】:

对于 Mac 上的 PyCharm 2018.1:

首选项 (+,),然后是 Editor -&gt; Code Style:

对于 Windows 上的 PyCharm 2018.3:

文件 -> 设置(Ctrl+Alt+S),然后Editor -&gt; Code Style:

要遵循 PEP-8,请将 Hard wrap at 设置为 80。

【讨论】:

【参考方案3】:

对于 PyCharm 4

文件>>设置>>编辑器>>代码样式:右边距(列)

建议:看看该标签中的其他选项,它们非常有帮助

【讨论】:

【参考方案4】:

您甚至可以为 HTML 设置单独的右边距。指定路径下:

文件 >> 设置 >> 编辑器 >> 代码样式 >> HTML >> 其他选项卡 >> 右边距(列)

这非常有用,因为通常 HTML 和 JS 在一行中通常比 Python 长。 :)

【讨论】:

我在找这个。感谢@andy,但即使增加了 HTML 的右边距,文本继续在第 79 列中换行。还有一些设置吗?【参考方案5】:

对于任何人,或者我自己,如果我重新加载我的机器,当你重新格式化代码时这对谁不起作用,有一个额外的选项可以在 editor->code style->python 下检查:确保不超过右边距。选择此选项后,重新格式化将起作用。

【讨论】:

【参考方案6】:

对于 PyCharm 2019.3.1,我看到了这个。

【讨论】:

【参考方案7】:

对于 PyCharm 2017

我们可以按照以下方式进行: 文件 >> 设置 >> 编辑器 >> 代码样式。

然后为Hard WrapVisual Guides 提供值 for wrapping 输入时,勾选复选框。

注意:也请查看其他选项卡,即。 Python、HTML、JSON 等

【讨论】:

【参考方案8】:

对于 PyCharm 2021.x,这对 python 起到了作用:

【讨论】:

以上是关于如何在apache中设置每个连接的最大请求数的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中设置EditText的最大字符数?

如何在 BigQuery 中设置项目默认计费的最大字节数?

CentOS中设置Mysql的最大连接数max_connections(用于解决too many connections的问题)

如何在 Hadoop 流中设置每个节点的最大减速器数量?

如何在 PyCharm 中设置最大行长?

如何设置Apache中的最大连接数