Linux K kernel Ayarları
Sistemin daha yüksek eşzamanlılığı desteklemesi için, event uzantısını yüklemek dışında, linux kernel'ını optimize etmek de çok önemlidir. Aşağıdaki her bir optimizasyon son derece önemlidir, lütfen sırayla tamamlayın.
Parametre açıklaması:
max-file: Sistem seviyesinde açılabilecek dosya tanıtıcılarının sayısını belirtir. Bu, tüm işletim sistemi için geçerlidir, kullanıcı için değil.
ulimit -n: Süreç seviyesinde açılabilecek dosya tanıtıcılarının sayısını kontrol eder. Mevcut
shelliçin geçerli olan kullanıcıya ve onun başlattığı işlemlere ait dosya tanıtıcılarının kontrolünü sağlar.
Sistem seviyesinde açılabilecek dosya tanıtıcılarının sayısını görmek için: cat /proc/sys/fs/file-max
Dosya açın /etc/sysctl.conf ve aşağıdaki ayarları ekleyin
# Bu parametre, sistemin TIME_WAIT sayısını ayarlamaktadır; eğer varsayılan değerden fazlaysa hemen silinecektir
net.ipv4.tcp_max_tw_buckets = 20000
# Sistem içindeki her bir portun en büyük dinleme kuyruk uzunluğunu tanımlar, bu global bir parametredir
net.core.somaxconn = 65535
# Henüz karşı tarafa onaylanmamış bağlantı isteklerinin kuyrukta kalabileceği maksimum sayı
net.ipv4.tcp_max_syn_backlog = 262144
# Her bir ağ arayüzünün veri paketlerini alma hızı, kernel'in bu paketleri işleme hızından hızlıysa, kuyruğa gelen veri paketlerinin maksimum sayısını belirler
net.core.netdev_max_backlog = 30000
# Bu seçenek, NAT ağındaki istemcilerin zaman aşımına uğramasına neden olur, 0 olarak ayarlanması önerilir. Linux'un 4.12 kernel versiyonundan itibaren tcp_tw_recycle yapılandırması kaldırılmıştır, "No such file or directory" hatasını görürseniz dikkate almayın
net.ipv4.tcp_tw_recycle = 0
# Sistem genelinde tüm süreçlerin açabileceği dosya sayısı
fs.file-max = 6815744
# Güvenlik duvarı izleme tablosunun boyutu. Not: Güvenlik duvarı açık değilse "net.netfilter.nf_conntrack_max" bilinmeyen anahtar hatası verir, bunu göz ardı edin
net.netfilter.nf_conntrack_max = 2621440
net.ipv4.ip_local_port_range = 10240 65000
Değişikliklerin hemen etkili olması için sysctl -p komutunu çalıştırın.
Açıklama:
/etc/sysctl.conf dosyasında birçok seçenek vardır, diğer seçenekler çevresel ihtiyaçlarınıza göre ayarlanabilir.
Açık Dosya Sayısı
Sistemin açık dosya sayısını ayarlamak, yüksek eşzamanlılık altında too many open files sorununu çözmektedir. Bu seçenek, tek bir sürecin barındırabileceği istemci bağlantı sayısını doğrudan etkiler.
Soft open files, Linux sistem parametresi olup, sistemin tek bir sürecin açabileceği maksimum dosya tanıtıcı sayısını etkiler. Bu değer, uzun bağlantı uygulamaları olan sohbet gibi tek bir sürecin sürdürebildiği kullanıcı bağlantı sayısını etkiler. ulimit -n komutunu çalıştırarak bu parametre değerini görebilirsiniz; değer 1024 ise, bu durum tek bir sürecin aynı anda en fazla 1024 (diğer dosya tanıtıcıları açık olduğu için daha az olabilir) bağlantıyı sürdürebileceği anlamına gelir. Eğer 4 süreç açar ve kullanıcı bağlantılarını sürdürebilirseniz, toplam uygulama aynı anda maksimum 4*1024 bağlantıyı barındırabilir; yani en fazla 4x1024 kullanıcı çevrimiçi olabilir. Bu ayarı artırarak daha fazla TCP bağlantısının sürdürülmesini sağlayabilirsiniz.
Soft open files'ı değiştirmek için üç yöntem:
Birinci yöntem: Terminalde doğrudan ulimit -HSn 102400 komutunu çalıştırın, ardından workerman'ı yeniden başlatın.
Bu yalnızca mevcut terminal için geçerlidir; çıkış yaptığınızda, açık dosyalar varsayılan değere geri döner.
İkinci yöntem: /etc/profile dosyasının sonuna ulimit -HSn 102400 satırını ekleyin, bu şekilde her terminal oturumunda otomatik olarak çalıştırılacaktır. Değişiklikten sonra workerman'ı yeniden başlatmanız gerekir.
Üçüncü yöntem: Açık dosya sayısının kalıcı olarak değişmesini istiyorsanız, yapılandırma dosyasını değiştirmelisiniz: /etc/security/limits.conf. Bu dosyanın sonuna ekleyin:
* soft nofile 1024000
* hard nofile 1024000
root soft nofile 1024000
root hard nofile 1024000
Bu yöntem, değişikliklerin geçerli olması için sunucunun yeniden başlatılmasını gerektirir.