عند البحث عن المُرحّل، نعرض نقطة كهرمانية بجوار كنية المُرحّل عندما يكون مُحمَّلا فوق طاقته. هذا يعني أنه تم تشغيل واحد أو أكثر من قياسات الحمولة التالية:

لاحظ أنه إذا وصل المُرحّل إلى حالة الحمولة الزائدة، فإننا نعرضه لمدة 72 ساعة بعدما تخف الحمولة عن ذلك المُرحّل.

إذا لاحظت أن مُرحّلك مُثقَل فوق طاقته، فيرجى:

  1. تفقد https://status.torproject.org/‎ للبحث عن أي مشاكل معروفة في فئة "شبكة تور".

  2. ضع في اعتبارك ضبط sysctl لنظامك للشبكة وللذاكرة ولمقدار الحمولة على وحدة المعالجة المركزية.

  3. ضع في اعتبارك تفعيلMetricsPort لفهم ما يحدث.

ضبط sysctl للشبكة والذاكرة والحمولة التي على وحدة المعالجة المركزية

استنفاد منافذ TCP

إذا واجهت استنفاد منافذ TCP، ففكر في توسيع نطاق مَنفذك المحلي. يمكنك فعل ذلك مع

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

أو

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

ضع في اعتبارك أن ضبط sysctl كما هو موضح ليس دائما وسيضيع عند إعادة التشغيل. تحتاج إلى إضافة التهيئة إلى ‎/etc/sysctl.conf أو إلى ملف في/etc/sysctl.d/لجعلها دائمة.

MetricsPort

لفهم سلامة مُرحّلات تور وشبكة تور، من الحيوي توفير مؤشرات الترحيل والوصول إليها. لقد تمت إضافة معلومات الحمولة الزائدة للمُرحّل إلى واصفات المُرحّل منذ الإصدار 0.4.6، ولكن لم يكن الأمر كذلك إلا بعد إصدار تور 0.4.7.1-alpha، إذ تم توفير واجهة لقياسات المُرحّل الأساسية: منفذ القياسات.

تفعيل MetricsPort

يوفر تور الوصول إلى منفذ المؤشرات عبر خيار تهيئة torrc يُسمى MetricsPort.

من المهم أن نفهم أن كشف منفذ تور MetricsPort علنا يُعد أمرا خطيرا لمستخدمي شبكة تور ، ولهذا السبب لا يتم تفعيل هذا المنفذ افتراضيا ويجب أن يكون تفعيله خاضعا لسياسة الدخول. يرجى اتخاذ مزيد من الحيطة والحذر عند فتح هذا المنفذ، وإغلاقه فور الانتهاء من إصلاح العلل.

لنفترض أنك المستخدم الوحيد على الخادم الذي يقوم بتشغيل مُرحّل تور. يمكنك تفعيل منفذ المؤشرات بإضافة هذا إلى ملف torrc الخاص بك:

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

وبعد ذلك ستتمكن من جلب القياسات بسهولة باستخدام:

# curl https://127.0.0.1:9035/metrics

والتي تكون بشكل افتراضي بتنسيق بروميثيوس.

ملاحظة: سيتمكن كل مستخدم على هذا الخادم من الوصول إلى مؤشرات الترحيل في المثال أعلاه. بشكل عام، ضع سياسة وصول صارمة للغاية باستخدام MetricsPortPolicyوفكر في استخدام ميزات جدار الحماية لأنظمة تشغيلك لأجل الدفاع المُعمَّق.

للحصول على شرح أكثر تفصيلاً حول MetricsPort و MetricsPortPolicy تفقد صفحة تور الرئيسة.

مخارج MetricsPort

فيما يلي مثال لما سينتجه تفعيل MetricsPort (لقد حذفنا أي مقاييس مرتبطة بالتحكم في الازدحام لأننا ما زلنا بحاجة إلى جعل تلك الواجهة أكثر استقرارا):

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# 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
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",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 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{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# 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_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 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_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

دعنا نتعرف على ما تعنيه بعض هذه السطور في الواقع:

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

عندما يبدأ المُرحّل برؤية "dropped"، يكون ذلك عادةً مشكلة في وحدة المعالجة المركزية أو في ذاكرة الوصول العشوائي.

للأسف، لدى تور سلسلة عمل واحدة إلا عند معالجة "قشور البصل". "قشور البصل" هي عملية التعمية التي يجب القيام به على "طبقات البصل" المشهورة في جميع المسارات.

عندما يعالج تور الطبقات، فإننا نستخدم ’تجمع سلاسل العمليات‘ (thread pool) ونعهد بكل هذا العمل إلى هذا التجمع. يمكن أن يبدأ هذا التجمع في إسقاط عمليات بسبب الضغط على الذاكرة أو على وحدة المعالجة المركزية وهذا سيؤدي إلى حالة من الحمولة الزائدة.

إذا كان خادمك يعمل بأقصى طاقته، فمن المحتمل أن يتم تشغيل هذا.

tor_relay_exit_dns_error_total{...}

يشير أي عداد في النطاق "* _dns_error_total" (باستثناء عداد الاستعلامات الناجحة) إلى مشكلة محتملة متعلقة بنظام أسماء النطاقات. ومع ذلك، فقد أدركنا خلال دورة الإصدار 0.4.7 أن أخطاء DNS مزعجة للغاية وتحتوي على الكثير من الإيجابيات المزيفة بحيث لا تكون مفيدة لأغراض الإبلاغ عن الحمولة الزائدة. لذلك لم نعد نستخدمها لهذا الغرض بدءا من الإصدارين 0.4.6.9 و 0.4.7.4 البدئي (alpha). ومع ذلك، ما زلنا نحتفظ بمؤشرات DNS حولنا لإعطاء مشغل المُرحّل نظرة ثاقبة عما يجري مع المُرحّل الخاص بهم.

لا تنطبق مشكلات وأخطاء مهلة DNS إلا على عقد الخروج.

tor_relay_load_oom_bytes_total{...}

يشير استدعاء نفاد الذاكرة (Out-Of-Memory) إلى وجود مشكلة في ذاكرة الوصول العشوائي. قد يحتاج المُرحّل إلى مزيد من ذاكرة الوصول العشوائي أو أنه يتسبب في تسريب الذاكرة. إذا لاحظت أن عملية تور تتسبب في ضياع للذاكرة، فيرجى الإبلاغ عن المشكلة إما عبر Tor gitLab أو من خلا إرسال بريد إلكتروني إلى القائمة البريدية لـ tor-relays.

لدى تور معالج OOM الخاص به ويتم استدعاؤه عندما يتم الوصول إلى 75٪ من إجمالي الذاكرة التي يعتقد تور أنها متوفرة. وبالتالي، لنفترض أن تور يعتقد أنه يمكنه استخدام 2 غيغابايت من مجموع الذاكرة، فحالما يصل إلى 1.5 غيغابايت من استخدام الذاكرة، سيبدأ في تحرير الذاكرة. هذا يعتبر حالة الحمولة الزائدة.

لتقدير حجم الذاكرة المتوفرة، عند بدء تشغيل تور، سيستخدم MaxMemInQueues، أو إذا لم يتم ضبطه، سوف ينظر في إجمالي ذاكرة الوصول العشوائي المتاحة على النظام ثم سيطبق هذه الخوارزمية:

    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)

لتجنب حالة التحميل الزائد، نوصي بتشغيل مُرحّل يزيد عن 2 غيغابايت من ذاكرة الوصول العشوائي على المعالج ذو 64 بِتْ. يُنصح بسعة 4 جيجا بايت، على الرغم من أنه لا يضر بالطبع إذا أضفت المزيد من ذاكرة الوصول العشوائي (RAM) إذا استطعت. ملاحظة: إذا كنت تشغل خادم قوي به الكثير من ذاكرة الوصول العشوائي (RAM)، فقد ينتهي بك الأمر إلى حالة تحميل زائد بسبب الحد الافتراضي لحجم قائمة الانتظار وهو 8 جيجابايت، على الرغم من أنه لا يزال لديك الكثير من ذاكرة الوصول العشوائي (RAM) غير المستخدمة. قم بإضافة إدخال MaxMemInQueues مناسب إلى تكوين torrc الخاص بك في هذه الحالة.

قد يلاحظ المرء أنه يمكن استدعاء تور بواسطة مدير نفاذ الذاكرة لنظام التشغيل نفسه. نظرا لأن تور يأخذ إجمالي الذاكرة على النظام عند بدء تشغيله، إذا كان لدى النظام بشكل العام العديد من التطبيقات الأخرى التي تعمل من خلال ذاكرة الوصول العشوائي، فإنه يستهلك بذلك الكثير من الذاكرة. في هذه الحالة، قد يبلغ نظام التشغيل عن نفاذ الذاكرة (OOM)، دون الانتباه حتى للضغط على الذاكرة.

tor_relay_load_socket_total

إذا كان عدد المقابس المفتوحة قريبا من إجمالي المقابس المتاحة أو كان يساويها، فهذا يشير إلى أن المُرحّل استنفذ جميع المقابس. الحل هو زيادة ulimit -n لعملية تور.

tor_relay_load_tcp_exhaustion_total

تشير هذه الخطوط إلى نفاذ المُرحّل من منافذ TCP.

حاول ضبط sysctl كما هو مُوضَّح أعلاه.

tor_relay_load_global_rate_limit_reached_total

إذا ازداد هذا العداد بقيمة ملحوظة خلال فترة زمنية قصيرة، فإن المُرحّل يكون مزدحما. من المحتمل أن يتم استخدامه كحارس بواسطة خدمة بصلية كبيرة أو عند وجود المستمر لهجمات الحرمان من الخدمة على الشبكة.

إذا كان المُرحّل لا يزال مُحمَّلا بشكل زائد ولا تعرف السبب، فيرجى الاتصال بـ [email protected]. يمكنك تعمية بريدك الإلكتروني باستخدام مفتاح OpenPGP لتقرير الشبكة.