nginx管理配置优化

nginx优化

优化思路
这里写图片描述

基本优化

1、调整参数隐藏nginx软件版本号信息

server_tokens off;

2、更改nginx服务默认用户

user nginx nginx;

3、优化nginx服务的worker进程个数

worker_processes cpu*核数;

4、优化绑定不同的nginx进程到不同的cpu上

worker_cpu_affinit 0001 0010 0100 1000 0001 0010 0100 1000;

5、nginx时间处理模型优化

use epoll

6、调整单进程最大连接数,每 个 进程 允许 的最 多连 接 数, 理论 上每 台 nginx 服 务 器的 最大 连接 数为
worker_processes*worker_connections

worker_connections 20480;

7、nginx work进程最大打开文件数,这个指令是指当一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不是那么均匀,所以最好与 ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

8、开启高效文件传输模式

sendfile on;

用于开启文件的高效传输模式,同时将tcp_nopush和tcp_nodelay两个指令设置为on,可以防止网络及磁盘I/O阻塞,提升nginx工作效率。
9、优化连接超时时间

keepalive_timeout 0;          //结束响应后立即断开tcp连接。

10、fastCGI优化

扫描二维码关注公众号,回复: 1015973 查看本文章

11、配置nginx gzip压缩实现性能优化

gzip on;
gzip_min_length 1k;
gzip_buffers 4 32k;
gzip_comp_level 9;
gzip_vary on;

12、配置nginx expires缓存实现性能优化

nginx expires 3650d;

13、nginx日志相关优化与安全
14、根据拓展名限制程序和文件访问。

dell all;
allow all;

15、防盗链

HTTP referer

16、客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过 1k,不过由于一般系统分页都要大于 1k,所以这里设置为分页大小。分页大小可以用命令 getconf PAGESIZE取得。

[root@k8s-node01 local]# getconf PAGESIZE
4096

client_header_buffer_size 4k; 

17、打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

open_file_cache max=102400 inactive=20s; 

18、多长时间检查一次缓存的有效信息,open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在 inactive 时间内一次没被使用,它将被移除。

open_file_cache_min_uses 1; 

系统层面优化

1、系统层面优化

echo 500000 > /proc/sys/net/core/somaxconn   //web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到128,而 nginx 定义的 NGX_LISTEN_BACKLOG 默认为 511,所以有必要调整这个值。 
net.core.netdev_max_backlog = 262144 
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle  //加快tcp回收
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse    //空的tcp允许回收利用
echo 0 > /proc/sys/net/ipv4/tcp_syncookies  //关闭洪水抵御

优化timewait数量,默认是 180000。

net.ipv4.tcp_max_tw_buckets = 6000 

允许系统打开的端口范围

net.ipv4.ip_local_port_range = 1024    65000 

启用 timewait 快速回收

net.ipv4.tcp_tw_recycle = 1 

开启 SYN Cookies,当出现 SYN 等待队列溢出时,启用 cookies 来处理

net.ipv4.tcp_syncookies = 1 

开启重用。允许将 TIME-WAIT sockets 重新用于新的 TCP 连接

net.ipv4.tcp_tw_reuse = 1 

每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目

net.ipv4.tcp_max_orphans = 262144 

记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有 128M 内存的系统而
言,缺省值是 1024,小内存的系统则是 128。

net.ipv4.tcp_max_syn_backlog = 262144 

2、nginx&php-fpm优化配置
nginx将请求转发给php-fpm处理,当nginx转发很多请求时,php-fpm进程不够用,就会生成子进程。
然而生成子进程需要内核来调度,比较耗时。
如果网站并发比较大,可以用静态方式一次性生成多个子进程,保持的内存中。
修改phjp-fpm.conf

pm=static //让php-fpm进程始终保持,不需要动态生成
pm.max_children=32 始终保持的子进程数量

3、php&mysql优化
内核层面:加大连接数,加快tcp回收
mysql层面:增大连接数
php层面:用长连接,节省连接数
用内存缓存(memcached),减轻mysql压力
注意
内存缓存适用于缓存复杂的sql查询。因为phpmemcached也要建立tcp连接,所以简单的sql查询不需要用缓存。

猜你喜欢

转载自blog.csdn.net/len9596/article/details/80232196