阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache 优化配置 prefork模式

468次阅读
没有评论

共计 2871 个字符,预计需要花费 8 分钟才能阅读完成。

(一)prefork 模式下(其他模式下不适用),apache 需要优化的主要参数:

ServerLimit 3000

StartServers 750

MinSpareServers 5

MaxSpareServers 100

MaxClients 3000

MaxRequestsPerChild 10000

首先来看看 apache 各个参数的意义(引号里引用的是官方文档的描述):

(1)ServerLimit 和 MaxClients 服务器最大同时响应请求数

这个就是你当前配置的 apache 最大的并发响应数,对应的是 apache 的进程数,两个参数同时修改,MaxClients 不得大于 ServerLimit 参数。

ServerLimit 的大小,取决于你系统的资源,每个 apache 进程默认占用 2M 内存,基本可以按照这个公式来计算:最大内存 *80%/2M=ServerLimit

(2)StartServers 750 启动时默认启动的进程数

这个参数默认是 5,因为 apache 会通过自动启动新进程来增加响应服务的进程数,这个值不做调整的也是可以的,会由默认的 5 增加到满足服务的进程数,但是会出现开始启动时的卡住。

小启动参数有一个好处:就是可以让传递后后端 tomcat 的压力缓慢增加上来,而不是一下子增加压力。可以把这个调整到当前服务最大的并发数,当前服务最大并发连接数,可以通过监控 apache 进程个数:ps -ef | grep httpd | wc -l 来获得。不用调得太大,否则是无谓增加 apache 通过 jk 去跟 tomcat 建立的连接。

注意:apache 进程跟 tomcat 建立连接后,不会释放此连接,会一直保持连接,直到 timeout,如果没有 timeout 时间,就会永久连接。timeout 的设置,会在后面 jk 配置里说明。

所以不要一次启动太多的 apache 进程,只启动足够用的进程即可。其他增加的流量,apache 会自动调整进程数,直到 MaxClients 参数限定的范围。

(3)MinSpareServers 5 最小空闲进程

MinSpareServers 指令设置空闲子进程的最小数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前空闲子进程数少于 MinSpareServers,那么 Apache 将以第一秒一个,第二秒两个,第三秒四个,按指数递增个数的速度产生新的子进程。

(4)MaxSpareServers 10 最大空闲进程

MaxSpareServers 指令设置空闲子进程的最大数量。所谓空闲子进程是指没有正在处理请求的子进程。如果当前有超过 MaxSpareServers 数量的空闲子进程,那么父进程将杀死多余的子进程。

可以调整这两个参数,但是这两个参数的值不能设得太大,否则 apache 进程太多,会导致对应开启的 tomcat 进程也会很多。

官网上关于这两个参数都有这么句话:“将此参数设的太大通常是一个坏主意。”

在一台压力大 (并发访问 2800) 的服务器上,MaxSpareServers 这个值设置的是 200。

设置了这个值的好处是不会有太多的空闲的进程在消耗资源,同时减少 apache 和 tomcat 的连接端口。

关闭空闲 apache 进程的同时,会释放 jk 连接,同时释放 tomcat 连接数,进而减少系统资源消耗。

(5)MaxRequestsPerChild 10000

“MaxRequestsPerChild 指令设置每个子进程在其生存期内允许伺服的最大请求数量。到达 MaxRequestsPerChild 的限制后,子进程将会结束。如果 MaxRequestsPerChild 为 ”0″,子进程将永远不会结束。

将 MaxRequestsPerChild 设置成非零值有两个好处:

* 可以防止 (偶然的) 内存泄漏无限进行,从而耗尽内存。

* 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

注意

对于 KeepAlive 链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。”

也就是说实际上这个时候子进程最大连接数等于 MaxRequestsPerChild*MaxKeepAliveRequests

所以在开启 KeepAlive 后,需要同时设置 MaxRequestsPerChild 和 MaxRequestsPerChild,确保每个 apache 进程在服务一定请求数后会关闭,重新开启新的子进程,避免 apache 进程异常导致的内存泄露和资源占用。

(6)Keep-Alive

默认:ON

发送的请求,在 MaxRequestsPerChild 里面只算一个,不管这个连接发送了多少个请求。

(7)MaxKeepAliveRequests

默认:100

“ 一个建立好的 Keep-Alive 连接,允许发送的请求的个数。一旦建立连接,要么就是个数达到了断开,要么就是等 KeepAliveTimeout 时间到了断开连接。

MaxKeepAliveRequests 指令限制了当启用 KeepAlive 时,每个连接允许的请求数量。如果将此值设为 ”0″,将不限制请求的数目。我们建议最好将此值设为一个比较大的值,以确保最优的服务器性能。”

这个数字的设置,必须考虑在一个时间段内,同一个用户访问你的服务会发多少请求。要结合 KeepAliveTimeout 参数来考虑。

举个例子,用户需要间隔时间不大于 KeepAliveTimeout 的时间内,连续请求 10 个文件,那么这个参数就应该设置成 10,如果用户在连续时间里不断请求访问,则这个数值得设置得更多。否则就重新建立连接下载。一旦用户连续进行了 10 个请求后,并且这个用户肯定在完成这些请求后的 5 秒内不会再请求,甚至要在之后的很长时间后请求,那么这个 KeepAliveTimeout 时间就可以设置得很短,以便尽早断开这种用户,把资源让个其他用户。

(8)KeepAliveTimeout

默认:5

“ 在一个建立好的 Keep-Alive 连接上,在 MaxKeepAliveRequests 个数未满的情况下,等待下一个请求的时间。”

如果有请求到达,那么 apache 等待 IO 响应的 timeout 时间时间开始生效,timeout 时间没等到响应,连接被断开;如果 KeepAliveTimeout 时间内,没有请求到达,连接就被断开。

具体设置可以参考配合 MaxKeepAliveRequests 参数。同时这个参数又受 TimeOut 参数影响,在一次成功连接中,TimeOut 时间内没有等到响应,也会断开连接。

(9)TimeOut

默认:300

“TimeOut 指令用于设置 Apache 等待以下三种事件的时间长度:

1. 接受一个 GET 请求耗费的总时间。

2. POST 或 PUT 请求时,接受两个 TCP 包之间的时间。

3. 应答时 TCP 包传输中两个 ACK 包之间的时间。

我们计划在发展里程中,逐步把它们分别变得更易配置。计时器在 1.2 版本之前的默认值为 1200,而现在已经设置为 300 了,但对于绝大多数情况来说仍是足够的。没有把它默认值设的更小的原因在于代码里还有点问题:有时发送一个包之后,计时器没有复位。”

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2871字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7965668
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...