VestaCP MySQL + PHP-FPM Optimizasyonu Nasıl Yapılır ?

VestaCP MySQL + PHP-FPM Optimizasyonu Nasıl Yapılır ?

Daha önce ki yazılarımda VestaCP‘nin çeşitli şekilde kurulumlarını anlatmıştım ancak hiç  sunucunun performansını iyileştirmeye yönelik paylaşım yapmamıştım. Bunun sebebi kendi sunucumda bir performans optimizasyonuna ihtiyaç duymamıştım bunun en büyük sebebi VestaCP’nin hafif çalışması ve tabii ki de vultr vps‘in kaliteli olmasından kaynaklı diyebilirim.

Her ne kadar VestaCP hafif bir sunucu kontrol paneli olsa da optimizasyon yapılması gerekiyor. Bu yazımda size MySQL ve PHP-FPM optimizasyonunu nasıl yapacağınızı anlatacağım.

[toc]

VestaCP Nasıl Kurulur ?

CentOS 6 Sunucuya VestaCP + Nginx Kurulumu
VestaCP + Nginx (Reverse Proxy) Kurulumu
VestaCP İlk Kurulum Sonrası Ayarları Nasıl Yapılır ? (Videolu Anlatım)

Şuan VestaCP kurdunuz ve ilk kurulumdan sonra yapılması gereken ufak ayarlamaları da yaptıysanız eğer optimizasyon yapmaya başlayabiliriz. Ben optimizasyon çalışmasını 1 GB ram ve Centos 6 x64 bit işletim sistemine sahip bir sunucuda gerçekleştireceğim. Yapılacak optimizasyon işlemleri buna bağlı olarak değişecektir. Siz de daha düşük bir ram ya da daha yüksek bir ram takılı ise ona göre ayarlama yapmanızda fayda var.

ÖNEMLİ: OPTİMİZASYON ÇALIŞMASI YAPMADAN ÖNCE LÜTFEN SİSTEMİNİZİN TAM YEDEĞİNİ ALINIZ!

 

VestaCP PHP-FPM Optimizasyonu Nasıl Yapılır ?

Sürekli kullanılan ve aktif bir siteniz var ise ve bu sitede php kullanıyorsanız php-fpm ram belleğini oldukça fazla kullanacaktır. Optimizasyon yapmadan önce tabii. Şuan bulunduğunuz kişisel blog sitem optimizasyon yapmadan önce php-fpm ram belleğimin tam yarısını harcıyordu yaklaşık 500 MB gibi değeri kullanıyordu. Geri kalan tüm sistemlere sadece 500 MB kullanım hakkı kalıyordu haliyle site bir anlık kullanıcı sayısında artış olması durumunda kitleniyordu. Ortalama 300-400 tekil kullanıcıya sahip blogum bu sayı bazen özellikle hafta sonları 600-700’e ulaşabiliyor.

Bu kadar fazla bellek kullanımı beni tedirgin etmişti ve nasıl optimize edeceğimi düşünürken kendimi bu konuyu araştırırken buldum ve yine ne yazık ki Türkçe bir kaynak bulamadım yine yabancı kaynaklardan edindiğim bilgileri ve bu bilgileri uygulayıp edindiğim tecrübeleri size aktarıyorum.

VestaCP’de php-fpm için 2 adet önemli dosya bulunmakta. Bunlar; default.tpl ve socket.tpl ve biz optimizasyon çalışmalarını bu iki dosya ile gerçekleştireceğiz. Unutmadan, lütfen bu iki dosyanın öncelikle yedeğini alın, yanlış bir işlem yaptığınızda yedekten geri atarak yanlışı düzeltebilirsiniz.

Bu iki dosyanın VestaCP’de ki dizin yolları:
default.tpl
/usr/local/vesta/data/templates/web/php-fpm/default.tpl
socket.tpl
/usr/local/vesta/data/templates/web/php-fpm/socket.tpl

Bu dosyaların konumunu öğrendiniz ve bu dosyaları bulduysanız eğer önce bir yere yedekleyin daha sonra her iki dosyada da aşağıda ki işlemi aynı şekilde yapacağız. Bu dosyaları bir kod editörü yardımı ile açın (Bkz: Web Geliştiricileri İçin Kod Editörü: Microsoft Visual Studio Code )

Her iki dosyada da pm = dymanic satırını bulun ve bu satırı pm = ondemand olarak değiştirin. Daha sonra hemen pm.max_spare_servers adlı bu kod satırının hemen altına aşağıda ki kodları ekleyin.

Yapılan İşlemler Neler ?

Şimdi biz bunları yaptıkta bunlar ne ola ki diyenleriniz için kısaca yaptığımız bu değişiklikleri açıklayayım. İlk başta yaptığımız dymanic ve ondemand değişiklikleri php-fpm’nin işleyiş biçimini belirttik. Yani, dynamic php-fpm’yi sürekli çalışır halde tutmaktadır, ihtiyaç dahi duyulması o hep arkaplanda çalışacaktır. Bunu değiştirip sadece ihtiyaç hasıl olduğunda çalışmasını sağlamak için ondemand parametresini ekledik.

Bir diğer eklediğim pm.process_idle_timeout = 10s  parametresi ise örneğin bir php dosyası çalıştırıldı fakat bu dosya çalıştırıldıktan sonra bir daha hiç kullanılmadı, eğer biz bu parametreyi girmemiş olsaydık php-fpm sürekli o çalıştırılan php dosyasını çalıştıracaktı ve buda gereksiz sorgu, gereksiz yer kaplama demekti. Eklediğim bu parametre ile bir kez çalıştırılmış bir php dosyası 10 saniye boyunca kullanılmaz ise çalışmasını durdur anlamına geliyor haliyle buda php sorgusunu azaltacak anlamına geliyor.

Diğer satır olan pm.max_request = 500 ise php dosyalarına gelen isteklerin kaç saniyede işlenmesi gerektiğini belirttik. Aktif bir sitede gelen her isteği anında yaptığınızı düşünsenize ? bir süre sonra sistem gelen isteklere cevap veremez hale gelebilir, aşırı yüklenmeler olabilir. Bu yüzden her gelen php isteğini belli bir süreden sonra yorumlamak daha sağlıklı olacaktır. Bu 500 ifadesi standart bir ifadedir. Detaylı bilgi için tıklayın.

Bütün bu işlemleri yaptıktan sonra php-fpm’yi yeniden başlatmanız gerekiyor. Bunun için ise ssh ekranında aşağıda ki komutu girmeniz yeterlidir.

Hepsi bu kadar. Yapılan işlemlerden sonra sonuç:

VestaCP PHP-FPM Optimizasyonundan Öncesi ve Sonrası
VestaCP PHP-FPM Optimizasyonundan Öncesi ve Sonrası

VestaCP MySQL Optimizasyonu Nasıl Yapılır ?

PHP-FPM optimizasyonumuzu tamamladığımıza göre geldik işin MySQL Optimizasyonu kısmına. Yine kendi sunucumun değerlerini baz alarak optimizasyonu yapacağım. Açıkcası bu aşamayı kısa tutacağım ve direkt optimizasyon kodlarını verip sizi yolcu edeceğim 😀 Tek tek yapılan işlemleri açıklasam en az 2 sayfalık yazı çıkar oradan biliyorsunuz ben biraz detaylı anlatırım ki daha net anlaşılsın yapılan işlemler o yüzden MySQL kısmında sadece önemli olan yerleri açıklayacağım.

MySQL için yapacağımız işlemleri my.conf dosyası üzerinden gerçekleştireceğiz. Bu dosya VestaCP’de /etc/my.conf yolunda bulunmaktadır. Dosyayı bulduysanız eğer her zaman ki gibi yedeğini alın ve dosyayı açıp içinde ki tüm kodları silip aşağıda ki kodları ekleyin.

Bu kodlarda ki dizin yolu belirten kısımlarda oynama yapmayınız. Diğer rakamsal verilerde ise araştırma yaparak ne işe yaradığını öğrenip ona göre düzenlemeler yapabilirsiniz. Ya da benim sıklıkla uyguladığım deneme yanılma yolu ile ne işe yaradığını öğrenebilirsiniz. Bu kodlar 1 GB ram belleğe sahip sunucu için ayarlanmıştır sizin sunucu özelliklerinize göre değerlerde azaltma ya da yükseltme yapılabilir.

Bu kodları ekleyip my.conf dosyanızı kaydettikten sonra MySQL işlemcisini yeniden çalıştırmanız gerekmektedir. Bunun için ise  service mysql restart bu kodu ssh konsol ekranında çalıştırmanız yeterlidir.

Bu optimizasyonları yaptıktan sonra VestaCP daha da stabil hale gelecektir ve sunucunuz oh be dünya varmış diyecektir.

Kolay gelsin, iyi çalışmalar efenim…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir