+
80
-

nginx如何针对高并发进行性能优化调优?

请问nginx如何针对高并发进行性能优化调优?

网友回复

+
0
-

主要优化以下几点,修改nginx.conf文件

一、优化 worker_processes  worker_processes 8; // 根据CPU核数配置,让nginx充分利用多核cpu发挥最大效能 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 二、优化IO模型 nginx的连接处理机制在于不同的操作系统会采用不同的I/O模型,Linux下,nginx使用epoll的I/O多路复用模型,在freebsd使用kqueue的IO多路复用模型,在solaris使用/dev/pool方式的IO多路复用模型,在windows使用的icop等等。 要根据系统类型不同选择不同的事务处理模型,我们使用的是Centos,因此将nginx的事件处理模型调整为epoll模型。 events { worker_connections 10240; // use epoll; } 说明:在不指定事件处理模型时,nginx默认会自动的选择最佳的事件处理模型服务。 三、设置work_connections 连接数 worker_connections 10240; 四、设置每个进程的最大文件打开数 worker_rlimit_nofile 65535; # 一般等于ulimit -n系统值 五、设置keepalive timeout会话保持时间 keepalive_timeout 60; 六、优化GZIP压缩性能 gzip on; #表示开启压缩功能 gzip_min_length 1k; #表示允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩,建议设置成大于1K。如果小于1K可能会越压越大 gzip_buffers 4 32k; #压缩缓存区大小 gzip_http_version 1.1; #压缩版本 gzip_comp_level 6; #压缩比率, 一般选择4-6,为了性能gzip_types text/css text/xml application/javascript;  #指定压缩的类型 gzip_vary on; #vary header支持 七、设置proxy超时 proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k 八、开启高效传输模式 sendfile on; # 开启高效文件传输模式。 tcp_nopush on; #需要在sendfile开启模式才有效,防止网路阻塞,积极的减少网络报文段的数量。将响应头和正文的开始部分一起发送,而不一个接一个的发送。

在linux内核系统上运行的nginx除了优化nginx设置外,还需要对linux底层内核进行优化以应对处理高并发请求。

九、linux内核参数优化

这些参数追加到/etc/sysctl.conf,然后执行sysctl -p 生效。

1)调节系统同时发起的tcp连接数

net.core.somaxconn = 262144

2)允许等待中的监听

net.core.somaxconn = 4096 

3) tcp连接重用

net.ipv4.tcp_tw_recycle = 1  net.ipv4.tcp_tw_reuse = 1   

4)不抵御洪水攻击

net.ipv4.tcp_synCOOKIEs = 0   net.ipv4.tcp_max_orphans = 262144  #该参数用于设定系统中最多允许存在多少TCP套接字不被关联到任何一个用户文件句柄上,主要目的为防止Ddos攻击

5)最大文件打开数

在命令行中输入如下命令,即可设置Linux最大文件打开数。

ulimit -n 30000

我知道答案,我要回答