什么是ngixn
Ngixn是一个轻量级,高性能的HTTP和反向代理web服务器
特点:占有内存少,并发能力强。事实上ngixn的并发能力在同类型网页服务器表现较好,中国大陆使用Ngixn网站有:百度,京东,新浪,网易,腾讯,淘宝等
为什么使用Ngixn
传统Web项目中,并发量小,用户使用的少。
在低并发情况下,用户可以直接访问tomcat服务器,然后tomcat服务武器发送消息给用户。
用户访问 <------->Tomcat服务器
在互联网项目下,因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题:
Tomcat8默认配置最大请求数是150。也就是说同时支持150个并发,当然了,也可以将其改大
当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群
具体能承载多少并发,需要看硬件配置,CPU越多性能越高,分配给JVM的内存越多性能也就越高,但也会加重GC的负担
操作系统对于进程中的线程有一定的限制:
Windows每个进程中的线程数不允许超过2000
Linux每个进程中的线程数不允许超过1000
(在JAVA中每开启一个线程需要消耗1MB的JVM内存空间用于作为线程栈之用)
Tomcat对的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大的关系。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。
maxThreads="150"
minSpareThreads="150"
maxSpareThreads="500"
高并发:
是互联网分布式系统架构设计中必须考虑的因素之一
通常指:通过设计保证系统能够同时并行处理很多请求
高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),并发用户数等
响应时间:系统对请求做出响应时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
吞吐量:单位时间内处理的请求数量
QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显
并发用户数:同时承载正常使用系统功能的用户数量
高可用:通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
高性能:是指服务响应时间快,(CPU/处理器/内存)特别是在高并发下响应时间不会急剧增加。
反向代理和正向代理
反向代理(Reverse Proxy):指代理服务器来接收Internet上的客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端。此时代理服务器对外就表现为一个反向代理服务器
正向代理:是一个客户端和原始服务器之间的服务器,为了从原始服务器获得内容。客户端向代理发送一个请求并指定目标(原始服务器),然后代理原始服务器转发并获得的内容返回给客户端
ngixn主要功能
请求转发:类似于 “接线员”
负载均衡
动静分离
ngixn的安装和启动
官网:http://ngixn.org/
下载完成后解压至无中文路径
常用的配置文件是 ./conf/nginx.conf
。查看默认监听端口。
启动Nginx: 可以双击安装目录下的 nginx.exe
,第一次启动时不建议这么做,因为启动窗口会一闪而过,看不到报错信息。可以使用 cmd
来启动。
启动后,关闭DOS窗口并不会关闭Nginx,在后台运行着。(可以使用任务管理器查看、关闭)
ngixn常用命令
cd /usr/local/nginx/sbin/
./nginx # 启动
./nginx -s stop # 停止
./nginx -s quit # 安全退出
./nginx -s reload # 重新加载配置文件
./nginx -v 显示nginx版本
./nginx -s reopen 重新打开日志文件
ps aux|grep nginx # 查看nginx进程
Nginx实际操作
nginx配置文件结构
... #全局配置
events { #events配置
...
}
http { #http配置
upstream edustudy { # 负载均衡配置,默认是轮询
server 127.0.0.1:8080 weight=1; # weight是权重
server 127.0.0.1:8081 weight=1;
}
server { #server代理
listen 9001;
server_name localhost; # 监听到之后转发到localhost
location / { # 9001端口下的所有请求都会被匹配到这里
proxy_pass http://edustudy; # 转发至负载均衡里
}
# www.edustudy.com/admin
location /admin {
}
# 当地址中包含"eduService"时,请求会转发至 http://localhost:8085
location ~ /eduService/ {
proxy_pass http://localhost:8085;
}
}
server {
listen 9002;
server_name localhost;
}
}
linux和nginx的区别?
Linux是一个操作系统,而nginx只是一个运行在操作系统上的软件。
nginx windows还是linux?
Nginx可以在windows下运行,也可以下载Linux版本,但一般推荐在性能更好的Linux下使用