Pada pencarian relay kami memperlihatkan titik merah di samping nama pendek relay saat memiliki muatan yang berlebihan. Ini berarti satu atau lebih metrik beban sudah terpicu:

Ingat jika sebuah relay mencapai keadaan kelebihan beban kami memperlihatkannya sampai 72 jam setelah relay pulih.

Jika Anda melihat relay Anda kelebihan bebas mohon untuk:

  1. Mengecek https://status.torproject.org/ untuk berbagai masalah yang telah diketahui dalam kategori "Jaringan Tor".

  2. Pertimbangkan tuning sysctl untuk sistem Anda untuk jaringan, memori dan beban CPU.

  3. Pertimbangkan mengaktifkan MetricsPort untuk mengetahui apa yang terjadi.

Penyetelan sysctl untuk jaringan, memori, dan beban CPU

Kelelahan port TCP

Jika Anda mengalami kelelahan port TCP pertimbangkan untuk mengekspansi range port lokal Anda. Anda bisa melakukan itu dengan

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

Atau

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

Ingat bahwa menyetel sysctl seperti yang dijelaskan tidak permanen dan akan hilang setelah pemulaian ulang. Anda perlu menambahkan konfigurasinya ke /etc/sysctl.conf atau ke sebuah file di dalam /etc/sysctl.d/ untuk membuatnya permanen.

MetricsPort

Untuk memahami kesehatan relay-relay Tor dan jaringan Tor, penting untuk menyediakan dan memiliki akses ke metrik-metrik relay. Informasi kelebihan beban relay telah ditambahkan ke deskriptor relay sejak 0.4.6+ namun tidak sampai Tor >= 0.4.7.1-alpha sebuah antar muka untuk metrik di bawahnya tersedia: port metrik.

Mengaktifkan MetricsPort

Tor memberikan akses ke port metrik melewati opsi konfigurasi yang disebut dengan MetricsPort.

Penting untuk memahami bahwa mengekspos MetricsPort tor secara publik itu berbahaya untuk pengguna jaringan Tor, itulah sebabnya port tersebut tidak diaktifkan secara default dan aksesnya perlu diatur dengan aturan akses. Mohon untuk mengambil kewaspadaan dan perhatian ekstra saat membuka port ini, dan tutup jika Anda telah selesai debugging.

Mari berasumsi bahwa Anda adalah satu satunya pengguna pada sebuah server yang menjalankan Tor relay Anda dapat mengaktifkan port metrik dengan menambahkan ini ke file torrc Anda:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

Dan Anda dapat dengan mudah mendapatkan metriknya dengan:

# curl http://127.0.0.1:9035/metrics

Yang secara default dalam format Prometheus.

Catatan: setiap pengguna pada server tersebut akan dapat mengakses metrik relay di dalam contoh di atas. Secara umum, pasang aturan akses yang sangat ketat dengan MEtricsPortPolicy dan pertimbangkan menggunakan fitur firewall sistem operasi Anda untuk pertahanan secara mendalam.

Untuk penjelasan lebih lanjut mengenai MetricsPort dan MetricsPortPolicy lihat laman tor man

Output MetricsPort

Berikut adalah contoh dari output dengan mengaktifkan MetricPort:

# 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

Mari mencari tahu apa arti sebenarnya beberapa bari ini:

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

Ketika sebuah relay mulai melihat "dijatuhkan", ini biasanya adalah masalah CPU/RAM.

Tor sayangnya single threaded kecuali ketika saat "onion skins" telah diproses. "Onion skins" adalah kerja kriptografis yang perlu dilakukan pada "lapisan onion" yang terkenal di setiap sirkuit.

Saat tor memproses lapisan kami menggunakan thread pool dan melakukan outsource seluruh pekerjaan ke pool tersebut. Ini bisa terjadi bahwa pool ini mulai menjatuhkan pekerjaan karena tekanan memori atau CPU dan ini akan memicu keadaan kelebihan beban.

Jika server Anda sedang berjalan pada kapasitas ini kemungkinan besar akan terpicu.

tor_relay_exit_dns_error_total{...}

Seluruh penagkal di dalam bidang "*_dns_error_total" mengindikasikan potensial masalah yang berkaitan dengan DNS. However, we realized during the 0.4.7 release cycle that DNS errors are way too noisy and contain too many false positives to be useful for overload reporting purposes. We therefore don't use them anymore for that purpose starting with 0.4.6.9 and 0.4.7.4-alpha. However, we still keep DNS metrics around to give the relay operator insight into what is going on with their relay.

DNS timeout issues and errors only apply to Exit nodes.

tor_relay_load_oom_bytes_total{...}

An Out-Of-Memory invocation indicates a RAM problem. The relay might need more RAM or it is leaking memory. If you noticed that the tor process is leaking memory, please report the issue either via Tor gitLab or sending an email to the tor-relays mailing list.

Tor has its own OOM handler and it is invoked when 75%, of the total memory tor thinks is available, is reached. Thus, let say tor thinks it can use 2GB in total then at 1.5GB of memory usage, it will start freeing memory. That is considered an overload state.

To estimate the amount of memory it has available, when tor starts, it will use MaxMemInQueues or, if not set, will look at the total RAM available on the system and apply this algorithm:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

To avoid an overloaded state we recommend to run a relay above 2GB of RAM on 64bit. 4GB is advised, although of course it doesn't hurt to add more RAM if you can.

One might notice that tor could be called by the OS OOM handler itself. Because tor takes the total memory on the system when it starts, if the overall system has many other applications running using RAM, it ends up eating too much memory. In this case the OS could OOM tor, without tor even noticing memory pressure.

tor_relay_load_socket_total

These lines indicate the relay is running out of sockets. The solution is to increase ulimit -n for the tor process.

tor_relay_load_tcp_exhaustion_total

These lines indicate the relay is running out of TCP ports.

Try to tune sysctl as described above.

tor_relay_load_global_rate_limit_reached_total

If this counter is incremented by some noticeable value over a short period of time, the relay is congested. It is likely being used as a Guard by a big onion service or for an ongoing DDoS on the network.

If your relay is still overloaded and you don't know why, please get in touch with network-report@torproject.org. You can encrypt your email using network-report OpenPGP key.