nginx+resin+redis+mysql的架構;
有外部模擬使用者請求的大量攻擊;它嘗試請求了80就斷開;看到的現象是在跑有nginx80的主機上TCP連線數少
:
ESTABLISHED少; 在後端resin的主機上有大量的TIME_WAIT,然後resin所在主機的核心會報flood攻擊資訊
而在nginx80的主機上SYN_RECV 少;有大量的SYN_SENT
================
嘗試通過nginx-upstream模組的keepalive機制來容納該種攻擊;
需要配置如下:
events {
use epoll;
worker_connections 65535;
accept_mutex off;--------------------------->新加;多執行緒需要
}
keepalive_timeout 100;--------------------->預設是65;設定更長的時間,形成連線池;讓響應使用者請求並轉發給resin的TCP連線保持可複用。
proxy_http_version 1.1;--------------------->新指定,預設是1.0;1.0不適用
proxy_set_header Connection "";----------->1.1不需要,所以清空
upstream name_server {
server ip:port;
keepalive 32;------------------------------------->個數,總共保持長連線的個數
}