我正在使用在Ubuntu上运行的Apache服务器来提供内部Web应用程序。 当服务器只连接到本地networking时,运行速度很快。 当我让它接受来自互联网的传入请求时,即使访问日志显示它没有收到更多的请求,也比只连接到本地networking时要慢。 这两个设置唯一的区别是,在第二个我有路由器转发端口80到服务器。 有什么可能导致像这样的放缓,我怎样才能防止呢?
编辑:即使有零客户端连接从互联网服务器是缓慢的。 此外,这个网站只有4个用户,每个页面请求服务一个HTML页面,一个图像,和一个非常小的CSS文件。
一个可能的原因可能是如果为Apache服务器启用了“HostnameLookups”。 这将导致本地networking无延迟,但是当从外部访问时可能会稍微延迟,因为它必须向名称服务器发送更多的请求。
您的服务器对所有用户来说是缓慢还是只有从互联网连接的用户? 这些用户是否偶然从互联网上移动用户?
是的,您的互联网用户完全有可能放慢您的整个主机。 假设从连接networking到服务器的链接速度是30毫秒,但与外部用户的连接速度是300毫秒(平均)。 这将花费十倍的时间与服务器进行握手,发送数据,接收数据等等。这个堆栈的中断服务带有价格标签,因为它是系统的最高优先级导致应用程序等待处理这个高优先级的networking活动。 保持堆栈的繁忙时间更长,并且保持CPU忙于更长的时间来处理堆栈,因此其他用户的CPU就会更less。 如果您有许多本地用户访问您的网站,则可能会特别明显地降低效果。
有一些事情可以做:
简而言之,当你不得不为慢速链接用户花费那么多的时间来处理networking中断时,big_site + small_pipe是所有人性能差的秘诀。