所以我有一个具有非常高带宽服务器的客户端。就需求而言,其服务的点击量非常低 - 静态 jpeg 和文本。
服务器规格:
我目前的 apache 配置如下:
上周我看到每秒大约有 2000-3000 次 apache 访问,没有任何问题。这转化为 80-90Mbps 和 1 左右的负载,峰值约为 5,瞬时极端峰值为 30-50,当 apache 将重新启动并重新生成所有进程时。内存使用量约为 40GB。流量增加了,我现在看到每秒有 3000-4000 次 apache 访问,而且 http 不稳定。尽管 apache 偶尔会重新启动,但我在 apache 运行时遇到了没有 http 连接的时期,并且有空闲的工作人员和开放的插槽。负载在稳定和频繁尖峰时约为 2,这无疑是我的连接问题,但我不确定为什么。RAM 使用量为 50-60GB。吞吐量约为 130Mbps。(当我的包裹是 100Mbps 时,我不确定我是如何获得超过 100Mbps 的,但我'
我正在寻找有关我是否已达到 apache 可以处理的最大操作上限的意见,或者是否存在一些我可能超出的其他系统限制。
有些人告诉我 LiteSpeed 是解决方案,但我没有这方面的经验,而且我的客户听说过不好的事情,所以也很感激那里的意见。
谢谢大家!
vor*_*aq7 13
首先,除了 Apache、nginx 或 LightSpeed - 如果您运行的服务器每秒有 2000-3000 个请求,那么是时候开始考虑双服务器和负载平衡了。根据您提供的服务,您可以轻松地从任何这些服务器中获得更多收益,但按照这些费率,您提供的是重要(或至少是高流量)的服务,因此除了能够处理瞬时负载峰值。
开始认真考虑负载平衡基础架构(这里有很多关于 HAProxy 等的问题/答案,Google 也可以为您提供帮助)。
也就是说,我不相信您已经达到了 Apache 的操作限制。
你当然可以考虑其他高性能的 web 服务器(nginx 非常流行),或者你可以考虑调整你的 Apache 配置以获得更好的性能。
根据我在您的问题中看到的内容,一些 Apache 建议:
在做任何其他事情之前,请阅读Apache 性能调优文档。
MaxRequestsPerChild真的只对控制资源泄漏有用。
100(您的当前值)绝对是疯了。您正在搅动会降低性能的进程。
如果您提供的所有资源都是静态资源,则 0(永远不要杀死孩子)当然是可行的。
10000(一万,默认值)几乎在所有情况下都可以。50000(五万)是我用于纯静态 HTML 站点的值。
StartServers,MinSpareServers并且MaxSpareServers可以调整。
我通常将StartServers和设置MinSpareServers为相同的值。
如果您希望保留特定的最少备用服务器数量,那么您应该从该数量开始。一个很好的价值是同时活动连接的低水位线。
MaxSpareServers应设置为同时活动连接的高水位线的 75-80%。
ServerLimit并且MaxClients可能会增加。
如果您有大量空闲 RAM 和大量空闲 CPU,请增加这些数字。
如果您的资源接近饱和,请保持原样。
使用优雅的重启
您说当 Apache 重启时,您的负载出现了“瞬间的极端峰值”。
这告诉我你可能没有使用优雅重启。
无论是什么导致 Apache 重新启动,将它发送SIGUSR1到 Apache 而不是SIGHUP(或天堂禁止,实际上停止和启动整个服务器)。与完全停止/启动的常规重启相比,这对系统的滥用和破坏性要小得多。
考虑其他MPM如果您在 Unix 系统上,
您几乎肯定会使用preforkMPM。
请考虑使用Worker MPM。
Worker MPM 的调优有点不同
花一些缓存
Apache 有缓存模块,可用于在 RAM 中保存经常访问的数据。这避免了频繁访问的数据到磁盘(或至少是文件系统层)的往返。
配置内存支持缓存可以为您提供相对少量内存的相当大的性能提升。
| 归档时间: |
|
| 查看次数: |
33414 次 |
| 最近记录: |