PHP Fatal Error: Allowed memory size of 134217728 bytes exhausted

Hi Guys,

Our website http://www.eqlife.co.uk went down over the weekend due to the following PHP error:

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1973841 bytes) in /sharedstorage/sites/www.eq24.co.uk/ht_docs/wp-includes/functions.php on line 1028

This was temporarily fixed by increasing the PHP memory limit for the individual site to 164MB. Any ideas what could be causing this huge demand? And any ideas on how to put a more stable fix in place?

Latest version of WP/BP, all plug-ins up-to-date.

The server spec is 4 virtual CPUs, 4Gb ram - VMWare virtual machines.
Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l
PHP/5.3.1
MySQL client version: mysqlnd 5.0.5-dev - 081106 - $Revision: 289630 $

MySQL config as follows:

# Example MySQL config file for very large systems.
#
# This is for a large system with memory of 1G-2G where the system runs mainly
# MySQL.
#

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 16M
table_open_cache = 512
sort_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 64M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency =4

# Enable MySQL 5.5 Performance Schema
performance_schema

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
#
#skip-networking

# Replication Master Server (default)
# binary logging is required for replication
log-bin=mysql-bin

server-id = 1

# binary logging - not required for slaves, but recommended
#log-bin=mysql-bin
#
# binary logging format - mixed recommended
#binlog_format=mixed

# Point the following paths to different dedicated disks
#tmpdir = /tmp/
#log-bin = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using InnoDB tables
datadir=/mysql_data
innodb_data_home_dir = /mysql_data/
innodb_log_group_home_dir = /mysql_data/

expire_logs_days=5

#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend

# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 384M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 1
sporadic-binlog-dump-fail
sync_binlog = 1
log-output = TABLE
slow-query-log
expire_logs_days = 10
log-queries-not-using-indexes
performance_schema_events_waits_history_long_size = 10000
max_connections=300
log_warnings=2
connect_timeout=20

long_query_time = 10
performance_schema_events_waits_history_size = 10
auto_increment_offset = 1
max_connect_errors = 100

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Any help would be much appreciated.