[英]nginx ingress controller limit-rps seems not working
嘗試進行一些負載測試時,我有一個奇怪的行為。
環境:
情況如下:
在沒有 sessionAffinity ClientIP 的情況下對 rest 服務進行負載測試時,我達到了遠遠超過 25 req/s(大約 130 req/s 之前服務資源開始崩潰,這是另一回事)。 但是激活 sessionAffinity 后,我只能達到 25 req/s。
經過一番研究,我發現了一些有趣的東西,描述如下: https://medium.com/titansoft-engineering/rate-limiting-for-your-kubernetes-applications-with-nginx-ingress-2e32721f7f57
因此,由於負載測試應始終由同一個 nginx pod 提供服務,因此公式應為:成功請求 = 周期 * 速率 + 突發
所以我確實嘗試在我的入口添加注釋 nginx.ingress.kubernetes.io/limit-rps: "100",但沒有運氣,仍然是相同的 25 req/s。
我還嘗試了以下注釋的不同組合: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#rate-limiting ,但也沒有運氣。
我錯過了什么嗎?
事實上,它比這更惡毒。
它與 sessionAffinity 無關,也與速率限制無關(實際上默認情況下沒有,我一開始沒有得到它,只有當我們想限制 ddos 時才會有速率限制)。
問題是,我在 configmap 中添加了 modsecurity 和 owasp 規則的選項。
正因為如此,請求處理非常慢,它限制了每秒的請求數。 當 sessionAffinity 沒有設置時,我沒有看到概率,因為 req/s 是公平的,分布在所有 pod 中。
但是使用 sessionAffinity,因此在單個 pod 上進行負載測試,問題清晰可見。
所以我不得不刪除 modsecurity 和 owasp,這將由應用程序負責。
有點難過,因為我想在 nginx 上獲得更多的中央安全性,所以應用程序不需要處理它,但不是以那個成本...
我很想知道 modsecurity 到底做了什么這么慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.