nginx搭建域名访问环境一(反向代理配置)
1.使用switchhosts配置windows访问跳转域名到虚拟机的nginx,跳转后为niginx的首页
2.让nginx帮我们反向代理,所有来自于guliamll.com的请求都转到商品服务,跳转后为商品服务的首页
修改nginx,cd nginx/conf.d copy一份default.conf文件,修改servername为gulimall,并且修改location proxy_pass跳转的到我们商品服务
原理:windows设置了gulimall的映射到虚拟机ip,所以浏览器访问gulimall.com会先来到虚拟机,然后虚拟机的nginx监听了80端口,而且域名是gulimall.com,proxy_pass帮我们再代理到本机,就访问到了商品服务。.
nginx搭建域名访问环境二(负载均衡到网关)
1.进入nginx下的总配置文件nginx.conf,添加upstream gulimall{ server 192.165.56.1:88},配置了网关的端口,如果部署多个网关,则可以写多个
2.修改gulimall.conf配置文件,把之前proxy_passs配置的商品服务修改为网关
3.在网关配置路由规则
- id: gulimall_host_route
uri: lb://gulimall-product
predicates:
- Host=**.gulimall.com 重启网关
4.出现一个问题,并不能匹配到网关再路由到商品服务。原因:在页面向nginx发送请求时会带上一个host:gulimall.com,而在nginx转发网关发送请求时会丢失host信息,包括一些cookie信息也会丢失。
解决办法:在nginx中设置请求不丢失,在gulimall.conf文件location中配置proxy_set_header Host $host;重启后则生效
总结:先访问gulimall.com,windows hosts配置了guliamll访问到我们的虚拟机的nginx,因为访问gulimall.com不带端口默认就会访问虚拟机里面的nginx,nginx中配置了80端口监听gulimall.com这个地址,
在路由到网关,这个过程会丢失头信息,加上头信息proxy_set_header,就不会丢失,网关看到gulimall.com这个地址再通过配置路由到商品服务。
性能压测(压力测试)
在分布式开发中,会把每一个服务都抽离成独立的模块,微服务模块在上线之前乃至上线之后都要对它进行压力测试。压力测试主要是在4G内存,4核cpu,等环境下测试最大负荷量(系统瓶颈),知道瓶颈后就可以通过负载均衡
避免这个系统在单位时间内发送过多的请求被压垮甚至宕机,导致服务不可用。
1.性能指标
响应时间:客户端发送请求开始,至客户端接收到服务段返回的响应数据结束所花费的时间
HPS:每秒点击次数 次/m
TPS:系统每秒处理交易数 笔/m
QPS:每秒查询数 次/m
最大响应时间:发送10W请求访问这个接口,这个接口响应的最长时间
最小响应时间:发送10W请求访问这个接口,这个接口响应的最短时间
90%响应时间:所有用户响应时间的排序,90%的用户响应的时间
一般关注指标:吞吐量(每秒系统能处理的请求数),越大越好。响应时间(服务处理请求的耗时)越小越好。错误率(一组请求中结果出错的占比例)
JMeter
下载安装,配置http请求为项目地址,添加查看结果树,汇总报告,聚合报告,汇总图。运行查看吞吐量
解决JMeter在windows下地址占用bug
情景:当我们访问地址不写gulimall.com而是写127.0.0.1:10000端口,会出现50%异常,提示地址早被使用。
原因:windows提供给TCP/IP链接的端口为1024-5000,并且要四分钟来循环回收他们,就导致我们在短时间内跑大量的请求时端口被占用了。
解决:通过修改注册表。路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下新建MaxUserPort为十进制65534,新建TCPTimedWaitDelay为十进制30,设置好重启计算机