Closed marspalepurple closed 8 years ago
我在多台机器(web,后台定时job)使用yac共享了一些配置(Shared memory model => mmap)。 在nmap.c中,yac申请了匿名共享内存: first_segment.common.p = mmap(0, allocate_size, PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0); 所以在fpm模式,多个php请求可以共享yac中的配置缓存,但是在定时任务服务器,多个php定时任务是不能共享yac中的配置缓存。 这样定时job服务器就不能使用yac缓存配置信息了,和web不统一。
first_segment.common.p = mmap(0, allocate_size, PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
如果暴力的修改nmap.c参数,多个没有亲缘关系的进程共享一个fd,取消MAP_ANONYMOUS,不知道会不会有什么风险..
确实困扰了好久,放弃cli下使用了,烦请鸟哥帮忙解答
Yac不适合你的场景, 你可以考虑memcached, 或者其他的. yac的定义就是同族进程间共享cache
我在多台机器(web,后台定时job)使用yac共享了一些配置(Shared memory model => mmap)。 在nmap.c中,yac申请了匿名共享内存:
first_segment.common.p = mmap(0, allocate_size, PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
所以在fpm模式,多个php请求可以共享yac中的配置缓存,但是在定时任务服务器,多个php定时任务是不能共享yac中的配置缓存。 这样定时job服务器就不能使用yac缓存配置信息了,和web不统一。如果暴力的修改nmap.c参数,多个没有亲缘关系的进程共享一个fd,取消MAP_ANONYMOUS,不知道会不会有什么风险..