由于真正的HTTP请求常常是混合了静态请求和动态页面请求,那么很难调整Apache的设置使其既能适合静态网页请求,又能适合动态网页请求。为了提升Web服务的性能,还可以使用多个服务器,来帮助提升服务器性能。
- 代理服务器的加速模式
由于Squid不会带来很大的CPU负载,因此不必要让Squid单独运行在一台服务器上,可以让Squid 和Apache服务器同时运行在一台服务器上,这样通过对磁盘I/O产生一些额外的负载,但能有效的增加静态网页的服务能力。
请查看Squid的手册以得到如何设置加速模式的方法,Squid软件包含在FreeBSD的Packages Collection中。
- 分离静态网页服务器和动态网页服务器
由于Apache提供静态网页的服务能力不佳,那么可以将静态请求交给效率较高的服务器软件,如thttpd ,而动态请求较给Apache服务器来执行处理。这样的缺点就是其他的简易Web服务器不能提供Apache服务器一样的丰富功能,因此虽然这样做会提升效率,但一般并不建议这样设置服务器。
考虑到Apache服务器的设置因素,如果设置合适,Apache服务器本身就能提供高效的静态页面服务,只是当静态页面和动态页面混合的时候,就无法决定最优设置。尤其是当Apache支持了一些特定模块的时候,这些模块将使用大量的内存(例如一个mod_perl可能占据10M以上的内存空间),使得即使这个服务器是提供静态网页服务时,也要占用那么多内存,这样就使得为动态网页定制的设置完全不适合静态网页。
因此为了解决服务器的不同情况下的优化设置不同的问题,就可以在一台计算机同时运行两个Apache服务器,一个比较纯粹,没有支持额外的模块,只是为了和第二个服务器协作,需要支持proxy模块,用于支持静态网页,同时提供对第二个Apache服务器的代理请求,第二个Apache服务器可以载入复杂的模块,以支持动态网页。
两个Apache服务器可以根据不同的需要,进行不同的参数调整。第一个Apache服务器只进行静态网页服务和代理服务,因此可以将MaxClients设置的较大,而第二个Apache服务器要提供消耗处理器能力的动态网页服务,因此就要将MaxClients设置的较小。此时在第一个Apache服务器上设置其代理功能,虽然Apache 的代理能力比不上Squid优秀,然而这简化了服务器的种类,并能使用同一的访问控制手段。
