一种瞬时网站打开的方法
浏览次数:14作者:千旭网络
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 经过极端压力验证
历史上 Nginx 崩溃的已知场景(几乎全部已修复)
1.SSL 库漏洞(OpenSSL)- 特定版本有 bug,升级解决
2.超大 header 攻击 - 配置 large_client_header_buffers 可防护
3.磁盘写满 - proxy_store 保存文件时磁盘满了会报错(不崩溃,只是返回错误)
4.配置文件错误 - nginx -t 验证后再 reload,不会影响运行中的进程