020-29876379

SEO

网站建设好后,部署在互联网上的云服务器(ECS等)上,用户都希望打开速度快,网站速度快了,用户体验也会加分。

这里我们使用静态网页和动态网页完全分离的技术。

一般情况下用户访问部署在云服务器上的网站,得到用户请求,网站会去访问数据库,还会去访问运行Web 应用的程序如Tomcat

,但是如果我们把Web应用的动态网页转化为静态html网页,让网站通过nginx直接访问磁盘上的html网页,就省去了一些中间环节,

网站访问速度就变得飞快。

这里我们对应一下nginx,tomcat占用云服务器(ECS等)内存的情况就一目了然了。

 

**Nginx 的资源占用极小**,这正是它适合作为静态文件服务器的原因:

 

**磁盘占用**

# 查看你服务器上 Nginx 的实际大小

du -sh /etc/nginx/          # 配置文件(通常 < 1MB)

rpm -qi nginx | grep Size   # 安装包大小

 

一般来说:

- 安装包:约 **1.5 MB**

- 配置文件:几 KB

- SSL 证书:几 KB

- 总计不超过 **3 MB**

 

**内存占用**

# 查看你服务器 Nginx 实际占用

ps aux | grep nginx

 

| 进程 | 内存 |

|------|------|

| master 进程(主控) | **约 2-4 MB** |

| worker 进程 × 2(2核服务器) | **约 5-10 MB 每个** |

| **总计** | **约 15-25 MB** |

 

**与 Tomcat 的对比**

| | Nginx | Tomcat |

|-------------|----------|--------|

| 启动内存     |   ~20 MB | ~512 MB |

| 峰值内存     |   ~30 MB | 最高 1024 MB |

| 启动时间     |    < 1 秒 | 30-60 秒 |

| 服务静态文件 | 直接读磁盘 | 需 JVM 解释执行 |

说明:可根据自己实际情况设置内存大小

 

**实际意义**

 

假设的服务器 10G 内存:

- Nginx 静态服务模式:占用约 **20-30 MB**,剩余 9.97G 空闲

- Nginx + Tomcat 运行模式:Tomcat 还需 800MB~1G

 

所以搜索引擎爬虫如百度搜索必应搜索360搜索来大量抓取静态页时,只有Nginx在响应,内存完全不会撑满。

而且nginx运行很稳定,其原因如下:

 

特性1 C 语言编写

说明1 无 JVM、无垃圾回收、无内存溢出风险

 

特性2 事件驱动架构

说明2 单线程处理万级并发,不会因线程耗尽崩溃

 

特性3 master/worker 分离

说明3 worker 崩溃后 master 自动重启新 worker,主进程不受影响

 

特性4 无状态

说明4 静态文件服务不维护会话,重启瞬间恢复

 

特性5 经过极端压力验证

说明5 淘宝腾讯等每秒百万请求级别长期稳定运行

               

历史上 Nginx 崩溃的已知场景(几乎全部已修复)

1.SSL 库漏洞(OpenSSL)- 特定版本有 bug,升级解决

2.超大 header 攻击 - 配置 large_client_header_buffers 可防护

3.磁盘写满 - proxy_store 保存文件时磁盘满了会报错(不崩溃,只是返回错误)

4.配置文件错误 - nginx -t 验证后再 reload,不会影响运行中的进程