Digital Ocean "Veritabanı bağlantısı kurma hatası" Önlemler ve SWAP Bellek Kurulumu

Originally published at: http://yilmazsarac.com.tr/digital-ocean-veritabani-baglanti-hatasi/

Digitalocean VPS kullananlar, WordPress üzerinde veritabanı bağlantı kurma hatasını tecrübe etmişlerdir. Uzun zamandır yaşadığım bir sorun olmasına rağmen SWAP özelliği dışında tam bir çözümünü bulamadım, ancak bazı önlemler alınabilir.

WordPress’te veritabanı bağlantı kurma hatasının kaynağı MySql için yetersiz bellektir. Digital Ocean, 1GB Ram / 1 CPU özellikli en düşük configürasyon VPS’de daha sık yaşanır. Özellikle otomatik WordPress güncellemeleri ve bazı zararlı botlar bu soruna neden olur. Elbette Ddoss attack vs. de siteye bu hatayı verdirebilir.

Sorunun çözümü, yani MySql bağlantısını normal hale getirmek basittir, (Konsoldan “reboot” komutu ya da Digital Ocean panelinden ilgili droplet’i açıp kapatın sorun %100 çözülür.) Bu makalede, sorunu hiç yaşamamak veya daha az karşılaşmak için alınabilecek önlemlerden bahsedeceğiz.

işletim sistemini ya da MySql’i yeniden başlatmanız sorunu çözer, ama web sitenizde bu sorunun yaşandığını farkedebilmeniz gerekir.

Sorunun daha az veya hiç yaşanmaması için önlemler

  1. SWAP özelliğini kurun. SWAP bellek özelliğini kurmak SSD sunucularda sabit disk hatalarına neden olduğu için önerilmez) Swap bellek özelliğini kurmak istemiyorsanız aşağıdaki seçenekleri deneyebilirsiniz.
  2. WordPress için en az 2 GB Ram ve 2 CPU konfigürasyona geçin, bu konfigürasyonda sorun çok nadir yaşanır. Dedicated CPU & Ram sunucularda hiç yaşanmaz. En iyi çözümdür.
  3. WordPress otomatik güncellemeleri kapatın. Bu, verimli bir çözüm değildir, ancak hata daha nadir görülür.
  4. Sitenizin belirli arama motorları dışında taranmasına izin vermeyin. Bunu robots.txt dosyanıza yazacağınız direktiflerle yapabilirsiniz. Ancak robots.txt dosyası illa tarayacağım diyen bir botu engelleyemez. Bu durumda “All in One Security” WordPress eklentisinin sahte botları engelleyen özelliğini aktif edebilirsiniz.
  5. Sunucunuzu günün belirli saatlerde yeniden yeniden başlatmak için Cron Job özelliğini kurabilirsiniz, ancak bu da verimli bir çözüm değildir, siteniz yeniden başlatma vakti gelene kadar kapalı kalır.
  6. Monitör. Uptime monitor 50 siteye kadar ücretsiz destek verir. Sunucu çalışma süresini 5 dk’da bir kontrol eder ve web sitenizin kapanması durumunda sizi uyarır.

Sorun en çok WordPress admin panelinde yaşanır. Web sitesi çalıştığı halde admin paneli mysql hatası verebilir (wp-admin). UpTime Monitor’ü admin panelinin adresini kontrol edecek şekilde ayarlamanız önemlidir.

Ubuntu 18 SWAP Kurulumu

Swap özelliği sunucu bellek yetersizliği durumlarında yanıt verebilirliğini artırır. Swap genellikle standart sabit disk kullanan sistemler için önerilir. SSD’lerle takas kullanmak, zaman içinde donanımın bozulması gibi sorunlara neden olabilir. Bu nedenle önerilmez.

SWAP nedir?

SWAP, sabit diskte verilerin geçici olarak depolanabilmesi için belirlenmiş bir alandır. Temel olarak sunucunun bellek miktarını (RAM) artırma yeteneği sağlar.

Sabit sürücüdeki SWAP alanı RAM’de yeterli alan kalmadığında kullanılır. Diske yazılan bilgiler, RAM’de tutulan bilgilerden önemli ölçüde daha yavaş olacaktır, ancak işletim sistemi uygulama verilerini bellekte çalıştırmayı ve eski veriler için SWAP kullanmayı tercih edecektir.

SWAP Kurulum

Sistemde SWAP yüklü olup olmadığını kontrol edin.

sudo swapon --show

Herhangi bir çıktı alamazsanız sisteminizde şu anda kullanılabilir SWAP alanı olmadığı anlamına gelir. “Free -h” komutunu kullanarak tekrar doğrulayabilirsiniz.

free -h

root@yilmazsarac:~# free -h
              total        used        free      shared  buff/cache   available
Mem:           985M        599M        100M        1.0M        284M        244M
Swap:            0B          0B          0B

SWAP dosyasını oluşturacağınız bölümü kontrol edin. (/dev/vda1)

df -h

root@yilmazsarac:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            480M     0  480M   0% /dev
tmpfs            99M  612K   98M   1% /run
/dev/vda1        25G  4.5G   20G  19% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs            99M     0   99M   0% /run/user/0

SWAP alanının ne kadar olması gerektiğine dair birçok görüş vardır. Genellikle RAM’inize eşit veya 2 katı tavsiye edilir. 1 GB RAM ve 1 CPU kullanıyorsanız bence 1 GB SWAP daha uygundur.

SWAP dosyasını oluşturun.

sudo fallocate -l 1G /swapfile

Doğru büyüklükte alan ayrıldığını doğrulayın.

ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Agu o6 22:24 /swapfile

SWAP dosyasının güvenliğini sağlayın, root erişilebilirliği verin.

sudo chmod 600 /swapfile

Aşağıdakileri yazarak izin değişikliğini doğrulayın

ls -lh /swapfile
Output-rw------- 1 root root 1.0G Agu 06 22:25 /swapfile

Root kullanıcısına ve root grubuna erişim verilmiş oldu.

Oluşturulan dosyayı SWAP alanı olarak belirleyin.

sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e9665-2ab9-450f-aed6-577e74089dbf

SWAP dosyasını etkinleştirin.

sudo swapon /swapfile

SWAP dosyasının kullanılabilir olduğınu doğrulayın.

sudo swapon --show
Output
NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -1

Diski tekrar kontrol edin

free -h
Output         total used    free      shared  buff/cache   available
Mem:           1G    37M     96M        652K        354M        425M
Swap:          1.0G          0B        1.0G

Dosyanın yedeğini alın, kalıcı hale getirin çünkü sunucu yeniden başatıldığında ayarlar kaybolur.

sudo cp /etc/fstab /etc/fstab.bak

SWAP dosyası bilgilerini dosyanın sonuna /etc/fstabyazarak ekleyebilirsiniz

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Swap özelliğini ayarladınız.

Sunucunuza SWAP özelliği ekleyerek yetersiz bellek istisnalarına yol açabilecek durumlarla baş etmenizi sağlar. SWAP özelliği yetersiz bellek sorunlarına çözüm olabilir, ancak WordPress üzerinde veritabanı bağlantı sorunu hatalarıyla karşılaşıyorsanız en iyi çözüm WordPress yapılandırmalarınızı optimize etmek veya sunucunuzun konfigürasyonunu yükseltmektir.