Nginx

网页的图片,js ,css ,视频 都加 http accept-ranges头,以提高性能

网页的图片,js ,css ,视频 都加 http accept-ranges头,以支持多线程加载,断点续传,提高性能!目前各大网站都在使用此方式!

nginx 设置为:

server {
  listen 80;
  server_name p2hp.com;
  location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|video) {
    add_header Access-Control-Allow-Origin *;
    add_header Accept-Ranges bytes;
    root /var/www/...;
    access_log off;
    expires 30d;
  }
  ...
}

                    

Nginx 多进程架构和惊群问题

Nginx 多进程架构是:一个master进程和多个worker 进程。
一个worker 通过非阻塞式论询,可维护数千个连接,多个worker共享一个监听套接字.

Master进程

顾名思义,老板进程,主要负责有轻而巧的工作.
主要通过进程间通信对工人进程发号施令或是处理来自bash的start,stop,reload等用户指令。

Worker 进程

顾名思义,工人进程,主要负责重而笨的工作,主要负责处理来自浏览器的连接。
网站高并发情况下,巨大的工作负荷都是压到工人进程,老板进程在一旁观看指挥。

在TCP Socket 服务开发中,多进程或多线程共享监听套接字时面临惊群问题.

  1. 对于主流的linx版本, accept 阻塞调用,已经不存在惊群问题.
    也就是说多个进程同时accept 同一个 监听套接字,只有一个进程获的连接.
  2. 对于epoll_wait 非阻塞式的创建连接方式, 存在惊群问题。(即:一个连接请求唤醒多个worker 进程).

Nginx 在linux系统中使用epoll_wait 非阻塞式的方式,存在惊群问题。

浏览器的请求连接不经过master进程,直接由worker 进程处理,
但是一个请求如何分配到特定的worker进程?

  1. nginx 默认的配置accept_mutex on;
    多个worker 进程通过争锁获得连接,同时只有一个worker获得连接。
    工人进程抢着活干(让我来,别和我争)
  2. accept_mutex

Nginx开启一个参数就能让你的WEB性能提升3倍

一、遇到的一些问题

记得 2008 年做性能测试的时候,新进7台 lenovo 4核4G 服务器用于性能测试。

当时资源紧张,这7台服务器都装了双系统(Win2003/CentOS5)空闲时用于做测试机(压测的Agent)。

当时给Nginx做了一系列测试,印象很深的是:在这批机器上,Nginx状态页面的压测。

短连接的话最佳QPS约4万,长连接的话最高QPS约13万。…

        

为nginx动态模块创建可安装包

编辑 - 这篇文章是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 第一篇文章提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 本文提供了用于为生产环境自动化第三方动态模块构建的指导和工具。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。

NGINX 1.11.5和NGINX Plus R11引入了对独立于NGINX本身编译动态模块的支持。这允许NGINX和NGINX Plus的用户使用NGINX,Inc。存储库中的官方版本并加载他们需要的动态模块。动态模块有几个来源:…

为NGINX和NGINX Plus编译第三方动态模块

本文是关于使用NGINX和NGINX Plus的第三方动态模块的两部分系列的一部分。

  • 本文提供了编译第三方动态模块的逐步说明,这些模块可以在运行时由NGINX或NGINX Plus加载。
  • 第二篇文章提供了指导和工具,用于为生产环境自动化第三方动态模块构建。它解释了如何为包含版本依赖性检查的第三方动态模块创建可安装包。