所以我有一个带宽非常高的服务器的客户端。 它的服务在需求方面非常轻便 – 静态JPEG和文本。
服务器规格:
我目前得到的Apacheconfiguration如下:
上周我看到每秒钟有2000-3000个apache访问,没有问题。 这被翻译成80-90Mbps的速度上升,负载在1左右,峰值在5左右,而当apache重新启动并重新生成所有进程时,会出现30-50的瞬时极值峰值。 内存使用量约为40GB。 stream量增加了,现在我看到每秒有3000-4000个apache访问,http不稳定。 尽pipeapache偶尔会重新启动,但我正在运行apache并没有http连接,并且有闲置的工作人员和空闲插槽。 当稳定和频繁扣球时,负荷是2左右,这无疑是我的连接问题,但我不知道为什么。 内存使用量是50-60GB。 吞吐量约为130Mbps。 (我不确定当我的软件包是100Mbps的时候,我怎么会超过100Mbps,但是我现在有了一张与DC有关的票据来询问他们是否因为我的使用而丢弃了数据包,但是,解释我的稳定性问题,除非艾克正在下降,离开联系超时…也许…不知道…从来没有想过这个思想背后的理论,直到现在)
我正在寻找意见,如果我已经达到了可以处理的apache的操作,或者是有一些其他的系统限制,我可能超过。
有人告诉我LiteSpeed是解决scheme,但是我没有经验,而且我的客户听到不好的东西,所以也有意见。
谢谢大家!
首先,除了Apache,nginx或LightSpeed之外 – 如果您运行2000-3000个请求/秒的服务器,现在可以开始考虑双服务器和负载均衡了。 根据你所提供的服务,你可以很容易地从这些服务器中获得更多的信息,但是在这些服务器上,你提供了一些重要的(或者至less是高stream量的)服务,所以你需要冗余,除了处理一时加载尖峰。
开始认真考虑负载均衡基础设施(这里有很多关于HAProxy等的问题/答案,Google也可以帮助你)。
也就是说,我不相信你已经达到了Apache的操作限制。
您当然可以考虑其他高性能Web服务器(nginx非常stream行),或者您可以考虑调整您的Apacheconfiguration以获得更好的性能。
根据我在你的问题中看到的一些Apachebuild议:
在做其他事情之前,请阅读Apache性能调优文档 。
MaxRequestsPerChild
实际上仅用于包含资源泄漏。
100(你现在的价值)绝对是疯狂的。 你正在搅动杀死性能的进程。
0(永远不要杀死一个孩子)当然是可行的,如果你所服务的是静态资源。
万万(默认值)在几乎所有情况下都是好的。 50000(五万)是我用于纯静态HTML网站。
可以调整StartServers
, MinSpareServers
和MaxSpareServers
。
我通常将StartServers
和MinSpareServers
设置为相同的值。
如果有一个特定的最小数量的备用服务器要保持,那就是你应该开始的数字。 一个很好的价值是你的低水位同时活动连接。
MaxSpareServers
应设置为同时活动连接的高水位标记的75-80%。
ServerLimit
和MaxClients
可能会增加。
如果你有很多可用的RAM和大量的空闲CPU,增加这些数字。
如果您运行的资源接近饱和,请保持原样。
使用平稳重启
你说你在Apache重新启动的时候在你的负载中看到了“瞬间的极端高峰”。
这告诉我你可能没有使用优雅的重新启动。
无论是什么导致Apache重新启动,它发送SIGUSR1
到Apache而不是SIGHUP
(或天堂禁止,实际上停止和启动整个服务器)。 与定期重新启动完全停止/启动相比,这对系统的滥用和干扰要小得多。
考虑其他MPM
如果你在Unix系统上,你几乎可以肯定地使用prefork
MPM 。
考虑工人 MPM来代替。
调教工人MPM是有点不同
花一些caching
Apache有caching模块 ,可以用来保存经常访问的数据在RAM中。 这避免了往往访问磁盘(或至less文件系统层)的频繁访问的数据。
configuration内存支持的caching可以为相对较less的内存提供相当大的性能提升。