FastCGI下ZendOpcache很费内存

刚刚在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要占多少内存,以免内存不足。

随记(一)

尼古拉·特斯拉,今天无意中因为一部电影再次想起这个名字,这个谜一样的人,每次提到这个人,我都无法用语言描述那种感受,只能说我从他身上感受到了不一样的科学。有的时候,总有个念头出现在我脑海中,跳出一个圈子,用另一种方式来认知某些事物,看到的是另一番景象。又让我想到了《桃花源记》里面那句话:初极狭,才通人。复行数十步,豁然开朗。

Windows 7自带数学公式输入功能

在开始菜单中的搜索编辑框或者“运行”的编辑框内输入mip,就能启动Windows 7自带的数学公式输入器了,如下图所示。

用鼠标控制笔在下方写数学公式,即可在上面显示识别结果,如果遇到有错误的情况,可以在右边点击“选择和更正”来更正错误。

自己体验一下吧:


1