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 Multi-Threading Yapılandırması ve Yüksek Bağlantı Sayıları için Optimizasyon

nexter

Üye
Katılım
14 Mart 2026
Mesajlar
28
Merhaba arkadaşlar, bugün sizlere özellikle yoğun trafiğe sahip sunucularınızda Memcached performansını nasıl artırabileceğinizi, multi-threading (çoklu iş parçacığı) özelliğini nasıl aktif edeceğinizi ve yüksek bağlantı sayılarına nasıl hazırlıklı olacağınızı adım adım anlatacağım. Bu optimizasyonlar, önbellek erişim gecikmelerinizi (latency) düşürüp, sunucu kaynaklarınızı daha verimli kullanmanızı sağlayacak.

🔍 Memcached Multi-Threading Nedir?
Varsayılan olarak Memcached, tek iş parçacığı (single-thread) ile çalışır. Bu, aynı anda tek bir işlem yapabildiği anlamına gelir. Modern çok çekirdekli sunucularda bu durum, CPU'nuzun büyük bir kısmının atıl kalmasına neden olur. Multi-threading özelliği, Memcached'in birden fazla iş parçacığı kullanarak eşzamanlı işlem yapabilmesini, böylece CPU çekirdeklerinizi tam kapasiteyle değerlendirmesini sağlar. Bu, özellikle saniyede binlerce istek alan sistemler için kritik bir performans artışı demektir.

⚙️ Multi-Threading Nasıl Aktif Edilir?
Bu özellik, Memcached 1.5.x ve sonraki sürümlerinde mevcuttur. Öncelikle sürümünüzü kontrol edin. Aktif etmek için Memcached servisini başlatan komutu veya systemd unit dosyasını değiştirmeniz gerekir.

Benim sunucularda genelde systemd kullandığım için, unit dosyasını düzenliyorum. Aşağıdaki komutla dosyayı düzenlemek için açalım:
Bash:
sudo systemctl edit --full memcached.service

Karşınıza çıkacak olan dosyada, `ExecStart` satırını bulun. Varsayılan hali şuna benzer:
Bash:
ExecStart=/usr/bin/memcached -u memcache -p 11211 -m 64 -c 1024 -l 127.0.0.1

Bu satırın sonuna multi-threading parametrelerini ekleyeceğiz. Benim önerim, sunucunuzdaki fiziksel CPU çekirdek sayısı kadar thread kullanmanız. Çekirdek sayınızı öğrenmek için:
Bash:
nproc

Diyelim ki 8 çekirdek çıktı. O zaman `ExecStart` satırını aşağıdaki gibi güncelliyoruz:
Bash:
ExecStart=/usr/bin/memcached -u memcache -p 11211 -m 4096 -c 8192 -l 127.0.0.1 -t 8

Buradaki `-t 8` parametresi, Memcached'in 8 iş parçacığı kullanacağını belirtir. Ayrıca `-m 4096` ile belleği 4GB'a, `-c 8192` ile de maksimum eşzamanlı bağlantı limitini artırdığıma dikkat edin. Bu değerleri kendi sunucu kaynaklarınıza göre ayarlamalısınız.

Değişiklikten sonra servisi yeniden başlatmayı unutmayın:
Bash:
sudo systemctl daemon-reload
sudo systemctl restart memcached

📈 Yüksek Bağlantı Sayıları için Optimizasyon
Multi-threading aktif olsa bile, işletim sistemi seviyesinde yapılması gereken bazı ayarlar var. Aksi takdirde "Cannot assign requested address" veya bağlantı kuyruğu dolması gibi hatalarla karşılaşabilirsiniz.

İlk olarak, Linux'un bir seferde izin verdiği dosya tanımlayıcı (file descriptor) limitini artıralım. Bu limit, Memcached'in aynı anda yönetebileceği bağlantı sayısını doğrudan etkiler.
Bash:
sudo nano /etc/security/limits.conf

Dosyanın sonuna aşağıdaki satırları ekleyin:
Kod:
 soft nofile 65536
 hard nofile 131072
memcache soft nofile 65536
memcache hard nofile 131072

İkinci önemli nokta, Linux TCP/IP yığını ayarları. Özellikle `net.core.somaxconn` değeri, bağlantı kabul kuyruğunun boyutunu belirler. Bu değeri artırmak, ani trafik patlamalarında bağlantı kayıplarını önler.
Bash:
sudo nano /etc/sysctl.conf

Dosyanın sonuna aşağıdaki satırları ekleyin:
NGINX:
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 4096

Değişiklikleri uygulamak için:
Bash:
sudo sysctl -p

⚠️ Dikkat Edilmesi Gerekenler
Şu ayara çok dikkat etmelisiniz: `-l` parametresi (bağlanılacak IP adresi). Yukarıdaki örneklerde `127.0.0.1` kullandık, yani sadece localhost'tan bağlantı kabul ediyor. Eğer Memcached'i ağ üzerinden erişilebilir yapacaksanız (ki genelde önermem, güvenlik için), sunucunun iç IP'sini belirtmeli veya `0.0.0.0` kullanarak tüm arayüzleri dinlemelisiniz. Ancak bu durumda mutlaka güvenlik duvarınızla (iptables/ufw) erişimi kısıtlamalısınız.

Ayrıca, `-m` ile belirlediğiniz bellek miktarı, sunucunuzdaki boş RAM'in %80'ini geçmemeli. Swap kullanımı Memcached performansını öldürür.

🔧 Performans Testi ve Monitorizasyon
Ayarlarınızı yaptıktan sonra her şeyin yolunda gittiğinden emin olun. Memcached istatistiklerini kontrol etmek için:
Bash:
echo stats | nc 127.0.0.1 11211

Çıktıda `threads` satırını arayın. Değerin sizin belirlediğiniz thread sayısını (örneğimizde 8) göstermesi gerekir. Ayrıca `curr_connections` değerini de gözlemleyerek bağlantı yükünüzü takip edebilirsiniz.

Sonuç olarak, bu optimizasyonlar özellikle WordPress, XenForo, Magento gibi yoğun veritabanı sorguları çalıştıran ve Memcached'i aktif olarak kullanan sistemlerde gözle görülür bir iyileşme sağlayacaktır. CPU kullanımınız daha dengeli dağılacak ve sunucunuz daha fazla eşzamanlı kullanıcıyı sorunsuz karşılayabilecektir.

Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? Farklı bir thread sayısı veya özel bir parametre kullanan var mı? Ya da bu ayarları yaptıktan sonra performans artışını gözlemleyen? Deneyimlerinizi ve sorularınızı aşağıya yazmaktan çekinmeyin. Hep birlikte öğ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