首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >APC -调谐apc.mmap_file_mask

APC -调谐apc.mmap_file_mask
EN

Server Fault用户
提问于 2015-06-01 23:55:03
回答 1查看 1.5K关注 0票数 1

当将APC配置为PHP操作码缓存时,有一个名为apc.mmap_file_mask的配置设置。根据我所读到的,有三种方法可以配置它,但我并不真正理解每种方法的含义。

  1. /tmp/apc.XXXXXX -(默认)“文件支持的mmap”
  2. /tmp/apc.shm.XXXXXX -使用“POSIX-风格shm_open/mmap”
  3. /dev/零--“使用内核的/dev/零接口来匿名mmap‘’ed内存”

来源:http://php.net/manual/en/apc.configuration.php#ini.apc.mmap-file-mask

有人能对这些和他们的建议发表评论吗?我猜会有内存使用和性能方面的影响,也许还有安全问题,但我不知道是否是这样?从我完成的阅读中,我假设#2和#3更快,但我认为APC已经在使用共享内存了(就像apc.shm_size设置的那样),所以我不明白。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2015-06-11 19:44:34

/tmp/apc.XXXXXX ->这个mmap文件掩码是一个基于mmap的普通文件系统,它使用mkstemp创建一个唯一的临时文件,这个文件是mmap的。6‘X被唯一的字符串替换,使文件名唯一。这只是将数据写入文件系统中的一个文件。

/tmp/apc.shm.XXXXXX ->注意到it_must_在linux系统上仅为/apc.shm.XXXXXX。与直接文件支持的mmap不同的是,这种机制通过mktemp()调用创建一个临时文件,并调用shm_open()来创建和打开一个新的或者打开一个现有的POSIX共享内存对象。POSIX共享内存对象实际上是一个句柄,不相关的进程可以使用该句柄映射共享内存的同一区域。我以前没有尝试过这种方法,但是我认为它至少可以达到3‘X(所以apc.shml.XXX也应该能工作)。

/dev/零-> mmap‘’ing /dev/zero是一个匿名内存映射,这意味着它的内存对象没有关联的文件,所有的内容都初始化为零。如果不指定mmap_file_mask,APC将使用匿名映射(带有标志MAP_SHARED和MAP_ANON)。因此,指定/dev/zero与不指定mmap_file_mask是等价的,因为它们都是匿名映射。从历史上看,在Linux2.4内核版本之前,MAP_SHARED和MAP_ANON在一起并不支持。

就性能而言,3将是最好的,因为文件支持的mmap‘’ing有相当多的磁盘I/O,所以,3必须是最快的,因为它没有备份文件,并且是实际内存本身的一部分,最后是2和1。然而,这只是理论和实践的基准跨各种配置才能证明的现实。但是,匿名映射(也就是共享内存映射)的缺点是mmap的内存在应用程序执行之间不持久,从而在重启时释放缓存。

票数 5
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/695948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档