# Day 5 淺談系統容量與 RPS、QPS、TPS

在上一篇文章中，我們深入探討了性能分析中的三個外部指標：Service Latency（處理延遲）、Throughput（吞吐量）和 Resource Utilization（資源利用率）。這些指標為我們提供了對系統性能的直觀理解。然而，當談到實際的系統設計和性能優化時，這些外部指標還需要與系統容量進行結合考量。本文將進一步探討系統容量如何影響 RPS、QPS 和 TPS 這些衡量指標，並分析如何通過這些指標來提升系統的併發能力和穩定性，從而在動態變化的負載環境中保持高效運行。

## 系統容量與併發能力

在高併發的情境中，系統容量是決定系統能夠處理多少請求的關鍵因素。這裡所指的系統容量，包含了 CPU、記憶體、I/O 和網路頻寬等資源。當系統需要處理高併發請求時，這些資源必須能夠支撐大量的併發操作。這裡，我們就要談到 RPS、QPS 和 TPS 這三個衡量系統併發能力的重要指標。

## RPS（Requests Per Second）

RPS，即每秒請求數，是指系統每秒鐘能夠處理的請求數量。這個指標通常用於衡量一個系統在高併發情境下的性能。例如，一個 API 服務的 RPS 可以告訴我們該服務在單位時間內能夠處理多少個客戶端請求。 計算公式如下：

```yaml
 RPS = 總請求數  / 完成總時間（秒）
```

範例說明： 如果一個系統在 10 秒內處理了 5000 個請求，那麼 RPS 計算如下： `RPS = 5000 / 10 =500 RPS`

舉例說明： 假設一個電子商務網站在平常的情況下，每秒處理 100 個 RPS。但是在大型促銷活動期間，RPS 突然飆升到 1000。此時，如果系統的容量未能及時擴展，便會出現處理延遲上升、錯誤率增加等問題。這時候，透過自動擴展（auto-scaling）來動態增加系統資源，能夠有效應對這樣的情況，確保服務的穩定性。然而，應用層的擴展往往還需要與後端資料庫的擴展同步進行，這樣才能真正實現高併發能力的提升，否則資料庫成為瓶頸可能會導致整體系統的性能下降。

然而，電子商務系統往往不僅僅依賴於單一服務，而是由多個服務組成，包括後端的資料庫。資料庫作為系統的核心組件之一，其擴展性通常比應用層服務更加困難。這主要是因為資料庫需要處理資料的一致性、完整性和可靠性，而這些特性在高併發的情況下尤為重要。

RPS 是衡量系統性能的重要指標之一，但它並不是單獨存在的。在實際應用中，RPS 與系統容量以及延遲等其他性能指標密切相關。當 RPS 增加時，不僅需要考慮應用層的擴展，資料庫作為後端支持的核心也必須能夠承受住更高的負載。然而，與應用層服務相比，資料庫的擴展性往往面臨更多的挑戰。接下來，我們將探討在高併發情境下，資料庫擴展所遇到的主要困難以及可行的解決方案。

### 資料庫擴展的挑戰

在高併發的情境下，資料庫面臨著更多的挑戰，Day 2 我們曾提過`短板理論`，資料庫常常是整個系統中的短板，但要能進行資料庫擴展以增加吞吐量，則會面臨以下幾個困難點：

1. 資料一致性問題︰在資料庫擴展時，特別是在進行分片或複製的情境下，維護資料的一致性變得更加複雜。當多個節點同時進行讀寫操作時，如果沒有適當的同步機制，可能會導致資料不一致的情況，進而影響系統的穩定性和數據準確性。
    
2. 資料分片的複雜性︰資料分片是實現水平擴展的一種有效方式，但它帶來的挑戰包括如何選擇適當的分片鍵、如何在不同分片之間進行查詢，以及如何處理跨分片的交易。這些問題不僅增加了系統的複雜性，還可能導致查詢效率降低。
    
3. 寫入操作的瓶頸︰在高併發情境下，資料庫的寫入操作通常是最難擴展的部分。寫入操作需要確保數據的持久性，而這往往是無法通過簡單的擴展硬體來解決的。大量的寫入請求可能導致鎖競爭，進而影響整體系統的吞吐量和響應時間。
    
4. Lock 競爭與 Dead lock︰隨著併發請求的增多，資料庫中 Lock 的競爭會變得非常激烈。如果系統設計不當，可能會導致大量的鎖定衝突，甚至引發 Dead lock 問題。這些情況會進一步拖慢系統的響應速度，影響使用者體驗。
    
5. 災難恢復與容錯性︰在資料庫擴展後，如何確保系統在出現硬體故障或其他災難情況下能夠迅速恢復，是一個非常大的挑戰。資料的安全性和一致性在任何情況下都必須得到保障，這需要在系統設計階段充分考慮到災難恢復與容錯性的需求。
    

### 解決方案與最佳實踐

儘管資料庫擴展存在諸多挑戰，但通過合理的設計和實踐，我們仍然可以有效提升資料庫在高併發情境下的性能：

* 讀寫分離：通過將讀取操作和寫入操作分離到不同的資料庫實例中，可以減輕主資料庫的負擔，提高系統的讀取性能，從而提升整體併發能力。
    
* 資料分片：根據業務需求對資料進行分片，將資料分佈到多個資料庫節點中，以分散壓力並提高查詢效率。
    
* 使用快取：在資料庫查詢之前，先檢查快取，減少直接訪問資料庫的頻率，這樣可以有效降低資料庫的讀取壓力，提升系統響應速度。
    
* CDN 與邊緣計算：對於靜態內容，使用 CDN 或邊緣計算將資料緩存到更靠近使用者的節點，減少資料庫的讀取需求，從而降低伺服器負載。
    
* NoSQL 資料庫：在一些非結構化資料或高吞吐量需求的場景中，考慮使用 NoSQL 資料庫（如 MongoDB、Cassandra），這些資料庫在某些情境下更易於擴展，能夠有效應對高併發的需求。
    
* 自動擴展：儘管資料庫擴展困難，但仍可通過自動擴展技術來動態調整資料庫節點的數量，以應對突發流量，確保系統的穩定性和高效性。
    

儘管資料庫擴展困難，但它在高併發環境中的穩定性和性能直接影響著整個系統的表現。因此，合理應對這些挑戰，才能確保整個系統在高併發情境下的運行穩定性。

## QPS（Queries Per Second）

QPS，即每秒查詢數，是指系統每秒鐘能夠處理的查詢數量。這個指標通常應用於`資料庫系統`中，衡量其在高併發讀取或寫入操作下的性能。

計算公式如下： `QPS = 總查詢數 / 完成總時間（秒）`

範例： 如果一個資料庫在 20 秒內處理了 100,000 次查詢，那麼 QPS 計算如下： `QPS = 100,000 / 20 = 5000 QPS`

與 RPS 類似，QPS 的提高通常會直接影響到資料庫的資源消耗，特別是 I/O 操作的頻率。如果 QPS 過高，而資料庫未能及時進行優化（例如增加索引、分片、優化查詢語句等），可能會導致資料庫的性能下降，進而影響整個應用程式的響應時間。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1725904304730/00996dc0-0928-4d2a-964b-1423022f09af.gif align="center")

## 併發數（Concurrency）

併發數是指系統在某一時間點上同時處理的請求數量。它是衡量系統同時處理多個任務能力的關鍵指標，特別是在高併發系統的設計和優化中，併發數是至關重要的。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724259992101/d23edf7d-af28-4943-9e41-83ed662052ce.jpeg align="center")

如圖所示，我們可以看到併發中，兩個隊列的請求被一個購票窗口處理，這意味著這些請求是輪流被處理的

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724260002336/a8653093-1254-4051-8d30-80c223f7eeff.jpeg align="center")

如圖所示，我們可以看到併發中，兩個隊列的請求被兩台購票窗口同時處理，這表明這些請求可以同時得到處理。

### 併發數的影響因素

併發數的大小會直接影響系統的性能，特別是在以下幾個方面：

1. **資源使用**：當併發數增加時，系統中可用的資源（如 CPU、記憶體、I/O 等）會被更多的請求所消耗。如果系統資源不足，則可能會導致請求處理的延遲增加，甚至引發資源瓶頸。
    
2. **回應時間**：系統的響應時間通常會隨著併發數的增加而增加，因為更多的請求需要等待資源的分配。這種情況在 I/O 密集型應用中特別明顯。
    
3. **吞吐量**：在一定的併發數範圍內，系統的吞吐量（即每秒處理的請求數）會隨著併發數的增加而提高。但是，當併發數超過系統的最佳臨界點後，吞吐量可能會下降，因為系統資源變得過於分散，導致效率降低。
    

### 併發數的最佳化策略

在設計和優化高併發系統時，需要考慮如何有效地管理和控制併發數，以避免系統性能下降。以下是一些常見的最佳化策略：

1. **併發控制機制**：通過設置併發控制機制（如併發限制、限流機制等）來防止系統超載。例如，設置最大併發數來確保系統不會同時處理超過其能力範圍的請求數量。
    
2. **非同步處理**：對於不需要立即處理或回應的任務，可以使用非同步處理來減少同步操作的壓力，從而提高系統的併發能力。例如，將 I/O 操作、遠端調用等耗時操作設計為非同步執行，從而減少對資源的競爭。
    
3. **使用快取**：在高併發情境下，通過使用快取可以減少對底層系統（如資料庫）的直接請求，從而減輕系統的負載壓力。例如，將頻繁查詢的結果緩存起來，這樣在併發數較高時，可以直接從快取中獲取結果，減少對資料庫的壓力。
    
4. **分散式架構**：採用分散式架構來分擔系統的併發壓力。例如，將系統拆分為多個微服務，並將它們部署在不同的伺服器上，以提高系統的併發處理能力。
    
5. **負載均衡**：通過負載均衡技術，將請求分配到多個伺服器上，避免單一伺服器過載。這可以有效提高系統的併發處理能力，並確保系統的高可用性。
    

### 併發數與 QPS 之間的關係

如前所述，QPS（Queries Per Second）是每秒查詢數，與併發數有著密切的關聯。兩者之間的關係可用以下公式表示：

```yaml
QPS（TPS）= 併發數 / 平均回應時間
併發數 = QPS * 平均回應時間
```

在系統設計中，確定最佳 Thread 數量是提高系統併發處理能力的關鍵。最佳 Thread 數量是剛好消耗完伺服器的瓶頸資源的臨界 Thread 數，小弟自己用的公式如下：

```yaml
最佳 Thread 數量 = （（Thread 等待時間 + Thread CPU 時間）/ Thread CPU 時間）* CPU 數量
```

* Thread 等待時間︰Thread 在等待資源（如 I/O 操作、資料庫查詢等）時所花費的時間。
    
* Thread CPU 時間︰Thread 實際在 CPU 上執行的時間。
    

#### 舉例說明：

假設一個系統有 4 個 CPU 核心，每個 Thread 的 CPU 執行時間是 20 ms，而每個 Thread 的等待時間（如等待 I/O 操作完成的時間）是 80 ms。

我們可以計算出最佳線程數量如下：

最佳 Thread 數量 = ( ( 80ms+20ms)/20ms) \* 4 = 20

所以，這個系統的最佳 Thread 數量是 20。

這意味著在這個特定系統配置下，同時運行 20 個Thread將是最優的配置。如果超過這個數量，系統可能會出現Thread之間的競爭，導致 QPS 開始下降，並且系統的 RT 會增加。因此，找到並維持這個最佳Thread數量是提高系統性能的關鍵。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724262648314/ecd1e607-dd20-45bc-8a90-cd08d9eb5fd3.jpeg align="center")

這張圖表展示了 Thread 數量對 QPS 的影響。隨著 Thread 數量的增加，QPS 先上升，達到最佳 Thread 數量時 QPS 達到最高值，隨後隨著 Thread 數量的繼續增加，QPS 開始下降。

這展示了在一個系統中，當 Thread 數量超過其最佳臨界點時，資源的競爭會加劇，導致 QPS 不再增加，甚至開始下降。同時，系統的 RT 也會隨之增加，這表明在最佳 Thread 數量之上繼續增加 Thread 數量並不會帶來性能的提升，反而可能降低系統的整體效率。

每個系統都有其最佳 Thread 數量，但在不同的狀態下，這個數量會有所變化。瓶頸資源可能是 CPU、記憶體、鎖資源或 I/O 資源。一旦超過最佳 Thread 數量，將導致資源的競爭加劇，響應時間隨之增加。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724260397449/4176d46c-192c-4bd5-9af1-d01936171552.jpeg align="center")

這張圖表展示了 QPS 和併發數與回應時間 RT 之間的關係。圖中可以看到：

1. **QPS vs RT**：隨著響應時間增加，QPS 保持不變。這是因為 QPS 是根據併發數與響應時間的比率計算出來的。響應時間增加，QPS 不變，說明在同樣的併發數下，單位時間內能夠處理的查詢數量沒有變化。
    
2. **Concurrency vs RT**：隨著響應時間增加，併發數也逐漸增加。這表明在系統中，隨著處理每個請求的時間延長，能夠同時處理的請求數量增加，這通常是由於請求處理的等待時間增加所致。
    

在實際應用中，理解這些指標之間的關係可以幫助我們更好地設計和優化系統，尤其是在高併發情境下。當響應時間降低時，併發數可以減少，系統能夠以更高的效率處理請求。相反，當響應時間增加時，併發數也會相應增加，這可能會導致資源競爭加劇，進而影響系統性能。

## RT 回應時間與 QPS 之間的關係

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724260739303/54ec3c86-770d-42dc-9c44-ee4e14c40298.jpeg align="center")

這張圖展示了在不同情境下，QPS（每秒查詢數）與 RT（回應時間）之間的關係：

1. **單Thread/多Thread情境（藍線）**：在這種情境下，QPS 與 RT 呈現明顯的負相關關係。當 RT 減少時，QPS 顯著增加。這表明在 CPU 資源主要消耗於計算的情況下，通過降低RT 可以有效提升系統的 QPS。
    
2. **高 I/O 負載情境（紅線）**：在高 I/O 負載下，QPS 與 RT 之間的負相關關係更加顯著。這意味著當系統需要大量 I/O 操作時，響應時間對 QPS 的影響會更加明顯。隨著響應時間的增加，QPS 下降得更快，顯示了 I/O 操作對於系統性能的更大影響。
    

這些圖表說明了在不同的系統負載情境下，優化 RT 是提升 QPS 的關鍵，尤其是在高 I/O 負載的情境下，這種優化尤為重要。理解這些關係有助於我們在系統設計和性能優化過程中做出更為精確的決策。

### 實際應用中的挑戰

舉例說明： 在一個社交媒體應用中，使用者每次刷新動態都會觸發多次資料庫查詢操作。在系統設計初期，QPS 可能處於較低的水準，伺服器可以輕鬆應對。然而，隨著用戶數量的增長和使用頻率的提高，QPS 也會逐漸增加。如果不對資料庫進行優化，最終會導致系統無法滿足使用者需求，體驗變差。因此，對於資料庫系統的 QPS 監控和優化是確保系統能夠穩定運行的關鍵。

## TPS（Transactions Per Second）

TPS，即每秒交易數，主要用於金融系統中，衡量一個系統在單位時間內能夠完成的交易次數。與 RPS 和 QPS 不同，TPS 更加注重交易的完整性和一致性，因為金融交易通常涉及多個步驟和系統之間的交互。

計算公式如下： `TPS = 總交易數 / 完成總時間（秒）`

範例： 如果一個支付系統在 30 秒內完成了 600 筆交易，那麼 TPS 計算如下： `TPS = 600 / 30 = 20 TPS`

在高併發情境下，TPS 的增長意味著系統需要在更短的時間內處理更多的複雜操作，這對系統的穩定性和可靠性提出了更高的要求。例如，在支付系統中，TPS 的提升往往伴隨著更高的風險管理需求，因為任何一個失誤都可能導致嚴重的財務損失。

### 實際應用中的挑戰

舉例說明： 一家大型銀行的支付系統在日常運營中，每秒鐘處理 500 TPS。然而，在支付高峰時段，如節假日或大型購物節，TPS 可能會增至 2000 甚至更多。為了應對這樣的情況，系統必須具備良好的擴展性和容錯機制，以確保每筆交易的安全和完整。同時，對於金融系統而言，TPS 不僅僅是衡量性能的指標，更是衡量系統可靠性的關鍵。

## 系統容量與 RPS、QPS、TPS 的關聯

如前所述，RPS、QPS 和 TPS 都是衡量系統性能的關鍵指標，但它們與系統容量之間的關係是密不可分的。當系統容量增加時，這些指標的上限也會相應提高，反之亦然。要理解這些指標如何與系統容量相關聯，我們可以從以下幾個方面進行探討。

1. 資源分配與管理 系統的資源分配對於確保高併發下的穩定性至關重要。例如，當 RPS 增加時，系統需要更多的 CPU 來處理請求，更多的記憶體來緩存資料，甚至更多的 I/O 頻寬來傳輸數據。如果這些資源分配不當，會導致系統無法及時處理請求，從而影響整體性能。
    
2. 系統架構設計 系統架構的設計對於支撐高併發的需求至關重要。比如，在面對高 RPS 時，採用分佈式架構可以將負載分散到多個節點上，以減輕單點壓力。而在資料庫系統中，為了應對高 QPS，可能需要採用分片或複製技術來提高讀取和寫入性能。
    
3. 負載均衡與自動擴展 負載均衡和自動擴展技術可以幫助系統在高併發情境下自動調整資源，確保服務的穩定性。例如，當 TPS 突然增加時，自動擴展可以動態增加計算資源，負載均衡則確保每個節點的負載均衡分配，避免資源瓶頸。
    
4. 資源利用率的優化 系統資源的利用率直接影響到 RPS、QPS 和 TPS 的上限。透過優化資源利用率，我們可以在不增加硬體資源的情況下，提升系統的併發能力。例如，通過優化程式碼執行效率、減少 I/O 操作的頻次、提高資料庫查詢效率等方式，可以大幅提高系統的 RPS 和 QPS。
    

RPS、QPS、TPS 與性能瓶頸 在高併發情境下，性能瓶頸往往是限制 RPS、QPS 和 TPS 的主要因素。這些瓶頸可能出現在 CPU、記憶體、I/O 或網路等資源上。如果不能及時識別並解決這些瓶頸，將嚴重影響系統的性能和穩定性。

此外，系統的吞吐量會隨著容量的變化而變動。當系統容量充足時，吞吐量可以維持在較高水準；但當系統容量達到瓶頸，無法進一步擴展時，吞吐量會明顯下降。因此，在設計高併發系統時，確保系統容量的擴展性是至關重要的。

### 實際應用中的挑戰

舉例說明： 在一個高併發的 API 服務中，RPS 達到了 1000，但系統的處理延遲卻逐漸增加。通過性能分析，發現瓶頸出現在資料庫的 I/O 操作上。這時，可以考慮將資料庫操作進行優化，如增加索引、減少查詢範圍，或使用資料庫緩存技術來緩解 I/O 壓力。這樣可以有效提升 RPS 的上限，同時降低處理延遲。

## 高併發的概念與挑戰

高併發是指在系統中同一時間內有大量的請求或操作需要同時處理的情境。在這種情境下，系統需要能夠有效地管理和調度資源，以確保每個請求都能被及時處理，並且系統能夠保持穩定性和高效性。

高併發系統通常具有以下幾個特點：

* 大量同時請求：在高併發情境下，系統需要同時處理大量來自不同用戶或設備的請求。這些請求可能是讀取資料、寫入資料、計算操作或其他需要系統資源的操作。
    
* 資源競爭激烈：由於同時有大量操作需要處理，系統中的資源（如 CPU、記憶體、網路、I/O 等）可能會出現競爭，導致某些操作需要等待其他操作完成才能繼續。
    
* 延遲敏感性：在高併發情境下，任何一個操作的延遲都可能會被放大，進而影響整體系統的響應時間。因此，系統需要優化延遲以確保用戶體驗。
    
* 高可靠性要求：當系統處於高併發狀態時，任何一個組件的故障都可能導致大範圍的影響，因此系統需要具備高可靠性和容錯能力，以避免單點故障造成的影響。
    

### 高併發的挑戰

實現高併發系統面臨多種挑戰，包括但不限於以下幾點：

* 資源管理：在高併發情境下，系統資源（如 CPU、記憶體、網路頻寬等）需要有效管理，以防止資源耗盡或過度飽和。這包括使用負載均衡、自動擴展、資源隔離等技術來動態調整系統資源。
    
* 鎖定與同步：當多個操作需要同時訪問或修改同一份資源時，鎖定與同步機制變得至關重要。需要設計出高效的鎖機制以最小化 Lock 競爭和 Dead lock 的風險，從而提高系統的併發處理能力。
    
* 資料一致性：在分散式系統或多資料庫節點的情境下，保持數據的一致性是高併發系統中的一大挑戰。需要使用分散式一致性協議（如 Paxos 或 Raft）來保證多個節點之間的數據同步。
    
* 故障恢復與容錯：高併發系統必須設計為具備強大的故障恢復能力，能夠在部分組件出現故障時保持正常運行，並且能迅速恢復故障部分的功能。
    

### 常見的高併發場景

為了更好地理解高併發，我們可以從幾個常見的高併發場景中看到它在實際應用中的表現和需求。

* 大型電子商務網站：如雙十一、黑色星期五等促銷活動期間，大量用戶同時訪問網站，進行商品查詢、加入購物車、結帳等操作。
    
* 社交媒體平台：在熱門話題或事件發生時，可能有大量用戶同時發帖、評論、點讚，這需要系統能夠處理大量即時的數據更新。
    
* 在線支付系統：特別是在高峰期，如雙十一或節假日，大量支付交易同時進行，系統需要保證每筆交易的快速處理和數據一致性。
    
* 遊戲伺服器：在線遊戲中，特別是在多人遊戲中，遊戲伺服器需要同時處理成千上萬的玩家操作，以保持遊戲的流暢性和公平性。
    

### 高併發系統設計的基本策略

為了應對高併發場景，設計高併發系統通常會採取以下策略：

* 分散式系統架構：將系統的不同功能模塊分散到多個伺服器或節點上，利用水平擴展來提高併發處理能力。
    
* 快取技術：利用快取來減少對後端系統的直接讀取請求，降低系統負載和延遲。
    
* 非同步處理：對於不需要立即回應的操作，使用非同步處理來降低系統的同步負擔，提高整體的處理效率。
    
* 負載均衡：通過負載均衡技術將請求均勻分配到多個伺服器上，防止單一伺服器過載。
    
* 資源隔離：將不同類型的資源進行隔離（如 CPU、記憶體等），確保高優先級的操作不會被低優先級的操作所干擾。
    

在高併發情境下，系統必須能夠同時處理大量的請求。這可以通過併發或併行的方式來實現。並發處理意味著系統內部有多個隊列等待同一種資源（如上圖所示，兩個隊列對應一個高鐵購票窗口），而併行處理則意味著系統有多個資源可以同時處理多個隊列中的請求（如上圖所示，兩個隊列對應兩個高鐵購票窗口）。

總結來說，高併發系統是現代軟體工程中的一個重要領域，面臨著資源管理、數據一致性和故障恢復等多重挑戰。通過合理的架構設計和技術選擇，這些挑戰是可以被有效克服的，從而保證系統在高併發情境下依然保持高效穩定的運行。

## RPS 的量級與高併發的標準

RPS 的量級在不同的環境和應用情境中會有不同的標準和認知。確實，沒有一個放諸四海皆準的「高併發」標準，因為高併發是相對於系統的設計能力和應用場景而言的。

### 相對性的重要性

高併發的定義和對應的 RPS 量級與系統所處的具體環境、使用者基數和應用場景密切相關。在某些情況下，100 RPS 可能已經對一個系統構成挑戰，而在另一個情境下，1,000 RPS 仍屬於可輕鬆應對的範疇。因此，RPS 是否構成高併發，必須考量以下幾個因素：

* 應用類型：例如，金融交易系統的高併發要求通常會比普通電商網站更高，因為其對交易的一致性和即時性要求更為嚴格。
    
* 基礎設施能力：基礎設施的能力（如伺服器規模、資料庫性能、網絡頻寬）會直接影響系統處理併發請求的能力。
    
* 目標使用者群體：如果系統主要服務於大眾市場，則高併發量級通常會高於專業市場或企業內部應用。
    
* 地域影響：不同地區的互聯網基礎設施和使用者行為習慣也會影響 RPS 的量級標準。例如，台灣的互聯網應用可能更多地集中在特定高峰時段，因此即使平時 RPS 不高，但在特定活動期間會瞬間飆升。
    

在台灣，許多企業的網絡應用服務仍以中小型為主，因此 100 到 1,000 RPS 通常被視為較高的併發量級，特別是對於中小型企業和新創公司而言。但對於一些大型電商平台、熱門社交媒體應用或提供全國性服務的公司而言，1,000 到 10,000 RPS 可能才算進入「高併發」的範疇。

在台灣的通路環境中，超過 10,000 RPS 的情況通常比較少見，多半出現在如大型購物節（如雙十一、雙十二）或是大型活動的短時間內。此外，對於台灣的一些技術先驅公司或雲端服務提供商而言，10,000 RPS 以上的量級也不是不可能的，只是需要更強的技術支援和基礎設施投入。

總的來說，將 RPS 分為不同量級（小型、中型、大型、超大型）的方式固然有助於初步理解和分類，但這並不是一個固定的標準，更多地應該根據具體的業務需求和技術能力來定義。因此，在回答這類問題時，應根據具體場景給出相對的解釋，而不是一概而論。

因此，你在處理這類問題時，可以引導問題的提出者考慮其具體場景，包括系統的設計能力、使用者規模、業務特性等，來定義什麼樣的 RPS 才算是高併發。這樣能提供更具體且有價值的建議。

RPS 是否達到「高併發」的標準是相對的，需要根據系統的具體情境和目標來判斷，並不是一個可以統一適用於所有情境的絕對標準。

## 小結：系統容量與高併發之間的平衡

RPS、QPS 和 TPS 作為衡量系統併發能力的重要指標，它們與系統容量之間的關係是相輔相成的。這些指標不僅幫助我們評估和優化現有系統的性能，還在系統設計階段提供了至關重要的參考。要實現高併發能力，必須在系統容量、架構設計、資源分配與管理等多方面進行全面的優化與調整。

在實際應用中，隨著系統負載的增長，透過對這些指標的監控和分析，我們可以及時識別性能瓶頸，並採取相應的優化措施，確保系統在高併發情境下依然能夠穩定運行。同時，合理的系統架構設計、有效的資源利用率優化以及靈活的自動擴展技術，都是提升系統併發能力的重要手段。

最終，理解並掌握 RPS、QPS 和 TPS 這些指標，以及它們與系統容量之間的關聯，是確保系統在高併發情境下運行良好的關鍵。通過科學的性能分析和合理的優化策略，我們可以在有限的資源下，最大限度地提升系統的效能，為使用者提供更加流暢的體驗。
