我有一个 Debian VPS2 GB 内存这对于处理大件事情非常有用。但是最近我的网站经常宕机,我仍然无法确定具体原因。
最初我的内存为 512MB,这实在太小了,无法处理我的网站。正如我在日志中看到的,该网站至少使用了 450MB。我将内存升级到 2GB,希望这样可以解决所有问题,但什么也没发生。
然后我想可能是我的网站代码正在运行一个巨大的进程,因为事实确实如此。所以我重建了一个简单的系统来减少正在进行的庞大进程。然而,同样的问题仍然存在。
现在我想这可能是访客数量的问题。但是活跃访客甚至不到 30 人,甚至更少,2 GB 的 RAM 应该足以处理所有这些访客。查看网站停机时的 RAM 使用情况后,大约是 2GB 中的 400-500MB,所以对我来说,这证实了这不是 RAM 的问题。
所以我现在真的很困惑。还能是什么呢?
Apache 错误日志都是关于我的 PHP 文件通知和一些与 Apache 宕机无关的不重要内容,但是我确信这只是 Apache 的问题,因为当网站关闭时 SSH 仍能连接并完美运行。
预计会出现哪些问题或需要检查其他内容?这可能是 Apache 对访问者使用的限制吗?
答案1
虽然我对 TCP 握手或其他网络问题的情况了解甚少,但似乎(通过你的评论) 意味着apache.conf
您有超过 10 个用户尝试同时处理,并且您的MaxClients
指令太低而无法处理您的流量。我会增加这个数字。由于我不知道您的服务器接收什么样的流量,我会将值设置为至少 50,如果负载测试出现问题,我会增加它。您可以使用免费服务运行负载测试,例如负荷冲击. [无隶属关系]
从http://httpd.apache.org/docs/2.2/mod/mpm_common.html#maxclients:
MaxClients 指令设置同时处理的请求数限制。任何超过 MaxClients 限制的连接尝试都将通常要排队[强调我的],根据 ListenBacklog 指令最多可达一个数字。一旦子进程在不同请求结束时被释放,连接将得到服务。
您的连接似乎处于“挂起”状态,因为它们正在排队等待处理,但我并不怀疑您的服务器可以同时处理一些连接。