问题
2 apache
台服务器的响应时间很长,但我没有看到最大的CPU或内存。
详情
我为客户端提供了2个apache
服务器服务器静态内容。
Amazon Web Service
我试过
我正在使用ab
(apachebench)运行基准测试,但我看不到改进。
我的问题是:
amazon web services
带宽有问题吗?我的文件正在GlusterFS上的已安装目录中读取
使用ab(apache bench)收集的度量标准在同一网络上的EC2实例上运行
Connections: 500
Concurrency: 200
Server with files on mounted directory (files on glusterfs)
Request per second: 25.26
Time per request: 38.954
Transfer rate: 546.02
Server without files on mounted directory (files on local storage)
Request per second: 1282.62
Time per request: 0.780
Transfer rate: 27104.40
从安装目录(NFS或GlusterFS)读取资源(htmls,js,css,images)是否有可能显着降低的性能? Apache的性能?
由于
答案 0 :(得分:3)
提供大型静态资源绝对可能(实际上可能)可能会降低服务器速度。您必须在下载每个内容的整个时间打开Apache工作线程。文件越大,下载时间越长,线程打开的时间越长。在达到为Apache设置的任何内存限制之前,您可能达到了最大线程限制。
首先,我建议您将所有静态内容从服务器中移除到Cloudfront或类似的CDN中。这将使您的Web服务器只需要担心主Web请求。这可能会将每秒请求数(以及相关的开放Apache线程数)从10个请求/秒降低到类似.3个请求/秒(基于您的主要请求与辅助内容请求的30:1比率)。
减少超过一个数量级的服务请求数量肯定有助于服务器性能,并且可能允许您减少到单个服务器(或者如果您仍然需要多个服务器 - 这是一个好主意)可能会减少服务器的大小。
有一件事你会发现,基本上所有高容量网站都有一个共同点,那就是他们将静态内容提供给CDN。一旦你成为一个高容量网站,你必须绝对考虑这个(或者至少使用Nginx,Lighty或其他一些比Apache更适合提供静态内容的Web服务器来提供来自不同服务器的静态内容)。 / p>
卸载静态流量后,您可以真正开始担心调整Web服务器以处理主要请求。当你达到这一点时,你需要知道一些事情:
基于此,为调整最大线程设置提供了一个很好的起点,这是一个非常简单的公式。
说你有以下内容:
Apache memory: 4000KB
Avg. thread memory: 20KB
Avg. time per request: 0.5 s
这意味着您的配置可以按如下方式处理请求吞吐量:
100 requests/second = 4000kb / (20kb * 0.5 seconds/request )
由于每个请求平均为0.5秒,因此您可以假设需要50个线程来处理此吞吐量。
显然,你会想要设置高于50的最大线程来解决请求高峰等问题,但至少这为你提供了一个好的起点。
答案 1 :(得分:0)
结账Eric J.在这个主题中回答Amazon EC2 Bitnami Wordpress Extremely Slow