Nginx 고 병발 설정 아이디어 (1 만 병발 량 에 쉽게 대응)

3885 단어
테스트 기 계 는 텐 센트 클 라 우 드 서버 1 핵 1G 메모리, swap 파 티 션 2G 로 SSH 를 제외 한 모든 서 비 스 를 중단 하고 nginx 만 유지 하 며 최적화 방향 은 주로 두 가지 측면 을 포함한다. 시스템 차원 + nginx 차원 이다.
시스템 차원
1. 파일 개수 조정
ulimit -n 20480

2. TCP 최대 연결 수 (somxconn)
echo 10000 > /proc/sys/net/core/somaxconn

3. TCP 연결 즉시 회수, 재 활용 (재 활용, 재사 용)
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

4, TCP 홍수 방지 하지 않 습 니 다
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

최 적 화 된 설정 을 직접 사용 하여 / etc / sysctl. conf 에 추가 할 수 있 습 니 다.
net.core.somaxconn = 20480
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072

사용: sysctl - p 적용
sysctl -p

차원
nginx 프로필 수정, nginx. conf
work 증가rlimit_nofile 과 workerconnections 수량, keepalive 사용 하지 않 기timeout。
worker_processes  1;
worker_rlimit_nofile 20000;

events {
use epoll; worker_connections 20000;
multi_accept on; }

http {
  keepalive_timeout 0;
}

 
 다시 시작 nginx
/usr/local/nginx/sbin/nginx -s reload

ab 압력 테스트 사용
ab -c 10000 -n 150000 http://127.0.0.1/index.html

테스트 결과:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 15000 requests
Completed 30000 requests
Completed 45000 requests
Completed 60000 requests
Completed 75000 requests
Completed 90000 requests
Completed 105000 requests
Completed 120000 requests
Completed 135000 requests
Completed 150000 requests
Finished 150000 requests


Server Software:        nginx/1.8.0
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /index.html
Document Length:        612 bytes

Concurrency Level:      10000
Time taken for tests:   19.185 seconds
Complete requests:      150000
Failed requests:        0
Write errors:           0
Total transferred:      131180388 bytes
HTML transferred:       95121324 bytes
Requests per second:    7818.53 [#/sec] (mean)
Time per request:       1279.013 [ms] (mean)
Time per request:       0.128 [ms] (mean, across all concurrent requests)
Transfer rate:          6677.33 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  650 547.9    522    7427
Processing:   212  519 157.4    496     958
Waiting:        0  404 139.7    380     845
Total:        259 1168 572.1   1066    7961

Percentage of the requests served within a certain time (ms)
  50%   1066
  66%   1236
  75%   1295
  80%   1320
  90%   1855
  95%   2079
  98%   2264
  99%   2318
 100%   7961 (longest request)

좋은 웹페이지 즐겨찾기