X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Worldwide (English)Worldwide (English)
X

Webhosting icin cgroup kullanimi

AnasayfaYazılarLinuxWebhosting icin cgroup kullanimi

Cgroups'u kullanarak kaynakları etkin bir şekilde yönetebilir ve web hosting sunucunuzdaki performansı ve güvenilirliği artırabilirsiniz.

Ubuntu'da cgroups'u kullanarak bir örnek yapalım. Bu örnekte, farklı web sitelerinin veya uygulamaların kaynak kullanımını izole etmek için cgroups'u kullanacağız.

  1. Cgroups Kurulumu: Ubuntu'da cgroups, genellikle cgroup-tools paketiyle gelir. Eğer yüklü değilse, aşağıdaki komutla kurabilirsiniz:
sql
sudo apt update sudo apt install cgroup-tools
  1. Cgroups Kullanımı: Örneğin, farklı web siteleri için ayrı cgroups oluşturmak isteyebiliriz. Bunun için öncelikle her bir web sitesi için bir cgroup oluşturacağız.

Örneğin, iki farklı web sitesi ("site1.com" ve "site2.com") için cgroups oluşturalım.

javascript
sudo cgcreate -g cpu,memory:/web/sites/site1 sudo cgcreate -g cpu,memory:/web/sites/site2

Bu komutlar her bir web sitesi için ayrı bir cgroup oluşturur. cpu ve memory controller'ları kullanılarak CPU ve bellek kaynaklarını kontrol etmemize olanak tanır.

  1. Kaynak Sınırlarını Belirleme: Her bir cgroup için maksimum CPU ve bellek kullanımını belirleyebiliriz. Örneğin, her iki web sitesi için de maksimum CPU kullanımını sınırlandıralım:
bash
sudo cgset -r cpu.cfs_quota_us=$(echo "2 * 100000" | bc) /web/sites/site1 sudo cgset -r cpu.cfs_quota_us=$(echo "2 * 100000" | bc) /web/sites/site2

Bu komutlarla, her iki web sitesi için de CPU kullanımını %20'ye (2/10) sınırlamış oluruz.

Bellek kullanımını sınırlamak için de benzer şekilde memory.limit_in_bytes parametresini kullanabilirsiniz.

  1. Süreçleri Cgroup'a Atama: Her bir web sitesi için çalışan süreçleri oluşturduğunuz cgroup'a atamalısınız. Örneğin, Apache HTTP sunucusuyla çalışan süreçleri bir cgroup'a atamak için cgclassify komutunu kullanabilirsiniz.
javascript
sudo cgclassify -g cpu,memory:/web/sites/site1 $(pidof apache2) sudo cgclassify -g cpu,memory:/web/sites/site2 $(pidof apache2)

Bu komutlar, apache2 süreçlerini ilgili cgroup'a atar.

Bu şekilde, her bir web sitesi için ayrı cgroups oluşturarak ve kaynak sınırlarını belirleyerek, farklı web siteleri arasında kaynakları izole edebilirsiniz.

basit bir Bash scripti Ubuntu'da cgroups kullanarak farklı web siteleri için cgroups oluşturmak için:

bash
#!/bin/bash # Web siteleri için cgroup'lar oluşturma fonksiyonu
create_website_cgroup() {
local site_name=$1
local cpu_quota=$2
local memory_limit=$3
# CPU ve bellek controller'larıyla cgroup oluşturma
sudo cgcreate -g cpu,memory:/web/sites/$site_name # CPU ve bellek sınırlarını belirleme
sudo cgset -r cpu.cfs_quota_us=$(echo "$cpu_quota * 100000" | bc) /web/sites/$site_name
sudo cgset -r memory.limit_in_bytes=$memory_limit /web/sites/$site_name
echo "Cgroup for $site_name created with CPU quota: $cpu_quota and Memory limit: $memory_limit bytes." }
# Web siteleri için cgroup'lar oluşturma
create_website_cgroup "site1" 0.2 1G # Site 1 için CPU %20 ve 1GB bellek sınırı
create_website_cgroup "site2" 0.3 2G # Site 2 için CPU %30 ve 2GB bellek sınırı # Apache süreçlerini cgroup'lara atama
sudo cgclassify -g cpu,memory:/web/sites/site1 $(pidof apache2)
sudo cgclassify -g cpu,memory:/web/sites/site2 $(pidof apache2)

Bu script, create_website_cgroup adında bir fonksiyon tanımlar ve bu fonksiyonu çağırarak her bir web sitesi için ayrı bir cgroup oluşturur. Sonrasında, cgclassify komutuyla Apache süreçlerini ilgili cgroup'a atar.

Bu scripti çalıştırmadan önce, apache2 yerine kullandığınız web sunucusunun süreç adını (örneğin nginx, httpd vb.) kontrol edin ve gerekirse değiştirin. Ayrıca, CPU ve bellek sınırlarını web sitelerinizin ihtiyaçlarına göre ayarlayın.

cgroups kullanarak web siteleri için kaynak sınırlarını güncellemek için basit bir Bash scripti:

bash
#!/bin/bash # Web sitesi için cgroup'un CPU ve bellek sınırlarını güncelleme fonksiyonu
update_website_limits() {
local site_name=$1
local cpu_quota=$2
local memory_limit=$3
# CPU ve bellek sınırlarını güncelleme
sudo cgset -r cpu.cfs_quota_us=$(echo "$cpu_quota * 100000" | bc) /web/sites/$site_name
sudo cgset -r memory.limit_in_bytes=$memory_limit /web/sites/$site_name
echo "Cgroup for $site_name updated with CPU quota: $cpu_quota and Memory limit: $memory_limit bytes." }

# Web siteleri için cgroup'lar için sınırları güncelleme
update_website_limits "site1" 0.4 2G # Site 1 için CPU %40 ve 2GB bellek sınırı
update_website_limits "site2" 0.5 3G # Site 2 için CPU %50 ve 3GB bellek sınırı

Bu script, update_website_limits adında bir fonksiyon tanımlar. Bu fonksiyon, belirli bir web sitesinin cgroup'unda CPU ve bellek sınırlarını günceller. Daha sonra, bu fonksiyonu çağırarak her bir web sitesi için yeni sınırları belirleyebilirsiniz.


Powered by WISECP
Top