在Apache,nignx,LiteSpeed,kangle等众多主流web服务器试用了一圈后,我回到了Nginx-Tengine的怀抱,并开始进行优化和修改

搜索了诸多介绍和教程后,进行了一些整理和记录

目前使用的服务器配置Xeon E5-2650 v2 @ 2.60GHz,8GiB内存,128GB SSD

系统为CentOS 7.6 64位

所有的性能调优将基于这个配置修改,当然我也会提供其他配置的修改方案,仅供参考。

开始

版本选用:推荐Nginx-Tengine,或当前Nginx发布的最新版本

vim命令打开nginx的配置文件nginx.conf进行修改 (路径可能不同,但一般都在/etc/nginx)

宝塔面板可以直接修改

性能调优

1.设置Nginx进程数

由你的CPU数量决定,一般与你的CPU核心数相同。

比如我的8核心调整为

worker_processes 8;

2.为进程分配CPU

为每个进程分配CPU

8核心方案:

worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

上面的配置表示:8核CPU,开启8个进程。

00000001表示开启第一个cpu内核,00000010表示开启第二个cpu内核……

有多少核心数,就有几位数,1表示该内核开启,0表示该内核关闭。

以此类推,

6核心方案

worker_cpu_affinity 000001 000010 000100 001000 010000 100000;

4核心方案

worker_cpu_affinity 0001 0010 0100 1000;

3.配置Nginx进程最多打开的文件数

最好与ulimit -n的值保持一致

worker_rlimit_nofile 65535;

4.配置最大连接数

理论上每台nginx服务器的最大连接数为worker_processes*worker_connections

实际最大连接数请以服务器测压结果为准

worker_connections 65535;

5.连接超时时间

这个默认值一般为60s

keepalive_timeout 60;

不建议该参数数值过大,过长的连接时间会导致无效HTTP连接占据连接数,浪费系统资源

当服务器压力过大时,此值可适当减少

6.客户端请求头部的缓冲区大小

此数值取决于你的系统分页文件大小

在终端运行

getconf PAGESIZE

得到分页文件大小。

通常这个数值为4096,也就是4k

所以将配置文件修改为

client_header_buffer_size 4k;

安全调优

1.隐藏响应头中的有关操作系统和web server(Nginx)版本号的信息

server_tokens off;

(尚未完成)


施工中...


Just Kaede!