Chinaunix首页 | 论坛 | 博客
  • 博客访问: 397245
  • 博文数量: 99
  • 博客积分: 5134
  • 博客等级: 大校
  • 技术积分: 1607
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 09:31
文章分类

全部博文(99)

文章存档

2011年(48)

2010年(40)

2009年(10)

2008年(1)

分类: LINUX

2010-08-19 17:10:39

cache模块每个进程占用一个单独的内存空间存储cache内容。如用此模块建议用worker模式,减少进程数量,增加线程数量。




apache编译的时候没有启用cache功能,默认情况下,apache完以后,是不允许被cache的。访问量大增,需要cache功能,重新编译:

[-]#/usr/local/apache2/bin/apxs -cia mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c

 

mod_disk_cache.c

mod_mem_cache.c

会在/usr/local/apache2/modules下自动生成mod_cache.so,mod_disk_cache.so和mod_mem_cache.so

 

httpd.conf配置以及详解如下

 

LoadModule cache_module modules/mod_cache.so

LoadModule disk_cache_module modules/mod_disk_cache.so

LoadModule mem_cache_module modules/mod_mem_cache.so

 

CacheForceCompletion 100

CacheDefaultEXPire 3600

CacheMaxExpire 86400

CacheLastModifiedFactor 0.1

 

CacheEnable disk /

CacheRoot “/var/cache/mod_proxy”

CacheSize 327680

CacheDirLength 4

CacheDirLevels 5

CacheGcInterval 4

CacheEnable mem /

MCacheSize 8192

MCacheMaxObjectCount 10000

MCacheMinObjectSize 1

MCacheMaxObjectSize 51200

 

 

####################################################

参考数据

mod_cache

CacheEnable: 启动 mod_cache,其后接两个参数。第一个参数指定快取的种类,应设为 mem (内存快取 disk (磁盘高速缓存之其一;第二个参数指定使用快取的 URI 路径,如果对整个网XP (或虚拟主机进行快取,简单指定为根目录(/) 即可。

CacheForceCompletion: 这个值指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)

CacheDefaultExpire: 指定快取的预设过期秒数;默认值是一小时(3600)

CacheMaxExpire: 指定快取最大的过期秒数;默认值是一天(86400)

CacheLastModifiedFactor: 用来从响应里 Last Modified 信息算出expir date。计算方式是:expire period (过期时距) = 最后更新后至今的时间间距 *CacheLastModifiedFactorexpire date = 目前时间 + expire period不过无论如何,过期时间不能超过CacheMaxExpire 的设定值。

 

mod_disk_cache

CacheRoot: 指定磁盘高速缓存所使用的目录。

CacheSize:  KByte 为单位指定快取使用的磁盘空间大小。

CacheDirLength: 指定各目录 (的键值存在于快取阶层 (hierarchy)中所使用的字符数。

CacheDirLevels: 指定快取的目录层数; CacheDirLength 与此CacheDirLevels设定值相乘不能超过 20

CacheGcInterval: 指定收垃圾 (Garbage Collection) 的动作间隔时间;单位是小时。不过根据 Apache2 文件,这个指令还 没有被实作 

mod_mem_cache

MCacheSize:  KByte 为单位指定快取使用的内存空间大小。

MCacheMaxObjectCount: 指定快取对象数目的最大值;默认值是1009

MCacheMaxObjectSize: 指定最大可快取对象的大小,单位是Byte;默认值是10000 (Bytes)

MCacheMinObjectSize: 指定最小可快取对象的大小,单位是Byte;默认值是 (Bytes)

 

配apache mod_cache 后 httpd -k start

apache出现以下信息:

Cannot load /usr/local/apache/modules/mod_cache.so into server: /usr/local/apache/modules/mod_cache.so: undefined symbol: cache_generate_key_default

正规解决方案:

modules/cache下面有很多的.c文件,大致用途如:
mod_cache.c 编译得到mod_cache.so 主要用来控制整个apache的cache功能。
mod_file_cache.c,mod_mem_cache.c,mod_disk_cache.c这个三个文件编译后得到各自的cache支持模块。

mod_cache.c还需要其他的程序来进行工作,包括cache_*.c这些文件。因此apxs动态加载一个模块的时候,需要把这些文件和mod_cache.c 一起编译:/usr/local/apache2/bin/apxs -cia mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c









For a quick test of the apxs mechanism you can create a sample Apache module template plus a corresponding Makefile via:

$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _

Then you can immediately compile this sample module into a shared object and load it into the Apache server:

$ cd foo
$ make all reload
apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules ... chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/conf/httpd.conf]
apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$

httpd  -M                 : a synonym for -t -D DUMP_MODULES
阅读(1506) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~