4

我的网站上有一些图像和一个 css 文件在服务器上不存在,因此每次访问者访问时,Apache 都会在其日志中引发 3 404 错误。项目隐藏在页面上,因此不影响页面的显示。我们的站点在测试和生产环境中表现良好。我们最近收到了每天 30,000-40,000 访问者的 2 天流量高峰,而 apache 减速停止,等待 22-25 秒,然后将任何内容返回到浏览器。

页面上抛出的 404 错误会改变服务器性能吗?

404 错误是否比正常请求更占用资源?

任何信息:Apache 处理 404 错误的方式将不胜感激。

谢谢, Sj

4

3 回答 3

2

根据网站前端工程的雅虎说明

*没有 404s

HTTP 请求很昂贵,因此发出 HTTP 请求并获得无用的响应(即 404 Not Found)是完全没有必要的,并且会减慢用户体验而没有任何好处。一些网站有有用的 404 “你是说 X 吗?”,这对用户体验很有帮助,但也浪费了服务器资源(如数据库等)。特别糟糕的是外部 JavaScript 的链接错误,结果是 404。首先,此下载将阻止并行下载。接下来,浏览器可能会尝试解析 404 响应主体,就好像它是 JavaScript 代码一样,试图在其中找到可用的内容。*

回到您的问题:错误 404 在最坏的情况下会导致您的机器停止。

于 2012-03-30T11:51:32.217 回答
0

正如评论者 ajreal 所说,服务文档会增加资源分配,但任何响应请求的服务器都会获取一些资源。

于 2010-12-10T18:34:22.617 回答
0

Apache 作为对任何用户交互的响应而执行的任何操作都会导致其他用户的性能下降,即使它非常小 - 它几乎是不可见的。

软件(内存方面)和硬件(物理限制和容量方面)都将执行几个操作来正确回答和/或记录用户交互。

在这种情况下,当您的用户(30,000-40,000)访问该站点时,Apache 仍然需要记录所有这些错误,以便满足配置设置的日志记录首选项。由于日志文件只是 gard 磁盘上的一个文本文件,因此硬盘太忙,无法对实际站点内容执行读写操作。

如果 Apache 将 404 错误作为文档抛出,服务器的负载会更高。在任何情况下,提高服务器性能的最佳方法是完全消除任何 404 错误。

您还可以将 Apache 配置文件中的 MaxRequestsPerChild 参数增加到 1000 左右,以减少从一个中央 Apache 进程到多个子进程的压力。这将允许多个 Apache 进程同时跨越新进程,从而增加所有 CPU 内核的压力,而不仅仅是一个。

有这么多访问者,我还建议您将 Apache 配置的 MPM 更改为以下内容:

<IfModule prefork.c>
StartServers       2
MinSpareServers    2
MaxSpareServers    5
ServerLimit        100
MaxClients         100
MaxRequestsPerChild  4000
</IfModule>
于 2011-03-21T15:09:13.883 回答