nginx及常用部署方式与性能优化

nginx做反向代理服务器

nginx配置:

upstream backend_server{
    server 123.34.34.34 weight=1
    server 123.34.34.35 weight=1
}
server{
  location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $http_hosti:$http_host:$proxy_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarder-For $~~~~~~~~~~
    proxy_http_version 1.1; -- 长连接
    proxy_set_header Connection "";
-- 长连接
  }
}

H5 -》 nginx -》 多个服务器  -》 

 

nginx和服务之间默认是短连接,怎么样修改成长连接:

proxy_http_version 1.1

 netstat -an |grep IP |wc -l 查看连接数

 

高性能原因

一、epoll 

  1. java BIO 阻塞式进程模型
    1. client和server 通过socket连接;网络发送慢 client就写不了了。
  2. linux select模型 多路复用
    1. server 监听100个客户端连接是否有变化,有变化就唤醒自己,循环遍历100个链接,找到发生变化的,read操作
    2. 好处是read和write立马能返回
    3. 轮询太复杂
  3. epoll模型
    1. server监听
    2. 记录监听的回调函数
    3. 不用轮训

nginx就用epoll模型

二、master-worker 进程

ps -ef |grep nginx

能看到父子进程

 master是管理的

worker是实际处理客户端的进程

master启动epoll模型

工作方式:

  • 启动master
  • 在master创建scoket的文件句柄
  • scoke tlisten在80端口
  • master启动epoll多路复用
  • client收到tcpIp握手时的connect
  • epoll收到了
  • master让worker去处理

三、协程机制

golong就是基于协程的。

一个线程可以有多个协程。

没有cpu的切换,就切换内存。

不需要加锁。

 

posted @ 2023-06-10 15:38  CodingOneTheWay  阅读(37)  评论(0编辑  收藏  举报
回到顶部