1、頻率限制:在接口入口處,甚至系統的入口處應該設置頻率限制,為接口設置單位時間內最大的處理量,同時記錄單位時間內已經處理的請求量,當請求量大於最大處理量的時候,直接拒絕外部的請求,保護內部系統的心臟承受能力。
2、超時丟棄:這裏的超時是指請求從進入接收緩存區到接口從緩存區取出請求準備處理的時間超過了一定閾值(比如前端超時時間)。如果發生超時,則説明就算處理了取出的數據,前端也已經超時了,後端接口做的就是無用功,倒不如就在這裏一次性丟棄。這裏的緩存區指的是內核緩存區。
3、修改socket緩存區大小:根據接口處理能力和前端超時時間來設置socket緩存區大小,這樣的話利用socket緩存區充當隊列,超過隊列長度的請求就直接被丟棄了,這樣也可以防止系統雪崩。只是對用户不那麼友好。有人給出的參考計算式:緩衝區大小=(前端超時時間-請求處理時間-前端網絡延時*2)*(每秒最大處理請求數/1000)*請求包大小。