# 了解「負載過高」狀態與診斷方式

在中繼搜索中，如果中繼過載，中繼暱稱旁邊將顯示黃色小點。 那就表示下列的負載指標裡，至少有一項被觸發了：

- 由於可用記憶體量偏低導致洋蔥路由發出 OOM 警訊
- 有任何洋蔥表皮被丟失的情況
- TCP 連接埠號被耗盡

請注意，當中繼節點發生負荷超載的情況時，即使負載量降回正常範圍內，也要等 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

想要了解 Tor 中繼和 Tor 網絡的運行情況，提供並可訪問中繼指標是至關重要的。 從 0.4.6+ 開始，中繼超載資訊被加入到中繼描述符中，但直到 Tor 0.4.7.1-alpha 之後，才提供底層中繼指標的接口：指標接口。

### 正在啟用 MetricsPort

通過 torrc 配置選項`MetricsPort`，Tor 提供指標端口的訪問。

重要的是要明白， 對 Tor 網路用戶，公開暴露 Tor MetricsPort 是為危險的，因此該端口默認不啟用，而且其訪問必須受到訪問政策的約束。 因此當開啟這個連接埠時請特別小心謹慎，並且務必在完成除錯後將它關閉。

假設你是運行了 Tor 中繼的伺服器上的唯一用戶。 可以在 torrc 文件中添加以下內容來啟用指標端口：

    MetricsPort 127.0.0.1:9035
    MetricsPortPolicy accept 127.0.0.1

然後使用以下命令可輕鬆獲取指標：

`# curl http://127.0.0.1:9035/metrics`

預設為 Prometheus 格式。

注意： 該伺服器上的每個用戶都能夠訪問上述例子中的中繼指標。 通常，可通過`MetricsPortPolicy` 設置嚴格的訪問政策，並考慮使用作業系統防火牆功能進行深度防禦。

關於 `MetricsPort` 和`MetricsPortPolicy`更詳細的解釋，請參閱 tor 的 man 頁面。

### 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

當中繼節點開始出現「丟失」訊息時，通常是中央處理器或記憶體相關的問題造成的。

遺憾的是 Tor 是單線程的 除了 處理“洋蔥皮”時. 所謂的「洋蔥表皮」是指在每條迴路中，需要針對每個「洋蔥包覆層」進行的加解密運算處理。

當 Tor 在針對包覆層進行處理時，會將其運算作業交付給執行緒池負責。 因此當這個執行緒池遇到記憶體或中央處理器資源吃緊的情況時，有可能會開始丟失掉須處理的運算工作，進而觸發了負荷超載狀態。

當您的伺服器運算資源有限時，這種情況就有可能會發生。

### tor_relay_exit_dns_error_total{...}

“*_dns_error_total” 領域的任何計數器（成功查詢的除外）都表明可能存在 DNS 相關的問題。 然而，我們在 0.4.7 的發佈週期中意識到，DNS 錯誤的噪音太大，且包含太多的假陽性，不可用於超載報告。 因此，從 0.4.6.9 和 0.4.7.4-alpha 開始，我們不再將其用於此目的。然而，為了便於中繼營運者瞭解中繼發生了什麼，仍然保留了 DNS 指標。

DNS 超時問題和錯誤只適用於出口節點。

### tor_relay_load_oom_bytes_total{...}

而 OOM 的指示訊息通常是由記憶體造成的。 您的中繼節點可能需要增加記憶體，或者也有可能是有記憶體洩漏的問題。 若您發現洋蔥路由程式有記憶體洩漏的現象，麻煩請將問題通報至洋蔥路由的 GitLab，或者是直接寄發電子郵件至洋蔥路由中繼節點的郵件論壇。

洋蔥路由有內建 OOM 管理模組，當它可用的總記憶體空間使用量達 75%時，此訊息就會被觸發。 因此，假設 tor 認為總共可用 2GB，當記憶體使用到 1.5GB 時就會開始釋放記憶體。 此時就會被視為是負荷超載狀態。

為估算可用記憶體總量，Tor 會以啟動時`MaxMemInQueues`的設定值為準；如果此值未被設定，那它就會針對系統裡的總記憶體量以下列演算法求算出來：

    if RAM >= 8GB {
    memory = RAM * 40%
    } else {
    memory = RAM * 75%
    }
    /* 已設上限。 */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* 最小值。 */
    memory = max(250MB, memory)

要避免進入負荷超載的狀態，我們建議若是使用 64 位元的電腦架設中繼節點的話，那至少要安裝 2GB 的主記憶體。 如果能夠安裝到 4GB 當然是更好，當然，盡可能的加大記憶體是有利無害的。 注意：若你使用記憶體很大的高效能伺服器，仍可能因預設佇列大小上限 8GB 而顯示負載過高，即使還有很多 RAM 未使用。此時請在 `torrc` 加入適當的 `MaxMemInQueues` 設定。

您或許也會發現，Tor 的 OOM 訊號也有可能會被作業系統觸發。 因為 Tor 在啟動時，會以整個系統所擁有的記憶體總量去估算其可用量，而當系統中已經有執行許多佔用大量記憶體的程式時，它就會耗用掉過多的記憶體空間。 在這種情況下，即使洋蔥路由程式本身沒有偵測到記憶體不足的情況，作業系統也仍會呼叫並觸發洋蔥路由的 OOM 訊號。

### tor_relay_load_socket_total

如果打開的 socket 端口數量接近或等於可用的總數，那麼這就表明，中繼 socket 端口快要用盡了。 解決方式就是增加洋蔥路由行程的`ulimit -n`設定值。

### tor_relay_load_tcp_exhaustion_total

這幾行訊息代表中繼節點已經耗盡 TCP 連接埠。

請嘗試依照上述方法調整`sysctl`設定值。

### tor_relay_load_global_rate_limit_reached_total

若發現此計數器的數值在短時間內爆增的話，就表示該中繼節點發生擁塞了。 有可能是因為它被某個洋蔥服務站台用作護衛節點，或者是遭受到網路上的分散式阻斷服務攻擊。

若您的中繼節點一直處於負荷超載狀態，且又無法查明原因的話，請聯繫network-report@torproject.org。 您可以利用network-report 的 OpenPGP 金鑰來將郵件加密。