I have (only) 512MB to spare. The only thing running on my VPS is PHP/MySQL and on top of it Wordpress. No mail server or any other application, just Wordpress and LAMP stack.
How to decide how much memory to give to PHP and Wordpress? Right now PHP is allowed to have 128MB, how much is safe amount to increase it? I've tried to Google the question but never really found any answers.
Answer
TL;DR - Don't bump your memory limits for the sake of it. For a standard PHP application like WordPress, 128MB is huge and should be enough for 90% of your needs.
However, there are a few important facts here:
PHP Memory Allocation is per-script/process
As per the PHP documentation for the max_memory
option:
This sets the maximum amount of memory in bytes that a script is
allowed to allocate. This helps prevent poorly written scripts for
eating up all available memory on a server.
An important distinction to make is that this setting doesn't set the amount of memory that is available to all PHP processes - it sets the maximum available memory for one PHP process.
When Apache receives a request for a PHP page, it forks a PHP process, which dies as soon as its work is done. Any memory used during that request is then released back to the OS and the entire cycle starts again with the next request.
You should never have to tweak the max_memory
settings unless you are seeing "Out of memory" errors from PHP itself, and that generally only happens when you:
- Are working with large data-sets, which if you're running a WordPress website I extremely doubt.
- Have a memory leak or other problem which means that memory isn't being released back to the OS, and the correct response to this type of problem is to investigate the source problem, rather than just bumping limits.
Apache Tuning
If you're interested in tweaking for performance, you should look at the Apache MaxClients
and associated options within the prefork
module.
I would typically reserve 50MB for the kernel and other system processes, and dice up the rest for Apache and MySQL - there are various online guides detailing how to do this (which I strongly suggest that you read), but the general idea is:
- Run
top
and check how much memory is used by your average Apache process (this is theRES
column) - Take your total memory, subtract the amount you want to reserve for other processes, and divide by the number above. This is the number of simultaneous connections that Apache can handle before it will need to turn clients away.
- Edit your Apache configuration and set the
MaxClients
option to this number.
Note I mentioned simultaneous connections above, not visitors on your website. The two are not the same.
No comments:
Post a Comment