nginx在围攻下丢弃连接

nginx提供的12KB的css文件上运行攻击,实际上会丢失一些请求。 它运行了VPS Ubuntu 10.04安装。 这是由我的nginxconfiguration,还是我必须接受,使用VPS?

# nginx siege -d1 -t1M -c300 css-file Lifting the server siege... done. Transactions: 2307 hits Availability: 99.87 % Elapsed time: 59.12 secs Data transferred: 27.40 MB Response time: 6.43 secs Transaction rate: 39.02 trans/sec Throughput: 0.46 MB/sec Concurrency: 250.95 Successful transactions: 2307 Failed transactions: 3 Longest transaction: 39.22 Shortest transaction: 0.49 

nginx conf:

 user www-data; worker_processes 8; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 2048; # multi_accept on; accept_mutex on; use epoll; } http { include /etc/nginx/mime.types; access_log /var/log/nginx/access.log; default_type application/octet-stream; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay off; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; gzip_proxied any; gzip_min_length 500; upstream app_server { server unix:/tmp/.sock fail_timeout=0; } } server { listen 80 default; server_name www.example.com example.com; # added gunicorn client_max_body_size 4G; keepalive_timeout 5; root /srv/static/example; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; if (!-f $request_filename) { proxy_pass http://app_server; break; } } } 

你应该做的是收集与munin或收集另一端的指标,并试图找出你的瓶颈(如果有的话)在哪里(如果有的话)。 根据您提供的信息,可能会有各种不同的事情,包括您无法控制的networking问题。

另一件事,你正在使用location块内的if指令。 看到这里 :

指令如果在位置上下文中使用时有问题,在某些情况下,它不会做你期望的,而是完全不同的东西。 在某些情况下,甚至是段错误。 避免这是个好主意。

这也可能是问题的来源。

我会说,当你用太多的查询来强调你的服务器时,会看到一些丢失的连接。

基本上,你可以最大限度地提高连接,而不会丢失请求的点是你的服务器吞吐量..(这是你想通过基准testingfind的东西之一)

其次..我不会相信VPS的“硬核计算”:P

希望这可以帮助..