Arama sırasında, aşırı yüklenmiş aktarıcıların takma adının yanında sarı bir nokta görüntülenir. Bunun anlamı, aşağıdaki yük ölçümlerinden birinin veya birkaçının tetiklendiğidir:

Bir aktarıcı aşırı yüklendiğinde, bu simgeyi aktarıcının düzelmesinden sonraki 72 saat boyunca göstermeyi sürdürdüğümüzü unutmayın.

Aktarıcınızın aşırı yüklendiğini fark ederseniz lütfen:

  1. Bilinen sorunlar için https://status.torproject.org/ adresindeki "Tor network" kategorisine bakın.

  2. Ağ, bellek ve işlemci yükü için sisteminizin sysctl ayarını değiştirmeyi değerlendirin.

  3. Neler olduğunu anlamak için MetricsPort seçeneğini etkinleştirmeyi değerlendirin.

Ağ, bellek ve işlemci yükü için sysctl ayarını yapmak.

TCP bağlantı noktalarının tükenmesi

TCP bağlantı noktaları tükeniyorsa, yerel bağlantı noktası aralığınızı genişletmeyi değerlendirin. Bu işlemi şu komut ile yapabilirsiniz

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

ya da

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

Açıklanan sysctl ayarlarının kalıcı olmayacağını ve yeniden başlatma sonrasında kaybolacağını unutmayın. Yapılandırmayı kalıcı kılmak için /etc/sysctl.conf ya da /etc/sysctl.d/ dosyasına kaydetmeniz gerekir.

MetricsPort

Tor aktarıcılarının ve Tor ağının ne durumda olduğunu anlamak için aktarım ölçümlerini sunmak ve bunlara erişim sağlamak hayati önem taşır. 0.4.6+ sürümünden başlayarak aktarıcı tanımlayıcılarına aktarıcı aşırı yük bilgisi eklendi. Ancak Tor >= 0.4.7.1-alfa sürümüne kadar, temel aktarıcı ölçümlerine yönelik bir arabirim yoktu: Ölçüm bağlantı noktası.

MetricsPort özelliğini etkinleştirmek

Tor, MetricsPort adlı bir torc yapılandırma seçeneği ile ölçüm bağlantı noktasına erişim sağlar.

tor MetricsPort özelliğini herkese açık olarak sunmanın Tor ağı kullanıcıları için tehlikeli olduğunun anlaşılması önemlidir. Bu nedenle bu bağlantı noktası varsayılan olarak etkin değildir ve bir erişim ilkesi kullanılarak erişilmelidir. Lütfen bu bağlantı noktasını açarken ek önlem ve özen gösterin ve hata ayıklama işlemini bitirdiğinizde kapatın.

Tor aktarıcısı işleten bir sunucuda tek kullanıcı olduğunuzu varsayalım. Ölçüm bağlantı noktasını etkinleştitmek için şu satırları torc dosyasına ekleyin:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

Ardından, ölçümleri şu şekilde kolayca alabilirsiniz:

# curl http://127.0.0.1:9035/metrics

veriler varsayılan olarak Prometheus biçimindedir.

Not: Bu sunucudaki her kullanıcı, yukarıdaki örnekte verilen aktarıcı ölçümlerine erişebilir. Genel olarak MetricsPortPolicy için çok katı bir erişim ilkesi belirleyin ve derinlemesine savunma için işletim sisteminizin güvenlik duvarı özelliklerini de kullanmayı değerlendirin.

MetricsPort ve MetricsPortPolicy hakkında ayrıntılı bilgi almak için tor rehberi sayfasına bakabilirsiniz.

MetricsPort çıktısı

MetricsPortseçeneği etkinleştirildiğinde şunun gibi bir çıktı üretilir:

# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total{record="A"} 0
tor_relay_exit_dns_query_total{record="PTR"} 0
tor_relay_exit_dns_query_total{record="AAAA"} 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{record="A",reason="success"} 0
tor_relay_exit_dns_error_total{record="A",reason="format"} 0
tor_relay_exit_dns_error_total{record="A",reason="serverfailed"} 0
tor_relay_exit_dns_error_total{record="A",reason="notexist"} 0
tor_relay_exit_dns_error_total{record="A",reason="notimpl"} 0
tor_relay_exit_dns_error_total{record="A",reason="refused"} 0
tor_relay_exit_dns_error_total{record="A",reason="truncated"} 0
tor_relay_exit_dns_error_total{record="A",reason="unknown"} 0
tor_relay_exit_dns_error_total{record="A",reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{record="A",reason="shutdown"} 0
tor_relay_exit_dns_error_total{record="A",reason="cancel"} 0
tor_relay_exit_dns_error_total{record="A",reason="nodata"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="success"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="format"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="serverfailed"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="notexist"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="notimpl"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="refused"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="truncated"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="unknown"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="shutdown"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="cancel"} 0
tor_relay_exit_dns_error_total{record="PTR",reason="nodata"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="success"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="format"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="serverfailed"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="notexist"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="notimpl"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="refused"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="truncated"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="unknown"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="shutdown"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="cancel"} 0
tor_relay_exit_dns_error_total{record="AAAA",reason="nodata"} 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 135
tor_relay_load_socket_total 1048544
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

Bu satırlardan bazılarının gerçekte ne anlama geldiğini öğrenelim:

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

Bir aktarıcı "dropped" olarak görülmeye başlandığında, genellikle bir işlemci/bellek sorunu vardır.

Tor, ne yazık ki, "onion skins" işlenmesi dışında tek işlemlidir. "Onion skins", her devrede ünlü "onion katmanları" üzerinde yapılması gereken şifreleme çalışmalarıdır.

Tor katmanları işlerken bir işlem havuzu kullanır ve tüm bu işlemler o havuza dış kaynak olarak sağlanır. Bu havuz, bellek veya işlemcinin yükünün artması nedeniyle çalışmakta zorlanabilir ve bir aşırı yüklenme durumunu tetikler.

Sunucunuzun yükü kapasitesine yakınsa, büyük olasılıkla bu durum tetiklenir.

tor_relay_exit_dns_error_total{...}

"*_dns_error_total" alanındaki herhangi bir sayaç, DNS ile ilgili olası bir sorunu gösterir. Bununla birlikte, 0.4.7 yayın sürecinde DNS hatalarının çok gürültü kopardığını ve aşırı yük bildirimi amaçları için yararlı olamayacak kadar çok sayıda hatalı doğru sonuç verdiğini fark ettik. Bu nedenle, onları artık 0.4.6.9 ve 0.4.7.4-alfa sürümleri ile birlikte bu amaç için kullanmıyoruz. Gene de aktarıcı işletmecilerine aktarıcılarında olup bitenler hakkında fikir vermek için DNS ölçümlerini tutmayı sürdürüyoruz.

DNS zaman aşımı sorunları ve hataları yalnızca çıkış aktarıcıları için geçerlidir.

tor_relay_load_oom_bytes_total{...}

Bellek yetersiz iletisi, bir RAM bellek sorununu gösterir. Aktarcı daha fazla belleğe gerek duyuyor olabilir veya bellek sızıntısı vardır. Tor işleminin bellek sızdırdığını fark ederseniz, lütfen sorunu Tor GitLab üzerinden bildirin veya tor-relays e-posta listesine bir e-posta gönderin.

Tor kendi bellek tükendi işleyicisini kullanır ve tor tarafından uygun olduğunu düşünülen toplam belleğin %75 kadarı kullanıldığında çağrılır. Böylece örneğin, tor toplamda 2GB uygun bellek olduğunu düşünüyorsa ve 1.5GB kullanıyorsa belleği boşaltmaya başlar. Bu bir aşırı yüklenme durumu olarak kabul edilir.

Tor kullanılabilir bellek miktarını öngörmek için başlatıldığında MaxMemInQueues seçeneğine ya da bu ayarlanmamışsa sistemde var olan toplam RAM bellek miktarına bakarak bu algoritmayı uygular:

    Eğer RAM >= 8GB {
      memory = RAM bellek * %40
    } else {
      memory = RAM bellek * %75
    }
    /* Üst sınır. */
    memory = EnAz(bellek, 8GB) -> [64bit üzerinde 8GB ve 32bit üzerinde 2GB)
    /* En düşük değer. */
    memory = EnFazla(250MB, bellek)

Aşırı yüklenmeden kaçınmak için, 64bit ve RAM belleği 2GB üzerinde olan bir aktarıcı işletmeniz önerilir. 4GB önerilir, ancak olabiliyorsa daha fazla RAM eklemenin zararı olmaz.

İşletim sistemi bellek tükendi işleyicisinin tor uygulamasını çağırdığını fark edebilirsiniz. Tor, başlatıldığında sistemdeki tüm belleği aldığından, sistem üzerinde RAM belleğini kullanarak çalışan başka uygulamalar varsa, çok fazla bellek kullanılır. Bu durumda işletim sistemi, tor bellek tükenmesini algılayamadan belleği tüketebilir.

tor_relay_load_socket_total

Bu satırlar, aktarıcı soketlerinin tükendiğini gösterir. Çözüm, tor işlemi için ulimit -n değerini artırmaktır.

tor_relay_load_tcp_exhaustion_total

Bu satırlar, aktarıcı TCP bağlantı noktalarının tükendiğini gösterir.

sysctl ayarını yukarıda anlatıldığı gibi yapmayı deneyin.

tor_relay_load_global_rate_limit_reached_total

Bu sayaç kısa bir süre içinde fark edilir bir değer kadar artarsa, aktarıcının tıkanmış olduğunu gösterir. Büyük bir onion hizmeti tarafından Koruma aktarıcısı olarak veya ağda devam eden bir DDoS için kullanılıyor olabilir.

Aktarıcınız hala aşırı yüklenmişse ve nedenini bilmiyorsanız, lütfen network-report@torproject.org adresine yazın. E-postanızı şifrelemek için network-report OpenPGP anahtarını kullanabilirsiniz.