汪微的博客
zane,做一个有思维的开发者

汪微的博客

nginx随笔

2018年04月28日73 browse

一:反向代理

nginx实现反向代理非常简单,使用proxy_pass配置

案例:

把所有.js结尾的文件指向到1234端口
location ~* .js$ {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass 127.0.0.1:1234;
}

一些反向代理的配置
proxy_set_header Host $host;  
client_max_body_size 10m; #允许客户端请求的最大单文件字节数  
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,  
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)  
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)  
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)  
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小  
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置  
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)  
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传

二:负载均衡

nginx实现负载均衡也比较简单使用,使用proxy_pass+upstram配置

参数说明:
weight=number:设置服务器的权重,默认情况下为1
max_conns=number:限制到代理服务器的同时活动连接的最大数量,默认为0
max_fails=number:服务器通信的失败尝试次数
fail_timeout=number:服务器通信失败超时时间,默认为10
backup:将服务器标记为备份服务器。它将在主服务器不可用时传递请求
down:将服务器标记为永久不可用

案例:

upstream strameserver {
    server 127.0.0.1:8081 weight=1 max_fails=4 fail_timeout=5;
    server 127.0.0.1:8082 weight=1 max_fails=4 fail_timeout=5;
}

location / {
    proxy_pass http://strameserver;
}

默认的均衡算法是针对后端服务器的顺序,逐个请求。

三:高性能服务的架构

对于高性能网站,请求量大,如何支撑?

1、减少http请求量,即通常所说的合并请求

2、客户端尽可能多的使用一系列缓存技巧

3、使用cdn进行加速,响应请求

4、web服务器设置Expires等缓存信息

5、剩下的不可避免的请求使用服务器集群+负载均衡来支撑

大概认知:

既然响应是不可避免,我们要做的是把工作内容“平均”分配给每台服务器。

最理想的状态,每台服务器的性能充分被利用。

根据项目情况选择相应服务器,计算密集,I/O密集 ,进程密集等。

根据服务器的情况可以进行相应的分类,有的做静态资源服务器,有的做内存缓存服务器,有的做数据库服务器,有的做业务进程服务器等等,根据自身情况进行分类。

测试工具:

可使用Apache ab进行测试,案例:

ab -n 800 -c 800  http://localhost/ 
(-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)

ab -t 60 -c 100 http://localhost/ 
在60秒内发请求,一次100个请求。

或使用webbench

webbench -c 300 -t 60 http://localhost/


nginx配置,设置worker process进程的最大并发链接数

events {
    worker_connections  10000;
}

最大链接数

查看
more /proc/sys/net/core/somaxconn
设置
echo 1000 /proc/sys/net/core/somaxconn

tcp

查看
cat /proc/sys/net/ipv4/tcp_tw_recycle
设置
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

请求限制

查看
more /proc/sys/net/ipv4/tcp_syncookies
设置
echo 0 > /proc/sys/net/ipv4/tcp_syncookies

允许文件打开数

查看
ulimit -n
设置 
ulimit -n 50000

nginx配置,更改worker进程的最大打开文件数限制

worker_processes auto;
worker_rlimit_nofile 10000; 

events {
    worker_connections  10000;
}

nginx配置,高并发keepalive_timeout尽量设置的更小

keepalive_timeout  0;


博主 zane 发表于 2018-04-28 10:56:25,添加在了 nginx 标签下

打赏

您的支持将鼓励我继续努力与分享。

扫码打赏,建议金额1-10元

提醒:打赏金额将直接进此方账号,无法退款,请您谨慎操作。

评论

正在加载验证码......

提交