0

we have wordpress site & everyday we are getting below error :

error establishing a database connection almost once i a day

than we have to restart mysql to fix this....

var/log/mysql - error.log :

180420 15:00:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
180420 15:00:33 [Note] Plugin 'FEDERATED' is disabled.
180420 15:00:33 InnoDB: The InnoDB memory heap is disabled
180420 15:00:33 InnoDB: Mutexes and rw_locks use GCC atomic builtins
180420 15:00:33 InnoDB: Compressed tables use zlib 1.2.8
180420 15:00:33 InnoDB: Using Linux native AIO
180420 15:00:33 InnoDB: Initializing buffer pool, size = 64.0M
180420 15:00:33 InnoDB: Completed initialization of buffer pool
180420 15:00:33 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
180420 15:00:33  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
180420 15:00:33  InnoDB: Waiting for the background threads to start
180420 15:00:34 InnoDB: 5.5.40 started; log sequence number 95113383371
180420 15:00:34 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
180420 15:00:34 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
180420 15:00:34 [Note] Server socket created on IP: '127.0.0.1'.
180420 15:00:34 [Note] Event Scheduler: Loaded 0 events
180420 15:00:34 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.40-0ubuntu1'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  (Ubuntu)

/etc/mysql - my.cnf

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

[mysqld]
innodb_buffer_pool_size=64M
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
#
# * Query Cache Configuration
#
query_cache_limit   = 1M
query_cache_size        = 16M
#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries   = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id      = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size         = 100M
#binlog_do_db       = include_database_name
#binlog_ignore_db   = include_database_name
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# * Security Features
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
#
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem



[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer      = 16M

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/mysql/conf.d/

when i ran command : zgrep -a "allocate memory" /var/log/mysql/error.log* , i got below result :

enter image description here

Also i ran free -m :

enter image description here

mpm_prefork.conf

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers       5
    MaxSpareServers      10
    #MaxRequestWorkers    150
MaxRequestWorkers 256
MaxConnectionsPerChild 500
    #MaxConnectionsPerChild   0
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

cat /proc/meminfo result :

enter image description here

8
  • 1
    Please post your error.log so we can see the 'connection error' message. Apr 23, 2018 at 0:34
  • 1
    Please review this link for likely quick assistance, read ALL of the post, please. stackoverflow.com/questions/25965638/… Let us know if this resolves your situation. Your swap space indicated by free -m looks undersized to me, do not be bashful, make it large enough to survive when swap is needed for anything. Apr 23, 2018 at 13:29
  • 1
    @WilsonHauck thanks for link , i reduced innodb-buffer-pool-size from 64 MB to 1 MB & i will wait for one day and see...... Apr 23, 2018 at 13:39
  • 1
    @WilsonHauck As you suggested , i increased swap space as here :prntscr.com/j9dugj , after 48 hours, i will tell if it worked or not.... Apr 24, 2018 at 9:29
  • 1
    @WilsonHauck Yes, it worked buddy.... Jul 31, 2018 at 5:06

2 Answers 2

1

Your swap space indicated by free -m looks undersized to me, do not be bashful, make it large enough to survive when swap is needed for anything. With only 4G RAM, if you have space available, 16G would not be unreasonable for SWAP size, if you need it.

1

"Cannot allocate memory for buffer pool" says that you have too much going on in too little RAM.

Increasing swap will get you going, but adding more RAM will speed things up considerably (over swapping).

1
  • Thanks for suggestion, i will speak with client about this..... May 7, 2018 at 5:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.