How to optimize the php process memory usage? How to optimize the php process memory usage? wordpress wordpress

How to optimize the php process memory usage?


I'll summarize what Lisa did to find the problem:

  • Check the memory layout of a single PHP process with pmap -d <pid>. The output showed that there's a huge amount of shared memory used by the process:
00002b3772850000 2097152 rw-s- 0000000000000000 000:00009   [ shmid=0x2d1b803a ]
  • Examine the shared memory regions with ipcs -m. It showed that there are a lot of shared memory regions created by user nobody (the web server), here are just a few of them:
0x00000000 117964807 nobody 600 2147483648 1 dest 0x00000000 117997576 nobody 600 2147483648 1 dest 0x00000000 118030345 nobody 600 2147483648 1 dest0x00000000 118063114 nobody 600 2147483648 1 dest
  • Disable eAccelerator in php.ini and remove the created shared memory regions:

for i in `ipcs -m | cut -d' ' -f2 | grep '^[0-9]'`; do ipcrm -m $i; done


Rasmus Lerdorf did a conference about PHP performance at Confoo in 2010 and he used a Wordpress blog as an example, this should give you great tools to answer your question:

http://talks.php.net/show/confoo10/1

To sum up:

  • Run a phpinfo() and disable PHP extensions that you don't use. They can take a lot of memory (imagick, curl, ...)
  • Generate a graph of your includes using the inclued.so extension. You might load useless functions in your wordpress setup.
  • Run benchmarks with siege. Sometimes, tiny optimisations have great impact on performance, so make sure you have metrics, to help you make your decisions.
  • Use callgrind to show where you're loosing performance. In one of my project I was using md5() to hash my SQL queries and cache them. The md5() calls where using 20% of the CPU time.

I would definitely start by disabling PHP extensions if possible.