如今INTERNET内容大量增长,为了获取更多的HTML内容,使得浏览更为流畅,不断增加网络流量和更高宽带的连接才能满足这个要求。网络加速已经对WEB服务产生了严重的影响。

 

为满足越来越多的新需求,最新发布的操作系统和WEB服务器在伸缩性和性能上有了重大的提升,这样,同样的计算能力,如今的web服务器系统可以支撑起更高的用户负载。
Solaris网络缓存和加速器(NCA)技术亦即是为了增加服务能力来满足如今WEB服务。
注意:如果图片无法显示,请访问我的豆丁文档:

Solaris NCA简介
Solaris NCA软件通过维护一个kernel内的web页缓存,这些web页是最近HTTP请求访问过的web页,从而提高web服务器的性能。
当一个用户请求一个HTML页时,如果刚好该页就在Solaris的NCA缓存里,那么这个web页就可以直接提供给用户,而无需web服务器的介入。这个就能使得web服务器性能有了长足的提高,因为从缓存里获取web页,服务器所处理的指令更少,花费时间更少。当服务器请求一个页面处理时,Solaris NCA也结合了其他提高性能的设计变化。
Solaris NCA历史
Solaris NCA在Solaris 8操作系统中第一次被引入,是个基于DOORs接口的web服务
Solaris 8 OE,update 7/01中,NCA套接字接口被引入,这个心接口允许Solaris NCA可以和最流行的WEB服务器一起运行,这个版本的solaris 8同时引入sendfilev()系统调用,该调用允许应用程序可以发送多个厂商或者数据和文件的描述符给Solaris NCA
NCA增加了多服务器实例的支持
 
Solaris NCA的重要性
Solaris NCA 主要功能:
增强服务器能力,WEB服务器利用NCA在单位秒内可处理更多用户web页的请求
更好的投资回报(ROI):服务器计算能力增强,减少了计算机扩容的需求
 
如何使用solaris NCA网络缓存和加速器
Solaris NCA的实现全部包含在solaris操作系统内,无需任何硬件的支持。
Solaris NCA 架构
主要有以下几个部分组成:
基于Solaris NCA技术的web服务器:httpd
内核模块:ncakmod
a.       nackmod内核模块在系统内存中维护web页的缓存cache,也使用套接字接口(AF_NCA套接字类型)和web服务器httpd通讯
b.       nackmod内核模块也提供日志工具,记录HTTP缓存命中的日志
Solaris NCA 工作原理
         在没有Solaris NCA情况下,所有的数据流是通过IP和TCP协议层从网卡到web服务器。如下图所示,一旦Solaris NCA起作用的话,在客户端和web服务器端之间的用户请求数据流将是如下所述:
1.       从客户端向web服务器发出一个HTTP的请求
2.       客户端来的Packet命中Solaris NCA Switch
3.       Solaris NCA Switch查询出端口号,并判断进来的数据包是否为NCA(dport=80)或者IP
4.       Solaris NCA IP(为solaris NCA优化过的),则处理该数据包
5.       Solaris NCA TCP(为Solaris NCA优化过的),则进行连接或者创建一个新连接,将数据包转发给HTTP Parser
6.       HTTP引擎分解数据包,同时缓存管理器检查kernel缓存,看看其是否为静态请求并且所请求也已在缓存里
7.       如果所请求也在缓存里,则内核缓存的web页将被返回
8.       如果所请求也不在缓存里,则web服务器将接受请求获取web页或者更新之
9.       依据HTTP协议使用规则,决定web页被缓存与否,并将其返回给客户端,如果HTTP请求里面包含了No-cache报文头的话,则该页无需缓存。
使用Solaris NCA的时机
         Solaris NCA应该运行在专用的web服务器上,如果在同一服务器上,有应用需使用大量CPU和memory的话,同时运行NCA可能会带来一些问题。
Web 服务器的支持
         Solaris NCA使用套接字接口,只要作很小的改动就能和web服务器通讯,NCA可以和大多数主流的web服务器一起很好地工作,如SUN ONE WEB SERVER、Apache、AOL以及Zeus,并不需要做太多的改动,要做的改动也只是修改一些配置文件,而不是源代码!
 
Solaris 网络缓存和加速器规划和实现
系统要求
256M bytes RAM
Solaris 8 OE, update 7/01及以后版本
安装和配置
运行库
如果web服务器不使用本地的SolarisNCA套接字接口(套接字类型AF_NCA/PF_NCA, ncad_addr.so),那么可以使用预先加载的方式,具体方法是在web服务器的启动脚本里面加入以下一行:
LD_PRELOAD=/usr/lib/ncad_addr.so/usr/sbin/httpd
Web服务器使用NCA的具体配置
1.       注册接口
在/etc/nca/nca.if文件里加入每一个物理网卡的名字,比如hme0,hme1,nxge0等
对于每一个网络接口,在/etc/hosts文件里面必须有对应的主机名对应,也就需要对每个网卡有一个能解析的主机名,以及其对应的IP地址。
2.       启动ncakmod内核模块
该步骤完成时在/etc/nca/ncakmod.conf文件里完成:
# NCA Kernel Module Configuration File
status=enabled
#(将该status状态改为enable即可)
httpd_door_path=/var/run/nca_httpd_1.door
ncad_status=disabled
nca_active=disabled
3.       启用NCA logging日志功能
修改一下/etc/nca/ncalogd.conf文件中的status为enable
# NCA Logging Configuration File
#
status=enabled
logd_path_name="/var/nca/log"
logd_file_size=1000000
                  
                   关闭NCA以及NCA logging功能与以上开启类似,只是在关闭后,需要reboot服务器。