最近发现服务器php-fpm日志里面大量的Unable To Allocate Memory For Pool
警告,如下:
[09-Jan-2017 01:18:08] PHP Warning: require(): Unable to allocate memory for pool. in /data/web/iteblogbooks/wp-settings.php on line 220 [09-Jan-2017 01:18:08] PHP Warning: require(): Unable to allocate memory for pool. in /data/web/iteblogbooks/wp-settings.php on line 221 [09-Jan-2017 01:18:08] PHP Warning: require_once(): Unable to allocate memory for pool. in /data/web/iteblogbooks/wp-includes/functions.php on line 3060 [09-Jan-2017 01:18:08] PHP Warning: require_once(): Unable to allocate memory for pool. in /data/web/iteblogbooks/wp-content/plugins/wechat-subscribers-lite/wpwsl_core.php on line 72 [09-Jan-2017 01:18:08] PHP Warning: require_once(): Unable to allocate memory for pool. in /data/web/iteblogbooks/wp-admin/includes/upgrade.php on line 16
我的php版本是PHP 5.3.3 (cli) (built: Feb 9 2016 10:36:17)
。这个问题一般是和PHP Cache (APC)有关, APC是一个免费和开放的PHP缓存项目;其目标是提供一个用于缓存和优化PHP中间代码的自由,开放和稳健的框架。为了解决上面的问题,我们需要修改apc的相关配置,如果你是CentOS,打开/etc/php.d/apc.ini
文件(如果你是Debian 或 Ubuntu Linux可以打开/etc/php5/conf.d/apc.ini
),将apc.shm_size
参数设置大一些,在我的默认配置里面,它的值是64M,我们将它设置为128M,如下:
vim /etc/php.d/apc.ini apc.shm_size=128M
然后重启php-fpm:
[root@iteblog.com ~]$ service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ]
现在你会发现php-fpm日志里面已经没有上面那些警告信息了。
一个技巧
你是不是想看到使用APC缓存之后到底用了多少内存以及有多少查询命中了;然后根据这些情况设置 apc.ttl
和 apc.shm_size
参数。APC为我们提供了一个页面来查看APC缓存的使用率和命中率情况,我们可以如下设置:
1、拷贝apc.php
文件到你网站根目录
[root@iteblog.com ~]$ cp /usr/share/php-pecl-apc/apc.php /var/www/html
2、访问https://www.iteblog.com/apc.php
页面,然后我们就可以看到如下的结果:
可以清楚地看到内存的使用情况已经命中率;而且我们还可以看到系统缓存哪些东西等。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【解决require_once(): Unable To Allocate Memory For Pool问题】(https://www.iteblog.com/archives/1963.html)