Eaccelerator的配置

网上搜索"eaccelerator 配置"能找出一大把雷同文章,我就不再虚构了。只说说其中"eaccelerator.shm_size"的配置。

老一点的文章,一般都教大家在php.ini中配置eaccelerator参数:

eaccelerator.shm_size = "16"

这里的数字单位是MB,意思是Eac可以使用16MB的共享内存;新一点的配置文件告诉大家设置成32。如果服务器上只有一个不大的PHP程序在运行,那差不多够了。像我这个VPS上啥破玩意儿都有,32MB的内存就不够,就让eaccelerator的预编译功能大打折扣。对我这种内存空余,CPU吃紧的VPS,可以尝试增大eaccelerator.shm_size的值。

简单修改php.ini中的eaccelerator配置是不行的,我试过改成64,得到错误:

eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax.
PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0

这时候连apache都启动不了。因为Linux内核2.6.x中共享内存的默认值是32MB,需要修改shmmax,命令如下:

echo 67108864 > /proc/sys/kernel/shmmax

echo后面的数字单位是byte,上面例子中的大小是64MB,修改之后重启apache就可以了,但这并不是一劳永逸的。如果整个服务器一旦被重启的话,shmmax值会被还原到33554432。我们最好修改/etc/sysctl.conf,找到该文件里面的:

# kernel.shmmax = ....

一般是注解掉了,去掉'#'注解,在等号后面输入你想要的数值,单位为byte。然后再重启整个服务器就可以了。

如何确定Eaccelerator到底是用多少共享内存?这是一个问题。我偶然发现Joomla对eaccelerator的支持非常好,在管理后台--Help--System Info--PHP Information中可以清楚的看到eac使用了多少共享内存。

LAMP

Email: i at onepx dot com || QQ: ⑧九零三④幺 || 微信: onepxcom
©2023 一像素 蜀ICP备13026576号-2 网站地图