我的WordPress 網站掛掉了,apache 還活著,顯示這一個錯誤訊息:
establishing a database connection
試著登入伺服器後,使用本機的指令連結mysql: mysql -u root -p
,結果終端機報錯:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
檢查看看 /var/log/mysql/error.log 的錯誤訊息:
[ERROR] [MY-012956] [InnoDB] Cannot allocate memory for the buffer pool
Crash cause:
MySQL buffer size is bigger than free RAM available on the server.
innodb_buffer_pool_size: 這個設定是 innodb 儲存引擎資料庫,所使用的資料及索引快取,根據記憶體的大小䀆量設定大一點,可以減低讀取資料時從硬碟讀取的次數。
在 mysql 5.7 或 mysql 8.0 檢查緩衝池位元組大小的SQL command:
SELECT @@innodb_buffer_pool_size/1024/1024;
顯示的結果應該是 128,代表預設為 128MB。
在MySQL 5.7版本之後,innodb_buffer_pool_size引數的值可以動態的設定,你可以在不啟動伺服器的情況下,重新設定緩衝區的大小。如果要修改,請在 my.cnf 中的[mysqld] 節下面新增如下配置。配置完成之後,需要重啟 MySQL 服務:
[mysqld] innodb_buffer_pool_size = 1G # (adjust value here, 50%-70% of total RAM)
如何檢查InnoDB緩衝池大小是否設置足夠。在終端中,執行如下命令:
mysqladmin ext -ri1 -p | grep Innodb_buffer_pool_reads
你所看到的是從硬碟讀取數據到緩衝池的次數(每秒)。
附註:上面指令需要使用ctrl + c 中斷。
猜測可能是有時需要的記憶體不足,但從伺服器的記憶體使用狀態來看,使用都不會超過70%:
應該是沒有增加虛擬記憶體的必要,反正加了有保險,不加可能會掛掉,還是先加一下好了。在ubuntu 裡增加 VM 流程如下:
Creating a Swap File
sudo fallocate -l 1G /swapfile
Enabling the Swap File
sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
Making the Swap File Permanent
sudo cp /etc/fstab /etc/fstab.bak echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Tuning your Swap Settings
sudo nano /etc/sysctl.conf
在上面檔案最下面加入這二行:
vm.swappiness=10 vm.vfs_cache_pressure=50
要立馬套用到設定值,請下指令:
sudo sysctl vm.swappiness=10 sudo sysctl vm.vfs_cache_pressure=50
資料來源:
How To Add Swap Space on Ubuntu 18.04
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-18-04