![将 eAccelerator 缓存目录放入 RAM 是否可取?](https://linux22.com/image/597472/%E5%B0%86%20eAccelerator%20%E7%BC%93%E5%AD%98%E7%9B%AE%E5%BD%95%E6%94%BE%E5%85%A5%20RAM%20%E6%98%AF%E5%90%A6%E5%8F%AF%E5%8F%96%EF%BC%9F.png)
我刚刚在将要运行 Magento 的服务器上安装了 eaccelerator。我有一个硬盘,所以想知道如果我将 eaccelerator 缓存目录安装到 RAM,我的服务器性能是否会提高。有什么缺点吗?我有 16G 的 RAM,所以我不认为分配 256M 的 eaccelerator 目录大小会对它产生负面影响。
谢谢
答案1
可能没什么用,除非它自己的内存管理很差。
eAccelerator 将编译后的 PHP 脚本存储在共享内存中,并直接从中执行代码。它在缓存中搜索编译后的 PHP 脚本时,只会在短时间内创建锁定,因此一个脚本可由多个引擎同时执行。共享内存中容纳不了的文件仅缓存在磁盘上。
https://github.com/eaccelerator/eaccelerator/wiki
编辑- 添加超出评论的内存设置的注释。
默认情况下eaccelerator 将为操作系统分配可用的“共享内存”
; The amount of shared memory (in megabytes) that eAccelerator will use.
; "0" means OS default. Default value is "0".
eaccelerator.shm_size = "0"
Linux 机器很可能是 32MB (33554432 字节):
$ sudo sysctl -a | grep kernel.shm
kernel.shmmax = 33554432
kernel.shmall = 2097152
kernel.shmmni = 4096
kernel.shm_rmid_forced = 0
我怀疑您编译后的代码是否能达到这个大小,也许如果您为许多人运行大量虚拟主机并且拥有大量 PHP 的话?似乎所有对存储额外“会话数据”和“用户数据”的支持都已从 eAccelerator 中删除,因此您不必担心任何这些。
如果您将共享内存重新配置得更高一些,那么您不太可能填满甚至触及 256MB 的磁盘。我甚至想关闭磁盘缓存,因为eaccelerator.shm_only = "1"
您说的是,当增加从磁盘获取编译代码的延迟时,收益会减少。找出答案的最佳方法是在设置网站时对其进行一些生产负载测试。