≡ Menu

PHP: Require_once(): Unable To Allocate Memory For Pool Error and Solution

I‘m running PHP version 5.3.3 on CentOS / RHEL 6.x with APC php-pecl-apc-3.1.9. However, I’m getting the following warnings in my php server log file:

[01-Jul-2012 10:50:49] PHP Warning: require_once(): Unable to allocate memory for pool. in /var/www/html/includes/admin.php on line 57
[18-Jul-2012 17:00:08] PHP Warning: include_once(): Unable to allocate memory for pool. in //var/www/html/includes/xmlrpc.php on line 55
[18-Jul-2012 17:00:40] PHP Warning: require(): Unable to allocate memory for pool. in /var/www/html/includes/geshi.php on line 2307

How do I fix these php warnings?

This error is usually related to Alternative PHP Cache (APC). APC is a free and open opcode cache for PHP. Its goal is to provide a free, open, and robust framework for caching and optimizing PHP intermediate code.

Solution

Edit the file /etc/php.d/apc.ini (Debian and/or Ubuntu Linux user edit the /etc/php5/conf.d/apc.ini), enter:
# vi /etc/php.d/apc.ini
Make sure the mktemp-style file_mask to pass to the mmap module is correct and valid one:

apc.mmap_file_mask=/tmp/apc.XXXXXX

Next make sure the size of each shared memory segment, with M/G suffix is set correct as per your requirements. In my case it was set to 8M:

; increased to 96M
apc.shm_size=96M

You need to adjust the number of seconds a cache entry is allowed to idle in a slot in case this cache entry slot is needed by another entry:

apc.ttl=3600

The number of seconds a user cache entry is allowed to idle in a slot in case this cache entry slot is needed by another entry:

apc.user_ttl=3600

The number of seconds that a cache entry may remain on the garbage-collection list.

apc.gc_ttl=3600

Save and close the file. Make sure you adjust the values as per your web-app requirements. Restart the Apache 2 web server:
# service httpd restart
If you are using the Lighttpd instead of Apache2 web-server, restart the Lighttpd web server:
# service lighttpd restart
If you are using Nginx instead of Apache2 or Lighttpd, restart the Nginx web server:
# service nginx restart
OR
# /usr/local/nginx/sbin/nginx -s reload

Tip: Find out your APC memory usage and hit ratio

You need to find out exact memory usage and hit ratio so that you can set apc.ttl and apc.shm_size as per your work load. Copy /usr/share/php-pecl-apc/apc.php to your /var/www/html directory i.e. Apache DocumentRoot:
# cp /usr/share/php-pecl-apc/apc.php /var/www/html
Edit /var/www/html/apc.php and set the admin password :

defaults('ADMIN_PASSWORD','YOUR-NEW-PASSWORD-HERE');

Save and close the file. Fire a web-browser and type the url:
http://server-ip-here/apc.php
OR
http://server1.cyberciti.biz/apc.php
Sample outputs:

Apc Memory Status and Hit Ratio

Fig.01: Apc Memory Status and Hit Ratio

From the above graph I’m getting 100.0% hit ratio and I’ve used almost all memory. I need to increase memory and reduce ttl value so that I will not get memory allocation error.

References:
  1. PHP APC documentation.
Share this tutorial on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 9 comments… add one }
  • Daniel October 24, 2012, 7:11 am

    Thanks for the detailed informations. This fix worked for me.

    Greetings from Germany
    Daniel

  • Arindam Biswas December 3, 2012, 12:49 pm

    Thank you. Nicely written. Your good deed of the day!

    :)

  • Igor January 5, 2013, 7:22 pm

    Thank you for the explanation, it helped me to solve this problem.

  • Justin C. February 15, 2013, 3:03 pm

    Worked for me! Thanks!

  • Nicram March 31, 2014, 12:02 pm

    Great article. Today i saw same problem on my box and was trying to know what happen. It was first site and it work now. thank You!

  • rosh3000 April 8, 2014, 3:34 pm

    Thank you. A little more explanation on how to interpreter the results in apc.php and what the graph should be like would be very useful.

  • HÆ°ng May 26, 2015, 4:47 am

    Thank you, Unbelievable your helped!

  • robin August 31, 2015, 8:01 am

    Worked for me! Thanks!

  • anton December 28, 2015, 2:44 am

    nice explain. thanks

Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">


   Tagged with: , , , , , , , , ,