我需要設置一個用於收集要在推薦引擎中使用的事件數據的api應用程序。這是我的設置:即使實例處於完美狀態,Elastic Beanstalk也會報告5xx錯誤
- 帶有負載平衡器和自動調節組的Elastic Beanstalk env。
- 我有2個t2.medium實例在負載平衡器後面運行。
- EBS配置是64位Amazon Linux 2016.03 v2.1.1運行Tomcat 8 Java 8
- 此外,我有8x t2.micro實例,我用於高負載測試API,發送數千請求/秒處理api。
- 使用Locust(http://locust.io/)作爲我的負載測試工具。
- 由蝗蟲運行每個t2.micro實例可以一旦發送多達約500req /秒,同時請求數/秒低於1000
一切正常,也許1200以上,我的負載平衡器報告它背後的一些實例報告了5xx錯誤(附後)。我也嘗試了負載平衡器後面的4個實例,儘管事情起步良好,但不久之後,ebs健康工具和Locust都報告了503s和504s,而所有實例都處於完美狀態根據ebs健康概覽中的實際數字,僅顯示10%-20%的CPU利用率。
在配置env時我缺少smth嗎?看起來無論負載平衡器後面有多少臺機器,env每秒處理的請求數不超過1000-2000個。
編輯: 現在我肯定知道這是導致該問題,而不是實例ELB。
我跑了10個模擬用戶的負載測試。每個用戶發送約1req/sec,負載以每用戶10個用戶增加到4000個用戶,這應該等於大約4000req/sec。儘管如此,它似乎並不像任何請求率超過3.5k /秒(附件1)。
正如你可以從附件2看到的,負載均衡器後面的4個實例處於完美狀態,但我仍然不斷收到503錯誤。這只是負載平衡器本身導致的問題。看看SurgeQueueLength和SpilloverCount如何在某個時候迅速增加。 (附件3)我想弄明白爲什麼。
此外,我完全刪除負載平衡器,並只用一個實例進行測試。它可以處理高達約3k的需求/秒。 (附件4和附件5),所以它絕對是負載平衡器。
也許我錯過了默認情況下負載均衡器的一些關鍵限制,如隊列大小爲1024? 1負載平衡器的正常處理速率是多少?我應該增加更多的負載平衡器嗎?它可能與可用性區域有關嗎?來自一個區域的ELB偵聽器正在試圖路由到來自不同區域的實例?
UPDATE: 跨區域負載均衡啓用
hi Rohit。感謝您的支持。我添加到我的帖子。看一看。 –
你可以嘗試打開你的環境的CrossZone負載平衡嗎? http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.elb.html –
它是。更新的評論。 –