全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 4946|回复: 6
打印 上一主题 下一主题

[疑问] FastCGI下ZendOpcache好浪费内存

[复制链接]
跳转到指定楼层
1#
发表于 2014-6-19 04:51:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 阔空晴云 于 2014-6-19 05:06 编辑

刚刚在nginx的php下配置了ZendOpcache,结果重新加载PHP的时候,部分php-fpm进程无法启动,所有网站都是502错误,我开始以为是php.ini配置有问题,搞了半天,结果一看内存使用,卧槽,直接爆满了。

然后推敲了一下才发现这个问题:

PHP-FPM模式下,即便是同一个网站,PHP进程也可能有很多个。如果我把ZendOpcache的内存缓存大小设置为64M,那么3个进程就要占用192MB了。。。

而我用的是AMH面板,默认一个网站分配3个PHP-FPM进程,而我那个VPS上放了6个小流量网站,总共就是18个进程,光是ZendOpcache缓存都要占用18*64=1152MB内存,而我的VPS只有1G内存,所以。。。PHP启动不了了。。

同一个网站,PHP的代码缓存重叠应该很多,但由于是多个进程,PHP进程之间的内存是独立的,造成同一个PHP文件的Code缓存可能会有多个内存副本(每个PHP进程一个),造成了很大的内存浪费。

apache好像就没有这个问题。

所以,如果你用nginx(比如你用的AMH)面板,那么当你使用内存缓存器的时候,一定要注意合理设置缓存大小,特别是那种一个VPS放多个网站的,稍不注意就502了。而对于只会用面板的小白而言,谨慎安装缓存器(包括zend,xcache等等),否则可能面板都进不去了。

另外说一下,AMH模块里面的那个ZendOpcache模块,安装以后缓存大小配置的是64M,所以安装之前你得先计算好你现在有多少网站,开了ZendOpcache要占多少内存,以免内存不足。
2#
发表于 2014-6-19 06:35:45 | 只看该作者
不清楚,没碰到,PHP5.5已集成
3#
发表于 2014-6-19 09:17:04 | 只看该作者
楼主用的OVZ  一代么?

php探针真实内存占用多少。

你设置的64应该只占64吧。你可以下载一个 opcache 传上去检测一下 缓存占用。

gist.github.com/ck-on/4959032/?ocp.php       下载一个传上去看他占多少
4#
发表于 2014-6-19 10:15:51 | 只看该作者
内存大, 内存换速度
5#
 楼主| 发表于 2014-6-19 10:56:03 | 只看该作者
tyucom 发表于 2014-6-19 09:17
楼主用的OVZ  一代么?

php探针真实内存占用多少。

我看了,每个网站下的那个缓存是独立的,那个ocp.php放到不同的网站下面,检测出来的缓存信息不一样,也就证明了我说的话,每个php-fpm都会各自开辟独立的zendopcache缓存,而不是共用一个
6#
发表于 2014-6-20 11:48:24 | 只看该作者
AMH下每个网站下的肯定是独立的 都chroot了 FPM不一样

至于不同FPM子进程占用不同缓存区的说法 我很肯定不存在。。我1G KVM VPS上开了20个FPM子进程 128M缓存区 压力测试wp-login.php以后也没爆内存 只比启动时多占用了200M内存而已

照楼主的说法我内存早爆了。。
7#
 楼主| 发表于 2014-6-20 13:15:50 | 只看该作者
雨宫音羽 发表于 2014-6-20 11:48
AMH下每个网站下的肯定是独立的 都chroot了 FPM不一样

至于不同FPM子进程占用不同缓存区的说法 我很肯定不 ...


子进程我不敢确定,但nginx的fpm不同网站占用独立的缓存区与apache相比太费内存了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-13 14:52 , Processed in 1.618297 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表