不喜欢节流吗?
您別無選擇–基礎(chǔ)系統(tǒng)(此處的JVM將為您完成此選擇)。
我仍然記得2013年夏天,當時我正在運行一個項目,整個應(yīng)用程序中只有1個URL使服務(wù)器癱瘓。 問題很簡單-機器人決定以很高的速率索引我們的網(wǎng)站,并且該機器人正在創(chuàng)建數(shù)百萬個URL組合,這些組合繞過了我所有的緩存層,并且都擊中了我的應(yīng)用程序服務(wù)器。 好吧,我們在應(yīng)用程序中的緩存率非常高(大約95%),并且應(yīng)用程序服務(wù)器層并不是為高負載而設(shè)計的(這是Adobe AEM 5.6,執(zhí)行搜索和制作頁面的邏輯在計算上非常繁瑣)。 那年早些時候,我們想處理Dog-Pile效應(yīng)的案例,并且我們談到要進行某種限制。 在對話開始時,每個人都對節(jié)制相同的想法不滿意(2個人除外)。
在2012年秋天, Ravi Pal建議采取適當?shù)腻e誤處理措施,使系統(tǒng)不僅應(yīng)該掉在頭上,而且應(yīng)優(yōu)雅地降級。 當我們在2013年遇到這個問題時,我才意識到他建議的嚴重性。
現(xiàn)在,我正在另一個平臺上工作,當我提出節(jié)流的想法時,它又一次被皺了皺眉。 一個人在一次會議上實際上嘲笑我。 另一個人建議我們要通過“自動縮放”處理場景,而不是限制場景。 我們在AWS Cloud上擁有基礎(chǔ)架構(gòu),但我不是專家,但是專家告訴我,服務(wù)器可以在大約10分鐘內(nèi)原樣復(fù)制(我們將 證明 對此進行基準測試)。
我是一位雄心勃勃的建筑師,盡管我控制了進入我網(wǎng)站的流量。 我不再生活在那種幻想中。
這可能是一系列的帖子,但是今天在這里我開始向您展示您沒有選擇的余地,無論您是否喜歡它,系統(tǒng)都會為您限制流量。
基準概述
- 使用Spring Boot構(gòu)建的簡單Web應(yīng)用程序
- 一個Spring MVC REST控制器 ,它將接受一些HTTP請求并在誘發(fā)的延遲后發(fā)送回OK響應(yīng)
- jMeter模擬負載
- 一個自定義插件 (向這些家伙大喊大叫的插件)可生成逐步加載并捕獲自定義增強圖
- 托管網(wǎng)站的Tomcat 8.x –使用Spring Boot在內(nèi)存中啟動。 未完成自定義
第一組–好人
測試計劃
該線程組將模擬對我們的應(yīng)用程序服務(wù)器的一致請求流。 一個典型的情況經(jīng)常發(fā)生。
服務(wù)器性能
如預(yù)期的那樣? 是。
如下圖所示,該圖表顯示應(yīng)用程序服務(wù)器的行為正常。 15分鐘內(nèi)的所有請求都與“單用戶模型”(也就是1秒請求響應(yīng)時間)一致。
第二組-突發(fā)的高流量
測試計劃
該測試計劃是一種分步實施的方法,它試圖模擬一種情況,即廣告活動將在短時間內(nèi)開始到達某個頁面(或一組頁面)。 在我們的網(wǎng)站向全世界開放的行業(yè)中,我們經(jīng)常看到這種用例。
這個線程組不是OOTB,我下載了一個插件
服務(wù)器性能
那么,我們期望發(fā)生什么呢? 根據(jù)我的服務(wù)器有多少果汁(線程,cpu循環(huán)等),我的服務(wù)器可能會或可能無法處理請求。 鑒于我正在本地筆記本電腦上運行所有程序,如果我的本地機器可以處理600個線程,那將很有趣。
而且我們發(fā)現(xiàn)我的筆記本電腦無法真正處理600線程。 那么,tomcat是做什么的呢?
它節(jié)流
好人變化的表現(xiàn)
測試計劃
我運行第一個測試計劃,并遵循高流量計劃(引入30秒的延遲)。
影響力
下圖顯示了好人如何受到影響。 盡管The Good One的訪問量沒有變化,但仍然受到影響,因為其他因素導(dǎo)致了峰值。
請告訴JVM您不喜歡節(jié)流
下一個是什么
您實際上有3個選擇(我們將在單獨的文章中詳細介紹以下各項)
翻譯自: https://www.javacodegeeks.com/2015/08/dont-like-throttling.html
總結(jié)
- 上一篇: 惠州有几个区和几个县(都叫什么名字)
- 下一篇: 流性能