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