好的,我通过 1&1 的 VPS 托管一个网站,我担心进程耗尽。
Parallels 已将 numprocs 设置为 128,我遇到了一些问题,当我达到该限制时,我的网站会完全停止并抛出错误。目前我的 numprocs 为 52(还不错)。
每次有人查看我的网站时,Apache 是否会创建一个新进程?
所以如果有 200 人浏览我的网站,我就会有 200 个进程(导致网站崩溃)?
如果是的话有没有什么办法可以解决这个问题?
顺便说一句,我曾尝试让 1&1 提高该值,但他们坚持要求我升级软件包,但这太愚蠢了,因为我几乎没有占用我的 RAM、CPU 和存储空间。正是这个愚蠢的小参数导致了问题。
答案1
Apache 为每个请求创建一个子进程,以维护一定数量的可配置服务器。配置起来并不困难,但有点令人困惑。
看一眼:http://virtualthreads.blogspot.com/2006/01/tuning-apache-part-1.html
此外,nginx 非常适合 VPS,它非常轻量且功能强大。我会推荐它。
答案2
首先,您的技术问题:
所以我的问题是...每次有人查看我的网站时,Apache 是否会创建一个新进程?
不会,它会保留一定数量的服务器以准备接受新连接,并且通常对一次可以生成的服务器数量设置上限。这些服务器中的每一个都配置了其在终止之前可以处理的最大请求数。
这些项目在您的 apache 配置的 MPM 配置部分中配置。
所以如果有 200 人浏览我的网站,我就会有 200 个进程(导致网站崩溃)?
200 个并发请求?是的,在这种情况下(并且如果 Apache 配置为允许这么多的连接),Apache 将尝试启动工作程序来为这 200 个请求中的每一个提供服务,您将遇到问题。
如果是的话有没有什么办法可以解决这个问题?
不。
现在,谈谈您在使用他们的服务时遇到的问题:
您的提供商限制进程数的原因是他们的“VPS”服务不提供真正的 VPS。他们提供的服务更像是 BSD 风格的监狱。在这种情况下,特定主机上的所有客户机共享一个内核。正是出于这个原因,他们需要限制每个客户机可以启动的进程数 - 主机的内核需要跟踪每个客户机的所有进程,并设置限制以防止一个客户机实例对其他客户机生成新进程的能力产生负面影响。
我尝试让 1&1 提高价格,但他们坚持要求我升级套餐,但这太愚蠢了
他们提供的服务限制合理。如果你不喜欢,那就换个地方,换一个真实的VPS 提供商 - 为您提供自己的操作系统实例。我使用 Linode,非常喜欢它们,但还有很多其他选择。