簡體   English   中英

無法連接到 ec2 實例上的 Tomcat 服務器

[英]Failed to connect to Tomcat server on ec2 instance

更新

  1. 我的目標是了解哪些因素會使我的小型 tomcat 服務器不堪重負。 當發生一些異常時,我可以做些什么來解決或修復它,而無需將我的服務器切換到更好的機器。 這不是生產環境中的真正應用程序,而只是我自己的實驗(除了服務器端的一些更改之外,我還可能在客戶端做一些事情)

  2. 我的客戶端和服務器都非常簡單:服務器只檢查 URL 格式,如果正確則發送 201 代碼。 從我的客戶發送的每個請求僅包含一個簡單的 JSON 主體。 不涉及數據庫。 兩台機器(t2-micro)只分別運行客戶端和服務器。

  3. 我的客戶是OkHttpClient() 為了避免超時異常,我已經通過setConnectTimeoutsetReadTimeoutsetWriteTimeout設置了超時 1,000,000 毫秒。 我還在我的服務器上將 go 設置為$CATALINA/conf/server.xml並設置connectionTimeout = "-1" (無限)

原帖:

我試圖通過讓客戶端啟動 3000 多個線程向我的服務器發送 HTTP 請求來給我的服務器施加壓力。 我的客戶端和服務器都駐留在不同的 ec2 實例上。

最初,我遇到了一些超時問題,但是在我將連接、讀寫超時設置為更大的值后,此異常已得到解決。 但是,使用相同的規范,我得到java.net.ConnectException: Failed to connect to my_host_ip:8080異常。 我不知道它的根本原因。 我是多線程和分布式系統的新手,誰能給我一些關於這個異常的見解?

下面是我的 ec2 的一些截圖:

1. 客戶:

在此處輸入圖像描述 在此處輸入圖像描述

2. 服務器:

在此處輸入圖像描述

在此處輸入圖像描述

在過去經歷過類似的練習后,我可以說對於縮放問題沒有明確的答案。

以下是一些可能導致更具體信息的一般故障排除步驟。 我建議通過調整每個測試中的一些參數來嘗試測試,並測量 Cpu、日志等的變化。

  1. 請提供您為超時設置的值。 增加超時可能會導致您的服務器(或客戶端)快速耗盡線程(因為每個線程可以處理更長的時間)。 質疑增加超時的必要性。 是否有任何處理會減慢您的服務器?

  2. 檢查客戶端和服務器上的應用程序日志、JVM 使用情況、memory 使用情況。 那里會有一些提示。

  3. 您的客戶似乎達到了 99% 以上,然后下降了。 這意味着客戶端可能存在問題,因為它在測試期間達到最大值。 您可能希望調整客戶端的大小以便能夠做更多事情。

  4. 查看打開的文件句柄。 數量應該足夠高。

  5. Tomcat 對處理負載的線程數有一些限制。 您可以在 server.xml 中檢查這一點,如果需要,可以更改它以處理更多。 盡管 cpu 實際上並沒有在服務器端達到最大值,所以這不太可能是問題所在。

  6. 如果你是一個數據庫然后檢查數據庫的性能。 還要檢查 jdbc 連接設置。 jdbc 級別也有線程和超時配置。

  7. Tomcat 上是否設置了響應壓縮? 它會在服務器上提供更好的整體效果,特別是如果每個請求發回的數據超過幾 kbs。

- - - - 更新 - - - - -

基於問題的更新,還有更多的想法。

由於應用程序相當簡單,因此強調服務器的路徑應該是從低開始並逐步增加負載,同時監控各種事物(cpu、memory、JVM 使用情況、文件句柄計數、網絡 i/o)。

負載的增量應分布在多次運行中。 從低至 100 個並行線程開始。

每次運行后盡可能多地記錄信息,如果服務器運行良好,則增加負載。

建議的增量為 100、200、500、1000、1500、2000、2500、3000。

在某種程度上,您會看到服務器無法再接受它。 那將是你的突破點。

隨着您增加負載和監控,您可能會發現建議調整特定參數的模式。 然后應該再次測試每次調整嘗試的相同級別的多線程。 從監控來看,可用度的提高是顯而易見的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM