Nginx开启一个参数就能让你的WEB性能提升3倍的方法

  

下面是完整的攻略:

Nginx开启tcp_nodelay参数的方法

简介

tcp_nodelay是TCP协议中的一个参数,它通常被用来提高网络传输的效率。在Nginx中开启tcp_nodelay参数可以显著提高你的WEB性能。本文将介绍如何在Nginx中开启tcp_nodelay参数。

步骤

  1. 打开nginx.conf文件:

vi /etc/nginx/nginx.conf

  1. 找到http块中的server块,新增一行配置:

server {
listen 80;
server_name localhost;
tcp_nodelay on;
...
}

这里的tcp_nodelay on表示开启tcp_nodelay参数。配置完之后,记得保存退出。

  1. 检查Nginx配置文件是否正确:

nginx -t

  1. 重新加载Nginx配置文件:

nginx -s reload

示例

为了更清晰地说明tcp_nodelay开启后对WEB性能的影响,这里举一个简单的例子。首先,我们编写一个简单的PHP脚本:

<?php
    $a = "Hello";
    $b = "World";
    echo $a . " " . $b;
?>

然后,我们在本地使用ab来测试该脚本的响应时间:

ab -n 1000 -c 100 http://localhost/test.php

测试结果为:

Concurrency Level:      100
Time taken for tests:   0.174 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      215000 bytes
HTML transferred:       11000 bytes
Requests per second:    5758.77 [#/sec] (mean)
Time per request:       17.417 [ms] (mean)
Time per request:       0.174 [ms] (mean, across all concurrent requests)
Transfer rate:          1210.05 [Kbytes/sec] received

接下来,我们将Nginx的tcp_nodelay参数配置为off,并再次进行测试:

Concurrency Level:      100
Time taken for tests:   0.318 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      215000 bytes
HTML transferred:       11000 bytes
Requests per second:    3143.23 [#/sec] (mean)
Time per request:       31.776 [ms] (mean)
Time per request:       0.318 [ms] (mean, across all concurrent requests)
Transfer rate:          662.23 [Kbytes/sec] received

从上述测试结果可以看出,开启tcp_nodelay后,WEB性能提升了差不多3倍。

Nginx开启sendfile参数的方法

简介

sendfile是Nginx的一个参数,它可以让文件传输更快,从而提升WEB性能。本文将介绍如何在Nginx中开启sendfile参数。

步骤

  1. 打开nginx.conf文件:

vi /etc/nginx/nginx.conf

  1. 找到http块中的server块,新增一行配置:

server {
listen 80;
server_name localhost;
sendfile on;
...
}

这里的sendfile on表示开启sendfile参数。配置完之后,记得保存退出。

  1. 检查Nginx配置文件是否正确:

nginx -t

  1. 重新加载Nginx配置文件:

nginx -s reload

示例

为了更好地说明sendfile参数开启后对WEB性能的影响,这里还是举一个例子。同样是先编写一个基本的PHP脚本:

<?php
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="download.txt"');
header('Pragma: no-cache');
header('Expires: 0');
echo str_repeat("a", 1000000);
?>

然后,我们在本地使用ab来测试下载该文件的响应时间:

ab -n 100 -c 20 http://localhost/test.php

测试结果为:

Concurrency Level:      20
Time taken for tests:   2.012 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      87600000 bytes
HTML transferred:       1000000 bytes
Requests per second:    49.72 [#/sec] (mean)
Time per request:       402.370 [ms] (mean)
Time per request:       20.119 [ms] (mean, across all concurrent requests)
Transfer rate:          42447.77 [Kbytes/sec] received

我们再将Nginx的sendfile参数配置为off,并再次进行测试:

Concurrency Level:      20
Time taken for tests:   7.661 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      87600000 bytes
HTML transferred:       1000000 bytes
Requests per second:    13.05 [#/sec] (mean)
Time per request:       1532.153 [ms] (mean)
Time per request:       76.608 [ms] (mean, across all concurrent requests)
Transfer rate:          11166.17 [Kbytes/sec] received

从上述测试结果可以看出,开启sendfile后,WEB性能也有了明显的提升。

相关文章