Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Memcached Performans Ayarları: Bağlantı Sınırları, Bellek Tahsisi ve İzleme Metrikleri

asteron

Üye
Katılım
14 Mart 2026
Mesajlar
28
Merhaba arkadaşlar, bugün sizlere özellikle yoğun trafiğe sahip sunucularınızda MySQL yükünü ciddi oranda azaltan, uygulama hızınızı gözle görülür şekilde artıran Memcached'in performansını nasıl tırnak içine alacağımızı anlatacağım. Doğru ayarlanmamış bir Memcached, beklenen faydayı sağlamayacağı gibi, kaynak israfına ve hatta bağlantı sorunlarına yol açabilir. Benim sunucularda genelde uyguladığım kritik ayarları ve izleme yöntemlerini paylaşacağım.

🔧 Temel Performans Parametreleri ve Ayarları

Memcached'in performansı, başlıca üç ana parametreye bağlıdır: eşzamanlı bağlantı sayısı, bellek tahsisi ve bellek kullanım algoritması. Varsayılan ayarlar genellikle üretim ortamı için yetersiz kalır.

En kritik ayarlar, başlangıç parametrelerinde yatar. Memcached'i systemd ile yönetiyorsanız, /etc/systemd/system/memcached.service.d/override.conf dosyasını oluşturup düzenlemek en temiz yöntemdir. Ya da direkt /etc/memcached.conf dosyasını düzenleyebilirsiniz.

İşte benim yüksek trafikli sistemlerde kullandığım örnek bir başlatma parametresi:

Bash:
# /etc/memcached.conf veya systemd override'ında kullanılacak parametreler
-p 11211
-U 0
-m 4096
-c 8192
-t 8
-o modern

Şimdi bu parametreleri tek tek açıklayalım:
-m 4096: Memcached'e tahsis edilecek maksimum bellek miktarıdır (MB cinsinden). Bu örnekte 4GB. Sunucunuzun fiziksel RAM'inin %70-80'ini geçmemesine, swap'e düşmemesine özen gösterin.
-c 8192: Maksimum eşzamanlı bağlantı sayısı. Varsayılanı 1024'tür ve yoğun uygulamalarda (WordPress, XenForo, özel yazılımlar) bu limit çok çabuk dolabilir. Uygulamanızın bağlantı havuzu ayarına göre bu değeri artırın. Çok yüksek tutmak da gereksiz bellek tüketimine yol açar, dikkatli olun.
-t 8: Çalışacak iş parçacığı (thread) sayısı. Genellikle sunucunuzdaki fiziksel CPU çekirdek sayısı kadar veya biraz altında tutmak idealdir. Çok fazla thread, kilitlenme (lock contention) sorunlarına neden olabilir.
-o modern: Bellek kullanım algoritmasını seçer. `modern` seçeneği, daha verimli bir slab dağıtımı sağlar ve parçalanmayı (fragmentation) azaltmaya yardımcı olur. Daha eski sürümlerde `slab_reassign, slab_automove` gibi ayrı seçenekler kullanılırdı.

📈 Memcached'i İzleme ve Metrikleri Anlama

Ayarları yaptık, peki performansı nasıl takip edeceğiz? Memcached, `stats` komutu ile çok detaylı metrikler sunar. Bu metrikleri anlamak, sorun gidermenin ilk adımıdır.

Memcached'e telnet veya netcat ile bağlanıp `stats` komutunu çalıştıralım:

Bash:
echo "stats" | nc localhost 11211

Karşınıza çıkacak metriklerden en önemlileri şunlar:
curr_connections: Anlık aktif bağlantı sayısı. `-c` parametresi ile belirlediğiniz maksimum değere yaklaşıyorsa, bağlantı limitinizi artırmanın zamanı gelmiş demektir.
cmd_get / get_hits: `get_hits / cmd_get` oranı HİT ORANINIZDIR. Bu oran mümkün olduğunca 1'e (%100'e) yakın olmalıdır. %90'ın altına düşüyorsa, cache'lenen veri boyutları çok küçük olabilir veya önbellek süreleriniz (TTL) çok kısadır.
evictions: Bellek dolduğu için önbellekten atılan öğe sayısı. Bu değer sürekli artıyorsa, `-m` ile belirlediğiniz bellek miktarı yetersiz kalıyor demektir. Belleği artırmayı veya gereksiz verileri cache'lememeyi düşünmelisiniz.
bytes: Kullanılan toplam bellek bayt cinsinden. `-m` parametresinde belirttiğiniz sınıra ne kadar yaklaştığınızı gösterir.

⚠️ Kritik Uyarılar ve Optimizasyon İpuçları

Şu ayara çok dikkat etmelisiniz: Bağlantı limiti (-c). Eğer uygulamanız "cannot connect to memcached" benzeri hatalar veriyorsa, ilk bakacağınız yer burasıdır. Ayrıca, Memcached'i dinleyeceği arayüzü de kısıtlamak güvenlik için önemlidir. Sadece localhost'tan (`-l 127.0.0.1`) veya güvenli bir iç ağ IP'sinden dinlemesini sağlayın.

Bir diğer önemli nokta, uygulama tarafındaki bağlantı havuzu ayarlarıdır. Memcached sunucusunda yüksek limitler belirleseniz bile, PHP veya uygulamanızın kütüphanesi (örneğin `memcached` PHP eklentisi) daha düşük bir havuz boyutu kullanıyorsa, performans darboğazı yaşanır. Bu ayarları da uygulama/config seviyesinde kontrol edin.

Son olarak, Memcached servisini değişikliklerden sonra mutlaka yeniden başlatmayı unutmayın:

Bash:
sudo systemctl restart memcached
# Ayarların doğru yüklendiğinden emin olun
sudo systemctl status memcached

🎯 Sonuç

Doğru yapılandırılmış bir Memcached, sunucu yükünüzde mucizeler yaratabilir. İşin özü, uygulamanızın trafik profilini anlamak ve `-c` (bağlantı), `-m` (bellek) parametrelerini buna göre, `stats` komutu ile sürekli izleyerek ayarlamaktır.

Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı kullandığınız parametreler veya izleme araçları var mı? Ya da takıldığınız bir nokta olursa, aşağıya yazmaktan çekinmeyin. Hep birlikte tartışıp öğrenelim.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri