欢迎参加我们的性能调优在线课程!
在本课程中,您将学习以下内容:
- 性能调优的基础知识
- 如何分析性能问题
- 如何优化网站和应用程序的性能
- 如何使用性能监控工具
本课程适合于:
- 希望提高网站或应用程序性能的开发人员
- 负责网站或应用程序维护的系统管理员
- 对性能调优感兴趣的任何人
本课程的好处:
-
<立即注册!
性能调优在线测试
测试您的性能调优知识!
-
性能调优的第一步是什么?
-
分析性能问题 -
配置性能监控工具 -
优化网站或应用程序的性能
-
-
以下哪项不是性能调优的技术?
-
缓存 -
代码优化 -
负载均衡 -
密码重置
-
-
哪种性能监控工具用于监视网站或应用程序的性能?
-
Google Analytics -
New Relic -
SolarWinds -
All of the above
-
性能调优篇:困扰我半年之久的RocketMQ timeout exception 终于被破解了
在内网环境中,超时问题,网络表示这个锅我不背。
在理解超时问题上,我不断实践,深入理解,历经半年,我终于找到了处理 RocketMQ timeout exception 的解决方案,并与大家分享。
本次技术分享,虽然涉及网络等我不熟悉的领域,如有错误,欢迎指正,共同学习进步。
1、网络超时现象 项目组反馈生产环境MQ发送超时,客户端日志如图所示。
接下来,让我们从这幅图开始讲起。
2、问题排查2.1 初步分析 关键日志信息如图所示,其中第二条日志涉及多请求的编程逻辑,客户端通过长连接发送多个请求,如何判断响应结果对应哪个请求呢?如图所示。
客户端多线程发送req1,req2两个请求,服务端多线程处理时,可能先返回req2响应,客户端如何识别响应对应请求?解决办法是请求生成唯一请求ID,并采用Future模式,将请求ID与Future对象放入Map,放入请求体中,服务端返回结果时将请求ID放入响应中,客户端收到响应后识别ID,唤醒业务线程,通知调用方,完成通信。
客户端未在指定时间内收到服务端响应,但最终收到,问题指向Broker端处理速度慢。
2.2 Broker端处理瓶颈分析 我通常认为RocketMQ消息发送瓶颈会导致各种Broker Busy错误,通过跟踪Broker端写入PageCache的指标,判断瓶颈是否存在。
结果如图所示,MQ集群中各Broker写入PageCache时间未超过100ms。
网络交互特性提示,问题可能出在网络上,我与业务方确认消息虽然发送超时,但被持久化,消费端能正常消费,网络组排查结果未发现问题,问题指向应用层。
2.3 网络分析 网络分析通常包括netstat与网络抓包,通过查看Recv-Q与Send-Q指标。
客户端Recv-Q大量积压,对应MQ Send-Q也大量积压,表明客户端与服务端通信存在瓶颈。
网络抓包显示客户端与服务端滑动窗口只有190字节,一个消息返回包250字节左右,导致响应包传输需要两次,不是主要原因。
2.4 客户端网络读性能瓶颈分析 我添加Netty性能采集代码,发现客户端网络读不存在瓶颈。
矛头指向Broker,是否缓存区写入响应结果较慢,未及时写入TCP发送缓冲区,导致超时。
2.5 Broker端网络层面瓶颈 优化RocketMQ服务端网络通信线程模型参数,设置serverSelectorThreads=16,serverWorkerThreads=32,在生产环境验证。
经过1个月验证,出现极少数消息发送超时,可忽略。
网络通信线程模型优化对于处理MQ发送超时至关重要。
3、总结 本文详细介绍了排查MQ发送超时的步骤,最终定位到RocketMQ服务端网络通信线程模型参数设置不合理。
耗时半年反思,我被“经验”误导,忽视了网络通信层考虑,导致问题解决延迟。
软件测试培训内容包含哪些方面
软件测试培训内容一般会帮助学员学习PC端,移动端功能和自动化测试,接口测试,性能测试技术,让学员在测试领域就业游刃有余,一般的软件测试培训课程分为五个阶段,总共历时五个月左右。
第一个阶段学习功能测试的相关内容,一般会学到软件测试核心理论,结合Linux、数据库等可实现移动端、web端的功能测试,学完之后基本可以胜任功能测试工程师的职位。
第二个阶段学习自动化测试,会学到自动化测试的相关内容,主要有Web自动化测试和APP自动化测试的内容,学完基本可以上手自动化测试工程师的工作。
第三个阶段将会学到接口测试的相关内容,还会配备国内某知名高校学生MIS系统接口项目实战,学完可选择接口测试工程师作为以后的发展路径。
第四阶段将学到性能测试的所有内容,学习性能测试理论知识,能运用性能测试工具LoadRunner和Jmeter做性能测试,测试出系统的性能情况,学完可做性能测试工程师。
最后一个阶段就是就业指导了,讲师将会从简历、面试技巧等层面进行辅导,帮助学员熟悉面试流程;让学员清晰了解职业发展规划,明确自身定位,找到适合自身发展的工作。
还有就业实训,学生根据当前主流软件,完成二到五个不同项目的测试;复习前期知识,巩固基础知识;增加面试竞争力,增强能力,扩展知识面。
以上就是软件测试培训内容和每个阶段需要学习的东西。
如何才能自学好python?
对于想要自学Python的小伙伴,这里整理了一份系统全面的学习路线,按照这份大纲来安排学习可以少走弯路,事半功倍。
第一阶段:专业核心基础
阶段目标:
1. 熟练掌握Python的开发环境与编程核心知识
2. 熟练运用Python面向对象知识进行程序开发
3. 对Python的核心库和组件有深入理解
4. 熟练应用SQL语句进行数据库常用操作
5. 熟练运用Linux操作系统命令及环境配置
6. 熟练使用MySQL,掌握数据库高级操作
7. 能综合运用所学知识完成项目
知识点:
Python编程基础、Python面向对象、Python高级进阶、MySQL数据库、Linux操作系统。
1、Python编程基础,语法规则,函数与参数,数据类型,模块与包,文件IO,培养扎实的Python编程基本功,同时对Python核心对象和库的编程有熟练的运用。
2、Python面向对象,核心对象,异常处理,多线程,网络编程,深入理解面向对象编程,异常处理机制,多线程原理,网络协议知识,并熟练运用于项目中。
3、类的原理,MetaClass,下划线的特殊方法,递归,魔术方法,反射,迭代器,装饰器,UnitTest,Mock。
深入理解面向对象底层原理,掌握Python开发高级进阶技术,理解单元测试技术。
4、数据库知识,范式,MySQL配置,命令,建库建表,数据的增删改查,约束,视图,存储过程,函数,触发器,事务,游标,PDBC,深入理解数据库管理系统通用知识及MySQL数据库的使用与管理。
为Python后台开发打下坚实基础。
5、Linux安装配置,文件目录操作,VI命令,管理,用户与权限,环境配置,Docker,Shell编程Linux作为一个主流的服务器操作系统,是每一个开发工程师必须掌握的重点技术,并且能够熟练运用。
第二阶段:PythonWEB开发
阶段目标:
1. 熟练掌握Web前端开发技术,HTML,CSS,JavaScript及前端框架
2. 深入理解Web系统中的前后端交互过程与通信协议
3. 熟练运用Web前端和Django和Flask等主流框架完成Web系统开发
4. 深入理解网络协议,分布式,PDBC,AJAX,JSON等知识
5. 能够运用所学知识开发一个MiniWeb框架,掌握框架实现原理
6. 使用Web开发框架实现贯穿项目
知识点:
Web前端编程、Web前端高级、Django开发框架、Flask开发框架、Web开发项目实战。
1、Web页面元素,布局,CSS样式,盒模型,JavaScript,JQuery与Bootstrap掌握前端开发技术,掌握JQuery与BootStrap前端开发框架,完成页面布局与美化。
2、前端开发框架Vue,JSON数据,网络通信协议,Web服务器与前端交互熟练使用Vue框架,深入理解HTTP网络协议,熟练使用Swagger,AJAX技术实现前后端交互。
3、自定义Web开发框架,Django框架的基本使用,Model属性及后端配置,Cookie与Session,模板Templates,ORM数据模型,Redis二级缓存,RESTful,MVC模型掌握Django框架常用API,整合前端技术,开发完整的WEB系统和框架。
4、Flask安装配置,App对象的初始化和配置,视图函数的路由,Request对象,Abort函数,自定义错误,视图函数的返回值,Flask上下文和请求钩子,模板,数据库扩展包Flask-Sqlalchemy,数据库迁移扩展包Flask-Migrate,邮件扩展包Flask-Mail。
掌握Flask框架的常用API,与Django框架的异同,并能独立开发完整的WEB系统开发。
第三阶段:爬虫与数据分析
阶段目标:
1. 熟练掌握爬虫运行原理及常见网络抓包工具使用,能够对HTTP及HTTPS协议进行抓包分析
2. 熟练掌握各种常见的网页结构解析库对抓取结果进行解析和提取
3. 熟练掌握各种常见反爬机制及应对策略,能够针对常见的反爬措施进行处理
4. 熟练使用商业爬虫框架Scrapy编写大型网络爬虫进行分布式内容爬取
5. 熟练掌握数据分析相关概念及工作流程
6. 熟练掌握主流数据分析工具Numpy、Pandas和Matplotlib的使用
7. 熟练掌握数据清洗、整理、格式转换、数据分析报告编写
8. 能够综合利用爬虫爬取豆瓣网电影评论数据并完成数据分析全流程项目实战
知识点:
网络爬虫开发、数据分析之Numpy、数据分析之Pandas。
1、爬虫页面爬取原理、爬取流程、页面解析工具LXML,Beautifulfoup,正则表达式,代理池编写和架构、常见反爬措施及解决方案、爬虫框架结构、商业爬虫框架Scrapy,基于对爬虫爬取原理、网站数据爬取流程及网络协议的分析和了解,掌握网页解析工具的使用,能够灵活应对大部分网站的反爬策略,具备独立完成爬虫框架的编写能力和熟练应用大型商业爬虫框架编写分布式爬虫的能力。
2、Numpy中的ndarray数据结构特点、numpy所支持的数据类型、自带的数组创建方法、算术运算符、矩阵积、自增和自减、通用函数和聚合函数、切片索引、ndarray的向量化和广播机制,熟悉数据分析三大利器之一Numpy的常见使用,熟悉ndarray数据结构的特点和常见操作,掌握针对不同维度的ndarray数组的分片、索引、矩阵运算等操作。
3、Pandas里面的三大数据结构,包括Dataframe、Series和Index对象的基本概念和使用,索引对象的更换及删除索引、算术和数据对齐方法,数据清洗和数据规整、结构转换,熟悉数据分析三大利器之一Pandas的常见使用,熟悉Pandas中三大数据对象的使用方法,能够使用Pandas完成数据分析中最重要的数据清洗、格式转换和数据规整工作、Pandas对文件的读取和操作方法。
4、matplotlib三层结构体系、各种常见图表类型折线图、柱状图、堆积柱状图、饼图的绘制、图例、文本、标线的添加、可视化文件的保存,熟悉数据分析三大利器之一Matplotlib的常见使用,熟悉Matplotlib的三层结构,能够熟练使用Matplotlib绘制各种常见的数据分析图表。
能够综合利用课程中所讲的各种数据分析和可视化工具完成股票市场数据分析和预测、共享单车用户群里数据分析、全球幸福指数数据分析等项目的全程实战。
第四阶段:机器学习与人工智能
阶段目标:
1. 理解机器学习相关的基本概念及系统处理流程
2. 能够熟练应用各种常见的机器学习模型解决监督学习和非监督学习训练和测试问题,解决回归、分类问题
3. 熟练掌握常见的分类算法和回归算法模型,如KNN、决策树、随机森林、K-Means等
4. 掌握卷积神经网络对图像识别、自然语言识别问题的处理方式,熟悉深度学习框架TF里面的张量、会话、梯度优化模型等
5. 掌握深度学习卷积神经网络运行机制,能够自定义卷积层、池化层、FC层完成图像识别、手写字体识别、验证码识别等常规深度学习实战项目
知识点:
1、机器学习常见算法、sklearn数据集的使用、字典特征抽取、文本特征抽取、归一化、标准化、数据主成分分析PCA、KNN算法、决策树模型、随机森林、线性回归及逻辑回归模型和算法。
熟悉机器学习相关基础概念,熟练掌握机器学习基本工作流程,熟悉特征工程、能够使用各种常见机器学习算法模型解决分类、回归、聚类等问题。
2、Tensorflow相关的基本概念,TF数据流图、会话、张量、tensorboard可视化、张量修改、TF文件读取、tensorflow playround使用、神经网络结构、卷积计算、激活函数计算、池化层设计,掌握机器学习和深度学习之前的区别和练习,熟练掌握深度学习基本工作流程,熟练掌握神经网络的结构层次及特点,掌握张量、图结构、OP对象等的使用,熟悉输入层、卷积层、池化层和全连接层的设计,完成验证码识别、图像识别、手写输入识别等常见深度学习项目全程实战。