基于动态、静态内容结合的网络优化案例| 学习笔记

简介: 快速学习基于动态、静态内容结合的网络优化案例。

开发者学堂课程【线上Linux服务器优化经验基于动态、静态内容结合的网络优化案例】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/382/detail/4810


基于动态、静态内容结合的网络优化案例


一、 引入案例

1.硬件环境。

2.软件环境

3.通过对以上案例的硬件环境、软件环境、现象描述的了解,分析问题可以往以下几个方面进行思考。

二、分析问题

1.硬件、系统方面

2.网络方面

3.软件架构方面

4.程序配置方面

三、解决问题

1、 架构方面的调整

2、 网站动、静分离

 

一、引入案例

1.硬件环境:DELL R710 3台、32GB内存、CPU2颗8核、磁盘SATA 600GB+2TB。

R710服务器有三台这是硬件环境,内存呢是32G,这个cpu是两颗八核,硬盘是这个SATA盘的600G两块,那个盘做了个数据盘这是硬件环境是这样子。

2. 软件环境:nginx+tomcat架构,通过nginx做负载均衡。

现象描述:

平时访问量小时,网站正常,当访问量稍大时,网站访问很慢,网站搞活动时,基本处于无法打开状态,而nginx服务器带宽占最高在30M左右,后端2个tomcat服务器占用带宽占用也在30M左右。

3. 通过对以上案例的硬件环境、软件环境、现象描述的了解,分析问题可以往以下几个方面进行思考。

 

二、分析问题

1.硬件、系统方面

通过查看相关数据发现系统负载不存在问题

Mem :65973180k  total ,54388372k,used,1584808k free, 263808k  buffe rs

Swap :16383992k tota1  Ok  used,16383992k free,47631608k

Cached

image.png

2.网络方面

nginx 服务器带宽占最高在30M左右,可以判断网络方面不存在问题

排除了网络方面的问题也是可以排除的因为服务器是千兆网卡,既然千兆网卡的话,我们刚才又看到这个现象的描述,就说 NG 服务器最多30多兆,外网出口带宽是百兆的,所以如果说我们 NG 服务器这个总这样,带宽如果超过百兆的话,那可能就是其它的问题。

但是现在百兆独享,NG 带宽30多,因此可以通过这点去判断,这网络方面其实也是没有问题的。

3.软件架构方面

nginx+tomcat 架构不存在问题

软件架构,其实就是前面一个NG,然后后面两台做两个 tomcat ,是这样的架构才能有请求过来架构其实很简单,没有任何别的其方面的策略,这个架构本身也是没有问题的,很多其实网站架构都是这么来做的,但是为什么访问非常慢呢?

其实还是要考虑程序方面的问题,就这样这一个架构搭建起来之后关于在这个价格配置上面是不是解决问题的,这个也是所需要考虑的,为什么会想到这一点因为从带宽这块儿看到一些端倪,就是 Nginx 服务器的了30多兆的带宽,而后端2个tomcat 服务器也占用了30M左右。

4.程序配置方面

(1)nginx 服务器带宽占最高在30M左右,后端2个tomcat 服务        

器占用带宽占用也在 30M 左右这方面存在很大的问题。  因为从这个 NG+tomcat 来说所有的请求都是经过 NG ,然后再转到 tomcat 去,tomcat 处理的都是动态的请求,动态请求不可能有30多兆这么大的流量带宽,如果说后端真是纯粹的tomcat,NG服务器那这样会远远大于30兆,而现在 ng 这个带宽也仅仅是30兆左右,那么通过这个对比就发现这个在程序配合是肯定是存在问题,那么针对这个问题呢,查询相关的这个日志,那怎么查询日志首先第一块儿,就是要看一下相关的这个配置文件。第二就是要查看一下这 tomcat 的一个日输出。

(2) 所有的请求都是通过 nginx 转到 tomcat ,tomcat 都是动态

请求,而带宽占最高在30M左右过大,如果后端是纯粹的,那么 nginx 服务器的带宽占比应大于30M。所以通过对比发现程序配置上存在问题。

(3)针对以上问题,通过查看相关日志里面的 nginx 配置文件、

tomcat 日输出。在 tomcat 日输出里面发现 tomcat 日输出包含了静态输出,而tomcat 是负责动态输出,对于静态输出功能性很差。所以本应由 nginx 处理的文件却转到了 tomcat 上,这就导致了 tomcat 的性能下降。带宽在30M左右对以上解释做了验证。

通过分析,找到了出现以上问题的原因,以下是如何解决问题

 

三、解决问题

1、架构方面的调整

对 nginx 负载做重新分配,操作如下图所示:

upstream myserver{

ip_hash;

server172.16.100.11:8080weight=1max_fails=2fail_timeout=10s;

server172.16.100.12:8080weight=3max_fails=2fail_timeout=10s;

server172.16.100.13:8080weight=2max_fails=2fail_timeout=10s;

server172.16.100.14:8080weight=2max_fails=2fail_timeout=10s;

}

这是最终配置的一个方案,比如我们后端有三台机器,那么我们配置的方法呢,就是通过 upstream,然后后面跟上 myserver 这个名字就是负载均衡的一个组,然后在这块做了一个简单的调试,就是做了一个权重的设置,因为后台这个 tomcat 每台机器的性能,如果不一样的话,可以根据后端每一个性能去做一个权值的一个划分,性能高度把它设高一点,那么划分的这个标准就通过 weight 这么一个参数值,weight 等于一就是它的权值是一,然后 max_field,那就是失败两次

然后失败的一个评判标准就是这个 fall_timeout ,那就是在这个超时十秒钟这个范围之内,如果说这个 NG 还没有收到请求的话,就认为,这个后端 tomcat 的节点出现了故障。

故障连续两次发生,就会把它从那个机器里面去剔除,因为在这个故障发生的时候,看到们这个案例的的配置,是后面没有这些属性参数配置的,那么,在这个情况下,很容易造成后端请求本身因故障,还会把请求就说不成的分类,这样一些故障节点。

那么,这种情况可能就导致了我们刚才所说的这个表面信息,网站打开非常非常慢,得了半天都打不开,那就因为可能会把很多请求都发到了本身因故障这样的一个逃不开的结点上来,那么加了这些参数配置之后,就是如果后端节点确实故障,就能够根据本身就可以自动检测到,然后把剔除出去。

2、网站动、静分离

Location~*\.(gifljpglpngljslcss)${

 root    /data/static/images/ROOT;

 }

第二部分要调优就是关于网站的动静分离,那么这个其实也是要讲的一个核心,那么本案例的最终目的就是没有做网站的动静分离,所以导致开始后段流量很大,处理了很多一些静态请求资源。

而动态资源,就得不到这种即时的请求,所以导致网站对方非常非常的慢,那么做动静分离,这个东西其实是这个 NG 的一个强项,那么 NG 服务器的一个非常强劲的地方其实就是处去处理这种静态的这种数据文件,那么我们做的一个标准就是将所有的,将我们这个网站上所有的这些静态资源,不管是图片还是视频还是一些文本等等,把这些资源完全的交给这个 NG去完成那么一些动态的 JSP ,加大请求,我们把它交给这个 tomcat 后端,多台 tomcat 的去完成。

Nginx 中 location 匹配规则:

首先匹配=,其次匹配,然后是按文件中的顺序的正则匹配,最后是交给/通用匹配,当有匹配成功的时候,停止匹配,按当前匹配规则处理要求。

相关文章
|
20天前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
168 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
5天前
|
缓存 监控 前端开发
优化网络应用的性能
【10月更文挑战第21天】优化网络应用的性能
8 2
|
6天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
12天前
|
运维 监控 安全
连锁药店网络优化策略:一站式融合方案提升竞争力
在数字化浪潮下,线上药店通过技术创新和线上线下融合,正重塑购药体验,提供24小时服务和医保结算便利。面对激烈竞争,连锁药店和中小药店纷纷通过优化网络架构、提升服务质量和加强合规管理来增强竞争力,实现高效、安全的数字化转型。
|
15天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
17天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
20天前
|
监控 自动驾驶 5G
|
26天前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
10天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
18天前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
25 0