由于是内网用ab压测,开了8个ab压测端,nginx服务器的连接数是3千多, 网卡跑到了750M, 离千兆还有空闲。 所以,可以排除是带宽的问题。 并且,我在一台物理机器上面部署了两个proxy,分别开4个work,绑定到CPU上面, QPS还是不能线性增长,初步怀疑是系统哪里有瓶颈! 请教下大家关于系统优化,有哪些好的方法,再次感谢了~
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_max_tw_buckets = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.core.netdev_max_backlog = 2621440
net.core.rmem_default = 67108864
net.core.wmem_default = 67108864
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
#net.ipv4.tcp_rmem = 4096 873800 62914560
#net.ipv4.tcp_wmem = 4096 655360 41943040
#net.ipv4.tcp_mem = 3097431 4129911 6194862
net.ipv4.tcp_wmem = 8192 436600 873200
net.ipv4.tcp_rmem = 32768 436600 873200
net.ipv4.tcp_mem = 94500000 91500000 92700000
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.ip_forward = 1
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_keepalive_time = 120
worker_processes 8;
worker_cpu_affinity
#000000000001
#000000000010
#000000000100
#000000001000
000000010000
000000100000
000001000000
000010000000
000100000000
001000000000
010000000000
100000000000
;
worker_rlimit_nofile 1048576;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1048576;
use epoll;
accept_mutex off;
multi_accept on;
}
http {
sendfile on;
tcp_nodelay on;
tcp_nopush on;
#access_log logs/access.log main;
access_log off;
server_tokens off;
reset_timedout_connection on;
keepalive_timeout 120;
keepalive_requests 100000;
client_header_buffer_size 4k;
large_client_header_buffers 4 4k;
client_max_body_size 8m;
client_body_buffer_size 12k;
upstream redis_cluster {
server 10.100.101.1:7000;
...............
keepalive 1024;
}
server {
listen 8100;
server_name localhost backlog=1048576;
set $backserver "redis_cluster";
location / {
redis3upstream_pass $backserver;
}
}
}