博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nginx高并发优化
阅读量:5739 次
发布时间:2019-06-18

本文共 2944 字,大约阅读时间需要 9 分钟。

测试机器为腾讯云服务器1核1G内存,swap分区2G,停用除SSH外的所有服务,仅保留nginx,优化思路主要包括两个层面:系统层面+nginx层面。

一、系统层面

1、调整同时打开文件数量

1
ulimit 
-n 20480

2、TCP最大连接数(somaxconn)

1
echo 
10000 > 
/proc/sys/net/core/somaxconn

3、TCP连接立即回收、回用(recycle、reuse)

1
2
echo 
1 > 
/proc/sys/net/ipv4/tcp_tw_reuse
echo 
1 > 
/proc/sys/net/ipv4/tcp_tw_recycle

4、不做TCP洪水抵御

1
echo 
0 > 
/proc/sys/net/ipv4/tcp_syncookies

也可以直接使用优化后的配置,在/etc/sysctl.conf中加入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
net.ipv4.tcp_syncookies = 0

使用:sysctl -p 生效

1
sysctl -p

二、nginx层面

修改nginx配置文件,nginx.conf

增加work_rlimit_nofile和worker_connections数量,并禁用keepalive_timeout。

1
2
3
4
5
6
7
8
9
10
worker_processes  1;
worker_rlimit_nofile 20000;
events {
    
use epoll;
    
worker_connections 20000;
    
multi_accept on;
}
http {
  keepalive_timeout 0;
}

 重启nginx

1
/usr/local/nginx/sbin/nginx 
-s reload

使用ab压力测试

1
ab -c 10000 -n 150000 http:
//127
.0.0.1
/index
.html

测试结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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)
本文转自 蓝叶子Sheep 51CTO博客,原文链接:http://blog.51cto.com/dellinger/2083133,如需转载请自行联系原作者
你可能感兴趣的文章
深入理解Python中的ThreadLocal变量(上)
查看>>
如果一切即服务,为什么需要数据中心?
查看>>
《游戏开发物理学(第2版)》一导读
查看>>
Erlang简史(翻译)
查看>>
深入实践Spring Boot2.4.2 节点和关系实体建模
查看>>
信息可视化的经典案例:伦敦地铁线路图
查看>>
10个巨大的科学难题需要大数据解决方案
查看>>
Setting Up a Kerberos server (with Debian/Ubuntu)
查看>>
Node.js Undocumented(1)
查看>>
用 ThreadLocal 管理用户session
查看>>
setprecision后是要四舍五入吗?
查看>>
shiro初步 shiro授权
查看>>
上云就是这么简单——阿里云10分钟快速入门
查看>>
MFC多线程的创建,包括工作线程和用户界面线程
查看>>
我的友情链接
查看>>
Windows Server 2016 技术预览 Hyper-V 新特性
查看>>
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
cvs文件提交冲突解决方案
查看>>
十步优化SQL Server中的数据访问
查看>>
java 执行jar包中主程序
查看>>