我们无法在Nginx中处理超过3k的并发请求(Connecton超时).我们还将ulimit更改为20000.以下是我的Nginx.conf和sysctl.conf文件:
- user www-data;
- worker_processes 4;
- pid /var/run/Nginx.pid;
- events {
- worker_connections 5000;
- use epoll;
- # multi_accept on;
- } # took it in next line
- worker_rlimit_nofile 100000;
- http {
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 600;
- send_timeout 600;
- proxy_connect_timeout 600;
- proxy_send_timeout 600;
- proxy_read_timeout 600;
- reset_timedout_connection on;
- types_hash_max_size 2048;
- client_header_buffer_size 5k;
- open_file_cache max=10000 inactive=30s;
- open_file_cache_valid 60s;
- open_file_cache_min_uses 2;
- open_file_cache_errors on;
- include /etc/Nginx/mime.types;
- default_type application/octet-stream;
- access_log off;
- error_log /var/log/Nginx/error.log;
- gzip on;
- gzip_disable "msie6";
- include /etc/Nginx/conf.d/*.conf;
- include /etc/Nginx/sites-enabled/*;
- }
systel.conf
- # Increase size of file handles and inode cache
- fs.file-max = 2097152
- # Do less swapping
- vm.swappiness = 10
- vm.dirty_ratio = 60
- vm.dirty_background_ratio = 2
- ### GENERAL NETWORK SECURITY OPTIONS ###
- # Number of times SYNACKs for passive TCP connection.
- net.ipv4.tcp_synack_retries = 2
- # Allowed local port range
- net.ipv4.ip_local_port_range = 2000 65535
- # Protect Against TCP Time-Wait
- net.ipv4.tcp_rfc1337 = 1
- # Decrease the time default value for tcp_fin_timeout connection
- net.ipv4.tcp_fin_timeout = 15
- # Decrease the time default value for connections to keep alive
- net.ipv4.tcp_keepalive_time = 300
- net.ipv4.tcp_keepalive_probes = 5
- net.ipv4.tcp_keepalive_intvl = 15
- ### TUNING NETWORK PERFORMANCE ###
- # Default Socket Receive Buffer
- net.core.rmem_default = 31457280
- # Maximum Socket Receive Buffer
- net.core.rmem_max = 12582912
- # Default Socket Send Buffer
- net.core.wmem_default = 31457280
- # Maximum Socket Send Buffer
- net.core.wmem_max = 12582912
- # Increase number of incoming connections
- net.core.somaxconn = 65536
- # Increase number of incoming connections backlog
- net.core.netdev_max_backlog = 65536
- # Increase the maximum amount of option memory buffers
- net.core.optmem_max = 25165824
- # Increase the maximum total buffer-space allocatable
- # This is measured in units of pages (4096 bytes)
- net.ipv4.tcp_mem = 65536 131072 262144
- net.ipv4.udp_mem = 65536 131072 262144
- # Increase the read-buffer space allocatable
- net.ipv4.tcp_rmem = 8192 87380 16777216
- net.ipv4.udp_rmem_min = 16384
- # Increase the write-buffer-space allocatable
- net.ipv4.tcp_wmem = 8192 65536 16777216
- net.ipv4.udp_wmem_min = 16384
- # Increase the tcp-time-wait buckets pool size to prevent simple DOS attacks
- net.ipv4.tcp_max_tw_buckets = 1440000
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_tw_reuse = 1
我们使用的是带有4个cpu和8 GB RAM的ubuntu操作系统.我几乎看不到任何cpu和RAM使用情况.我只是在触发Nginx默认页面URL.
我强烈建议你使用微缓存.
示例:http://www.howtoforge.com/why-you-should-always-use-nginx-with-microcaching
http://reviewsignal.com/blog/2014/06/25/40-million-hits-a-day-on-wordpress-using-a-10-vps/
我最近在我的盒子上设置了微缓存.
使用apache基准测试,它可以容纳多达50 000个连接,cpu只能达到6%.
没有超时,页面以1,1ms的速度提供.
上面的示例手册我建议仅用于“仅查看”,因为它们不正确.在我的情况下,我花了很多时间设置它,但值得强调:)