Ubuntu Apache 服务器连接到互联网时速度变慢

Ubuntu Apache 服务器连接到互联网时速度变慢

我正在使用在 Ubuntu 上运行的 Apache 服务器来为内部 Web 应用程序提供服务。当服务器仅连接到本地网络时,它运行得很快。当我让它接受来自互联网的传入请求时,它变得非常慢,尽管访问日志显示它没有收到比仅连接到本地网络时更多的请求。这两种设置之间的唯一区别是,在第二种设置中,我让路由器将端口 80 转发到服务器。什么可能导致这样的速度变慢,我该如何防止它?

编辑:即使有客户端从互联网连接。此外,该网站总共只有 4 个用户,每个页面请求都服务于一个 html 页面、一个图像和一个非常小的 CSS 文件。

答案1

一个可能的原因是 Apache 服务器启用了“HostnameLookups”。这不会对本地网络造成延迟,但当从外部进行访问时可能会造成轻微延迟,因为它必须向名称服务器发送更多请求。

答案2

您的服务器是否对所有用户都变慢,还是只有通过互联网连接的用户变慢?这些用户是否恰好是互联网另一端的移动用户?

是的,您的互联网用户完全有可能拖慢整个主机的速度。假设您从连接的网络到服务器的链接速度为 30 毫秒,但来自外部用户的连接速度为 300 毫秒(平均)。与服务器的握手、发送数据、接收数据等将花费十倍的时间……堆栈的中断服务是有代价的,因为它是系统的最高优先级,导致应用程序在处理此高优先级网络活动时等待。让堆栈更长时间地忙碌,您将让 CPU 更长时间地忙于服务堆栈,从而导致其他所有用户的 CPU 更少。如果有大量本地用户访问您的网站,这种降级效果可能会特别明显。

您可以做以下一些事情:

  • 减少握手事件。如果您有多个样式表,请将它们合并。如果您有多个 Javascript 文件,请将它们合并。
  • 在您的服务器中引入压缩。较小的文件传输所需的时间更短
  • 采用有效的客户端缓存管理。积极减少初次握手后需要传输的文件数量。即使将缓存时效设为一周,您也应该会发现静态内容的请求级别显著下降。减少请求=减少服务器开销。
  • 优化您的图形。您是否需要在只有 256 种颜色的图形中使用 1500 万种调色板?优化的调色板可减小文件大小
  • 考虑使用其他图形格式,这种格式在压缩之前默认图形尺寸较小,例如 PNG
  • 内容分发?你可以使用几种模型,其中一种模型会使用前端缓存设备来处理大部分负载。看看开源前端的 Squid(你可以将其作为前端部署在托管提供商处)或任何类似 AKAMAI 的服务。甚至连 Google 也开始涉足内容分发领域
  • 简而言之,当您不得不花费大量时间为慢速链接用户提供网络中断服务时,big_site+small_pipe 会导致所有人的性能不佳。

    相关内容