解決: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了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM