龙空技术网

web中间件Apache的性能调优

测试程序猿 236

前言:

当前兄弟们对“apache访问量控制”大体比较重视,你们都想要了解一些“apache访问量控制”的相关内容。那么小编也在网上网罗了一些关于“apache访问量控制””的相关资讯,希望看官们能喜欢,兄弟们一起来了解一下吧!

上篇文章讲了nginx,在Web中间件中,除了Nginx外,另一个用得最多的中间件就是Apache。有的人可能不知道他和tomcat的区别。

apache nginx 是http server

Django tomcat 是application server

并发、流量少的时候, 直接使用application server 就可以。上量之后,需要由专门的http server来处理静态资源及请求分发。

1.Apache的工作模式选择和进程数调优

Apache比较稳定的工作模式有prefork模式、worker模式、event模式。

prefork工作模式:在收到请求后的处理过程如下图,从图中可以看到处理过程是单进程和单线程的方式,由于不存在线程安全问题,所以适合没有线程安全的程序。缺点是无法处理高并发的场景

worker模式:使用了多进程和多线程相结合的混合模式来处理请求。需要考虑线程安全问题。

event模式:和worker工作模式有点类似。在event工作模式中,会有一些专门的线程来承担管理和分配线程的工作,通过这种方法解决了HTTP请求keep-alive长连接的时候占用线程资源被浪费的问题

2.Apache的KeepAlive调优

HTTP请求中开启KeepAlive选项相当于长连接的作用,多次HTTP请求共用一个TCP连接来完成,这样可以节约网络和系统资源。

适用于如下场景:

如果有较多的静态资源(例如JS、CSS、图片等)需要访问,则建议开启长连接。

如果并发请求非常大,频繁地出现连接建立和连接关闭,则建议开启长连接。

如果出现这种情况可以考虑关闭KeepAlive选项:服务器内存较少并且存在大量的动态请求或者文件访问,则建议关闭长连接以节省系统内存和提高Apache访问的稳定性。

有的人不知道TCP和http请求的区别,下面简单说一下。下图中可以发现一个完整的HTTP事务,有链接的建立,请求的发送,响应接收,断开链接这四个过程,早期通过HTTP协议传输的数据以文本为主,一个请求可能就把所有要返回的数据取到,但是,现在要展现一张完整的页面需要很多个请求才能完成,如图片.JS.CSS等,如果每一个HTTP请求都需要新建并断开一个TCP,这个开销是完全没有必要的。

开启HTTP Keep-Alive之后,能复用已有的TCP链接,当前一个请求已经响应完毕,服务器端没有立即关闭TCP链接,而是等待一段时间接收浏览器端可能发送过来的第二个请求,通常浏览器在第一个请求返回之后会立即发送第二个请求,如果某一时刻只能有一个链接,同一个TCP链接处理的请求越多,开启KeepAlive能节省的TCP建立和关闭的消耗就越多

3.Apache的ab压力测试工具

ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机

4.Apache的性能监控

Apache自身自带了状态监控页面,但是默认是关闭的,可以通过在httpd.conf中增加相应配置来打开监控页面。

然后就可以通过访问‐status来查看监控页面了。

可以看到Apache的访问量,CPU使用情况等信息。

标签: #apache访问量控制