1、单机容量问题–水平扩展
- 表像: 单机CPU使用率增高,memory占用增加,网络带宽使用增加
2、Nginx的反向代理配置
-
upstream 里面的设置的ip为 图中A、B服务器的私有ip
-
因为均为阿里云服务器 且在同一地区的局域网下 故可以使用私有ip
-
weight为负载均衡 1:1 进行轮询访问
-
在server下配置server_name 和 监听的端口号
-
将静态资源html、css、js 等信息放在指定的html/resources 下,访问域名拼接上location后面的路径
-
location / { } 中,
-
proxy_pass http://backend_server;
backend_server 为上面定义的后台地址 -
proxy_set_header Host $http_host:$proxy_port;
-
proxy_set_header X-Real-IP $remote_addr;
-
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
3、浏览器每发出一个请求,通过Nginx就会和后端服务器建立一个连接,当有大量请求时,这个建立连接和释放连接的过程 就相当的损耗性能。
- 为解决此问题,可以在Nginx的conf目录下nginx.conf配置文件中,打开keepalive=30 默认当没有连接时仍保持30秒的连接状态。 使用常连接保证了对应的分布式扩展网络连接之后 所产生的的一个网络建连的消耗,使用keepalive方式 解决了nginx与upstreamServer之间的网络连接消耗,用Druid的数据库连接池解决了和数据源之间的连接消耗。
keepalive 30;
- 但是需要注意的是,nginx默认使用HTTP1.0 进行连接,而http1.0 并不支持Keepalive的设置。首先要将http声明为1.0 配置如下
proxy_http_version 1.1;
- 允许重新定义或追加字段到传递给代理服务器额请求头信息(默认是close)
proxy_set_header Connection "";
4. Nginx高性能的原因
4、1. Nginx的高性能 – epoll多路复用机制完成非阻塞式的IO操作
- Java BIO模型,阻塞式进程
- Linux select模型是由限制的,理论上说它只能监听1024个数量的句柄,对超级多的客户端连接的时候 应用服务器就显得力不从心
- Linux2.6 内核以后就诞生了epoll模型,即变更触发回调直接读取,理论上无上限