Apache 工作器在超过 3,000 名用户后崩溃

Apache 工作器在超过 3,000 名用户后崩溃

我在我的 VPS 上激活了 Apache Worker,但遇到了问题,因为当 3000 个用户访问网站时,网站会崩溃。我正在使用http://whos.amung.us/stats/2jzwlvbhvpft/作为反击。

我的 Apache Worker 配置:

KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 1

<IfModule mpm_worker_module>
ServerLimit 20000
StartServer 8000
MinSpareThreads 10400
MaxSpareThreads 14200
ThreadLimit 5
ThreadsPerChild 5
MaxClients 20000
MaxRequestsPerChild 0
</IfModule>

VPS 具有 SO:Debian 64 LAMP,内存:14gb 和 CPU:24ghz

我要怎么做才能发挥出最佳表现?

答案1

首先尝试一下此配置(对于 VPS 服务器来说相当多):

MaxClients 2000
ThreadsPerChild 50
ServerLimit 40

这为您提供了 2000 个线程和 40 个进程(每个进程 50 个线程),可同时处理最多 2000 个客户端。如果您想将 ThreadsPerChild 的值增加到大于 64,请不要忘记同时更改 ThreadLimit。

答案2

看起来您的内存正在耗尽,并且 apache 正在崩溃,因为它使用的内存超过了可用内存。

我对 worker mpm 不是很熟悉,但我认为您的配置远远超出了您的可用内存。

例如,每个进程有 5 个线程,MaxClient 为 20000 个。这意味着要为 Max 客户端提供服务,您需要20000/5=4000并发 Apache 进程。考虑到 13 GB 内存(系统内存为 1 GB),Apache 进程大小平均为 15MB,您只能为大约 4300 个客户端提供服务。

我假设你也在那里运行数据库。这使得 Apache 在客户端数量达到 3000 左右时死机也是合乎情理的。

您应该按照@David Schwartz 的建议减少 MaxClients 和 MinSpareThreads 的数量。

相关内容