解决:wordpress error establishing a database connection problem

我是个网站菜鸟,刚开始搭建LAMP环境的时候,就要了我半条老命。

没办法,懂的东西太少,LAMP是什么我都不懂,域名是什么,我也被不懂,为什么想要有个网站就要有服务器我还是不懂。一步步地自己去钻,去看digitalocean给的说明教程。慢慢就懂了。

我的VPS(Virtual Private Server虚拟专用服务器)的配置很low,CPU只有512M- -

最开始解决这个问题,就是重启我的服务器

reboot
httpd -k  restart

以上两个代码用的飞起,实际上如果是database crash了,以下两个命令应该就ok了

systemctl start mariadb
systemctl status mariadb

好吧,问题来了。刚开始的时候,我发现error establishing这个问题的时候,我根本不知道怎么回事。后来这几天学了一下mysql的配置才知道。首先,我想要描述一下,解决问题的步骤。

1、发现error establishing a database connection的问题——稍微google一下就知道是数据库的问题

2、去查数据库mysql的err log。具体位置应该是在/var/log下面

3、查了以后我就发现是 out of memory,cannot allocate innodb buffer pool=128M(内存只有512M你让我怎么办)的问题了

4、google了一下,这种问题有两种解决方法:

  有一种方法就是增加swap文件(下面详细介绍swap空间及其增加方法):digitalocean的add swapfile教程

  还有就是要修改你的innodb_buffer_pool_size(下文详细介绍)



Swap空间:

Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。

先来说下swap的工作原理:

swap 的工作我们可以看成是一个静态的中转装置。假如我们的内存是512M的。当有任务来了但是由于之前任务和并发任务占有了许多的工作空间,使得这个工作的位 置要大于512M的空间时,就会导致启动失败。因为没有它的位置。这个时候许多的工程师和技术牛人们就发明了这个swap空间,即虚拟内存的技术。 swap空间实际是在硬盘上的。工作原理是:当我们有 一个任务来到的时候,发现物理内存空间不够了,那么我们把这之前用户开启了但是经常没有使用的空间给释放出来,将他们的一些信息存入swap空间。然后给 这个后来的程序先用物理内存空间,当我要用到之前的程序的时候我们再从swap空间将之前保存的内容调用回来。

增加swap空间的两种方法:第一种是创建一个swap分区,第二种是创建swap文件,这里我们介绍第二种比较简单的方法

1、查看本机有没有已经配置的swap空间,利用下面的命令可以看到swap空间的使用情况

swapon -s

如果你没有配置swap空间,发现敲完上面的命令,什么也没有,如果你配置了,就会出现下面的情况,我在我的VPS上配置的是4G:

还有一种方法就是用free,它会显示出系统整体的内存使用情况:

free -m

2、查看可用的硬盘空间,因为swap空间实际上要用的是硬盘空间,所以,当然你要查看还有多少硬盘可用

df -h

3、创建一个swap文件,并更改其权限

sudo fallocate -l 4G /swapfile

我们查看这个文件的权限

-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile

会发现这个文件的可读权限是开发给任何人的,这样是非常不安全,因此我们要改变一下这个文件的权限

sudo chmod 600 /swapfile
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

恩,这样就安全多了

4、使用这个swap文件

使用下面这个命令,告诉系统我们要把这个文件作为swap文件了

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

然后就是要使用这个swap文件了:

swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4194300 0     -1

然后我们再用free -m命令查看内存的使用情况:

发现这个swap文件已经ok了!

5、使得这个新加入的swap文件永久生效,在系统启动的时候就生效,因此我们要在/ect/fstab文件里加入下面一行

先用vi打开文件,然后添加下面一行,然后保存。

sudo vi /etc/fstab
/swapfile   swap    swap    sw  0   0


修改innodb_buffer_pool_size:

我的VPS上装的mariadb(15个mariadb的性能调优方法)。它有四个配置文件- - 分别都在/etc下面:

my.cnf.d是一个文件夹:(这里面有三个文件,忽视掉那个bakup文件,是我修改sever的备份)

然后去/usr/share/mysql里面,会有一些example的配置文件,copy一份过来,我的VPS的配置,我选择了medium那个文件

然后重启mariadb

systemctl restart mariadb

我们查看一下innodb_buffer_pool_size有没有被修改

查看方法:进到mysql里面,然后select下面那个变量。

mysql -uroot -p
mysql> SELECT @@innodb_buffer_pool_size/1024/1024/1024;

恩,发现已经被我们改成50M了!

时间: 2024-08-03 12:06:23

解决:wordpress error establishing a database connection problem的相关文章

解决Kloxo出现Could not open database connection问题

当我们在使用或者运行kloxo面板的时候,可能会出现类似"Could not open database connection"错误提示,对于新手朋友来说肯定本身安装面板管理VPS就想让事情简单一点.如果再出现这样的问题,势必会使得我们更加不知道如何处理.如果是主机产品还可以找主机商或者主机面板,但是VPS是独立的产品,所有的问题都需要我们自己来解决. 解决方法如下: 用SSH登陆我们的VPS,然后输入下面两行命令 php /usr/local/lxlabs/kloxo/bin/com

DATABASE CONNECTION ERROR (1): THE MYSQL ADAPTER 'MYSQLI' IS NOT AVAILABLE.解决办法

网站迁移之后遇到:Database connection error (1): The MySQL adapter 'mysqli' is not available.这个问题,我一开始以为是我配置的参数错了呢!然后回去检查,检查好几遍我的数据库账号和密码都没错,但是为什么就是连接不上数据库呢?? 网上有人说是"可能有你安装wamp或者xamp之后,sqlserver的服务没有启动,你可以到系统服务菜单里看看这个是否自动启动."但是我问过空间商,他们说默认都是开启的,然后他们也检查了数

Redis主从配置异常解决:Error condition on socket for SYNC: Connection refused

Redis主从配置异常解决:Error condition on socket for SYNC: Connection refused 在docker中搭建的redis主从集群时,从服务器上的redis日志报错: 32677:S 08 Feb 16:14:38.947 * Connecting to MASTER 172.168.10.70:6379 32677:S 08 Feb 16:14:38.948 * MASTER <-> SLAVE sync started 32677:S 08

Error establishing socket解决办法

jdbc配置语句为: jdbc:microsoft:sqlserver://server_name:1433 如运行程序时出现 "Error establishing socket" 错误,则应进行如下调试: WINDOWS系统有漏洞,微软系统自动把计算机上的1433端口关闭了! 我前些时间写JSP连SQL的时候总出错,说端口没开!后来才知道因为现在的WINDOWS系统有漏洞,微软系统自动把计算机上的1433端口关闭了! 要想打开这个端口,必须去官网上下载SP4补丁!叫做SQL2000

[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结

今天做一个特殊的业务处理,用JDBC连接SQLServer数据库载入驱动的时候,报例如以下错误: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExc

java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法

在进行jdbc直接操作数据库时    : 我们需要对该工程进行一次导包(引入"msbase.jar" "mssqlserver.jar" "msutil.jar"  这三个包,具体的做法为  )                         用手标选中我们要导入包的项目,点击右键出现了一些列的列表,选中 Properties ,继而在该面板中选中Java Bukid Path,然后再选中 Add External Jars ,最后选中我们要导入

dpkg: error: dpkg status database is locked by another process 解决方法

https://i.cnblogs.com/EditPosts.aspx?opt=1使用dpkg -i/apt命令安装,报错: ------------------------------------------------------------- dpkg: error: dpkg status database is locked by another process 无法获得锁 /var/lib/apt/lists/lock - open ------------------------

如何解决Wordpress插件冲突的问题

之前有一篇文章介绍了如何判断依附插件是否被启用的问题(例如,在作为WooCommerce扩展的插件中,就要判断当前网站的Woocommerce是否启用了),文章链接:http://suoling.net/is_woocommerce_activated/现在开始说正事儿:首先,我们要引入一个Wordpress核心文件:    /*  避免 current_user_can 不可用的问题 */    if ( !function_exists( 'wp_get_current_user' ) )

MySQL报错:ERROR 2013 (HY000): Lost connection to MySQL server during query

首先贴上实验用各版本: OS:CentOS 6.5 MySQL: mysql> select version ();+------------+| version () |+------------+| 5.6.22     |+------------+1 row in set (0.00 sec) 事情是这样的:本来是要在虚机上搭建一个wordpress做实验,刚创建完数据库,就在赋权额时候发生不在计划的错误: mysql>grant all on wordpress.* to [emai