自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(500)
  • 资源 (8)
  • 收藏
  • 关注

原创 【性能调优】一次监控数据错误的性能调优经历

针对自建存储服务的回调接口调优时,qps一直卡在1w,但是从各种监控和分析并未找到性能瓶颈,最后发现竟然因为数据库cpu监控不准备误导,特此记录整个调优的过程一、源码分析回调接口源码性能分析:1次redis查询2次db操作,其中1次查询,1次写入操作5次本地缓存读取1次外部接口调用其中最大的性能瓶颈很有可能在db操作中二、资源配置服务配置mysql一主一从 16c 128gredis16g 8节点callback服务2c 4g三、试验分析接

2021-05-24 00:09:16 3710 4

原创 【Redis】技术评审要点

针对redis在技术方案评审或测试方案设计时的一些注意要点一、大key1.1 定义单个简单的key存储的value很大hash、set、list中存储过多的元素1.2 场景热门话题下评论、答案排序场景大V的粉丝列表使用不恰当,或者对业务预估不准确、不及时进行处理垃圾数据等1.3 风险:单个size太大,并发高容易把redis带宽打满读写大key会导致超时严重,甚至阻塞服务如果删除大key或者自动过期,DEL命令可能阻塞Redis进程数十秒,使得其他请求阻塞redis是

2021-05-23 01:38:16 2880

原创 【网络协议】mysql协议数据包分析

使用tcpdump抓取应用层mysql协议的数据包,然后使用wireshark工具对mysql协议数据包进行分析一、tcpdump数据包可以通过端口规则或mysql规则抓取对应的mysql数据包,接下来通过端口规则限定抓取mysql的数据包1.1 查看mysql的端口jdbc:mysql://swqa.lluozh.com:3487/lluozh?characterEncoding=UTF-8即显然当前数据库的端口为34871.2 tcpdump数据包根据端口信息抓取对应的数据包tcpdu

2021-05-22 01:48:11 5219 6

原创 【网络协议】tcpdump抓包

一、简介tcpdump根据使用者的定义对网络上的数据包进行截获的包分析工具,用简单的话来定义:dump the traffic on a networktcpdump可以将网络中传送的数据包的"头"完全截获下来提供分析支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句去掉无用的信息tcpdump基于底层libpcap库开发,运行需要root权限二、抓包原理Linux抓包是通过注册一种虚拟的底层网络协议来完成对网络报文(准确的说是网络设备)消息的处理权当网卡

2021-05-17 08:48:42 3741 4

原创 【性能调优】单接口性能调优预备阶段

一、现状在性能测试一开始就针对全接口全场景进行性能压测并调优,如果再加上对业务代码不熟悉,基本上就是熟悉的尴尬场景:阶梯递增并发线程数获得服务性能拐点调整服务端数据库连接池配置调整JVM中新生代老年代等配置优化监控获得的慢sql语句利用工具分析线程堆栈信息不了解业务逻辑,不了解具体代码实现,基本上这些招数使用后对于性能优化就毫无头绪且无能为力了接下来看看调优从开始准备到调优完成整个流程中更为有针对性的方式,需要在调优前更加充分的准备,更加深入的分析业务实现代码,且提前预估性能风险点,有利

2021-05-06 20:09:51 2826

原创 【Furion】JMeter+Influxdb+Grafana压测监控

一、概述在使用JMeter做性能测试时,需要查看压测过程中请求的响应情况,如需要实时显示20w qps的压测数据监控,接下来使用JMeter+Influxdb+Grafana方案打造压测可视化实时监控数据流程JMeter引入Backend Listener,用于在压测过程中实时发送统计指标数据给时序数据库Influxdb,通过配置Grafana数据源连接到Influxdb,就可以创建炫酷的可视化看板,并实时获取到测试指标数据流程图...

2021-03-09 08:31:54 3232

原创 【性能概念】理发店模型

理发店模型,可以很好的用来理解很多性能测试的概念和理论,以及一些测试中遇到的问题将抽象的概念具体化,结合实际,通过理发店模型理解系统的性能和并发处理一、模型假设在这个理发店中,事先做如下的假设:理发店共有3名理发师每位理发师剪一个头发的时间都是1小时顾客们对于每次光顾理发店时所能容忍的等待时间+剪发时间是3小时,而且等待时间越长,顾客的满意度越低。如果3个小时还不能剪完头发,我们的顾客会立马生气的走人二、场景构建2.1 场景1理发店内只有1位顾客有1名理发师为他提供服务,另外2位

2021-02-23 08:35:28 1849

原创 【Furion】平台架构演进

Furion平台是一个提供并发压力、性能结果分析、容量测试及基准测试的性能平台接下来mark以下Furion平台的架构演进一、单机模式优势:操作简便、无需环境部署直接使用jmeter编辑jmx文件,然后发起流量压测,不足:能提供发起的压力有限比如2c的机器在提供qps600的压力时CPU已经基本跑满垂直扩容压力非线性垂直扩容为4c甚至8c、16c,由于端口、带宽等方面的影响,能提供的压力并不是线性比例关系垂直扩容成本高分布式模式服务端架构分布式设计支撑大并发业

2021-02-04 08:27:49 6414 4

原创 【用例设计】接口用例设计

在接口测试过程中,用例设计是关键中的关键,需要重点关注的一些维度接口测试什么是接口接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,所谓的接口是模块与模块之间的一种连接接口测试上图为一个典型的接口,一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑接口测试的用例设计,主要从输入和接口处理两方面考虑:针对输入,可按照参数类型进行设计针对接口处理,可按照逻辑进行用例设计针对输出,可根据结果进行分析设计

2021-01-10 23:28:59 4980 6

原创 【调优案例】调优问题总结

数据库索引 – 扫描行数、慢查询查询sql语句连接池 – initial-size、max-active、min-idle testOnBorrow testWhileIdle主库从库配置JVMfgc和ygc频繁 – -Xms、-Xmx、Xmnredis缓存穿透 - 缓存过期时间连接池配置min-idle、max-idle大key 热key日志锁争抢异步、logback、log4j2、入参打印开关服务dubbo连接池配置 dubbo.protocol.threads – 线

2020-11-13 21:03:42 3286

原创 【场景构造】并发抢答场景

在做一个项目的性能测试时,涉及抢答场景,大致的场景故事为:教师出一道题,班级中所有学生进行抢答,抢答后教师关闭抢答那如何使用jmeter构建多个角色处理不同但相关的事情呢?方案一:不同角色使用不同线程组发起请求难点:如何教师角色的线程组执行后,学生角色的线程组再执行即使解决问题1但是如何循环多次同步执行由于问题2解决成本大而且造成执行事务复杂化,故该方案不可行方案二:在同一个线程组中,通过变量控制不同线程的执行角色通过计数器控制器使用时所有用户即所有线程都共享的方式按照顺

2020-11-12 09:20:38 2174

原创 【mysql调优】数据库连接池配置优化

在性能调优过程中,通过监控数据经常发现接口花费大量时间在获取数据库连接中,那如何通过优化数据库连接池的配置来优化服务的性能呢?什么是数据库连接池创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠官方解释:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

2020-03-27 23:02:23 7482

原创 【调优工具】线程快照分析

在性能调优的时候,apm监控可以看到一直卡在mysql的DruidDataSource.getConnection()这个时候数据库的资源使用情况cpu、内存、网络均正常,dubbo容器的cpu等资源也正常抓取线程快照查看线程为何一直处于数据库等getConnection获取线程快照在服务端连续三次将线程快照down下来,命令如下jstack pid > 文件名.txtpid为需要抓取的进程数抓线程快照,必须是在加压,且压到出现问题时抓取,连续抓取3~5次有两种方式可以分析

2020-03-27 13:46:43 5262 2

原创 【RAG实战】RAG系统构建与微调实战

RAG系统的核心部分包括两大部分:召回模块和生成模块。召回模块的性能决定了整个系统的覆盖率,因为如果无法召回包含答案片段的文本,则生成模块将无法完成任务。然而,随着技术的飞速发展,生成模块的任务已不仅仅是汇总召回模块的结果,一些由生成模块主导的RAG系统正逐渐取代传统的召回主导型RAG系统。在本章中,将介绍如何构建适用于RAG场景的向量模型、大模型的指令微调实战,以及如何构建由大模型决策的RAG系统以解决复杂的用户问题。

2025-04-03 09:04:11 502

原创 【RAG实战】基于LangChain实现RAG应用

大模型应用开发框架LangChain被开发者广泛应用。接下来介绍LangChain中与RAG相关的组件,并利用LangChain构建一个可视化的大模型RAG应用,用于回答指定PDF中的相关问题。

2025-03-27 09:26:33 889

原创 【RAG实战】RAG系统训练

对于一个完整的RAG系统而言,不能像开源博客、框架一样使用独立的召回模块和生成模块。因为召回模块与生成模块相互解耦,这意味着召回模块的召回信息并不能保证生成模块一定能有效地生成正确答案,同时生成模块的训练也没有学习到如何有效地利用召回模块的召回信息。因此,在实际的工业落地时,会考虑更好的训练方法来同时完成召回模块和生成模块的训练。本章将梳理RAG系统训练方法,以及各个训练方法的优缺点,最后完成RAG系统的联合训练实战。

2025-03-21 09:36:01 453

原创 【RAG实战】RAG范式演变

介绍RAG的范式演变,涵盖基础RAG系统、先进RAG系统、大模型主导的RAG系统以及多模态RAG系统等

2025-03-18 09:50:26 801

原创 【RAG实战】核心技术与优化

在一个完整的大型RAG流程中,除了需要使用文本召回模型,还涉及提示词的设计、文本切块、向量数据库的选择、召回环节的优化、RAG效果的评估以及LLM能力优化等环节

2025-03-12 10:02:46 625

原创 【向量数据库】向量库

向量数据库具备高效检索、扩展性强、实时性强等优势,与大模型相结合,为大模型的应用扩展了广度和深度。

2025-01-07 12:01:51 995

原创 【向量数据库】向量存储内存

对于海量的向量数据,除了搜索速度以外,内存的开销也是一个巨大的挑战。举个例子,假如向量的维度是128,每个维度的数值是一个32位的浮点型数,那么一个向量占用内存的大小就是:512字节如果库中一共有1千万个向量,那么总共占用的内存:大约4.77GB实际上在真实应用场景中,上千的向量维度和上亿的向量数量都不并稀奇,因此内存开销的问题大约的确是严重的。每个向量都对应着一个切实有用的记录,所以不太可能通过纵向的删除某些向量来节省内存,那唯一的选择只能是想办法横向的把每个向量本身的大小给降下来。

2025-01-06 12:18:53 1292

原创 【向量数据库】搜索算法

最近几年,一种叫做向量数据库的产品,正趁着AI的热潮开始崭露头角。伴随着AI时代的到来,向量将成为一种重要的数据形式,而传统数据库并不适合用来存储和检索向量数据,因此我们大约需要一种专门设计的数据库来处理这些问题。和存储数据表,然后用查询语句进行精准搜索的传统数据库不同,向量数据库存储的是向量数据,而查询过程则是从库中搜索出和查询向量最为相似的一些向量,具有一定的模糊性。

2025-01-06 12:05:49 1224

原创 【向量数据库】向量定义

这里有一些狗,熟悉犬类的朋友应该能很快区分出它们的品种,之所以能做到这一点,是因为我们会从不同的角度来观察它们的特征。比如体型的大小,如果我们使用一个坐标轴来表示这个特征,这些狗将落在不同的坐标点上然而,单纯依靠体型这一个特征还不够,比如金毛和拉布拉多的体型就非常接近所以需要继续观察其他特征,比如毛发的长短,我们再建立一个(毛长的)坐标轴,这样就区分开了金毛和拉布拉多,现在每只狗对应一个二维的坐标点。

2025-01-04 02:49:14 1145

原创 【RAG实战】文本召回模型

文本召回模型是大模型RAG的核心。本章首先介绍文本文本召回模型相关的基础知识,包括如何计算文本相似度和获取句子向量表示等。然后介绍一些经典模型,包括稠密向量检索和稀疏向量检索模型。重排序模型会在本章最后进行介绍,它进一步提高文本召回效果。

2025-01-03 09:39:50 1436

原创 【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术,通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地,语言模型可根据上下文中已出现的词序列,使用概率推断来预测接下来可能出现的词汇。接下来主要介绍一些基础的语言模型,如Transformer、自动编码器、自回归模型等。

2024-12-24 09:26:40 1852

原创 【RAG实战】RAG与大模型应用

一种能够生成各类内容的技术,包括文本、图像、音频和合成数据。自2022年底ChatGPT在全球范围内推广以来,基于Transformer解码器结构的大模型已能在短时间内为用户生成高质量的文本、表格、代码,使整个AI领域迈入了新的时代。大语言模型(Large Language Model,LLM)经过海量文本数据的训练后,能将这些文本数据以一种黑盒形式压缩在模型参数中。预训练完成后,模型便掌握了大量的人类知识世界。

2024-12-16 21:29:53 1665

原创 【Java】Java8中的Stream

一、Stream的理解Stream是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等在Java8中Stream API作为数据渠道,用于操作数组或者集合等数据源。流本身是不存储数据的,只是移动数据,在移动过程中可能会对数据进行过滤,排序或者其它操作,但是,大多数情况下,流操作本身不会修改数据源,比如,对流排序不会修改数据源的顺序。它只是会创建一个新的流,其中包含

2022-05-12 08:26:16 1169

原创 【测试之道】测试发展之路

一、测试团队面临的困局随着互联网的发展,持续集成及DevOps等软件工程方法的提出和普及,软件测试技术也发生了很大的变化。自动化测试、敏捷测试和测试左移等方法论被广泛应用于实践,研发团队对测试技术和测试团队有更高的期待。与此同时,测试团队也面临着不少的困难,其中具有普遍性的有:测试自动化难自动化测试程序编写成本高、执行成本高、维护成本高。测试的技术债在业务高速发展的过程中越积越多:一边修复老的用例,另一边出现新的失败用例一边补充自动化,另一边又因为项目的时间压力遗留了未自动化的用例一些可

2022-05-12 00:38:28 9321

原创 【python】datetime模块计算时间差

一、问题背景最近有小伙伴反馈接口平台的测试计划执行耗时显示有误,比如执行实际时长超过10s,但是报告中显示总耗时小于1s显示耗时统计出现问题二、问题排查开始和结束时间是否有误开始时间:2022-04-24 10:51:23.677632结束时间:2022-04-24 10:51:35.713161可见起止的时间获取没有问题计算方式round((end_time-start_time).microseconds/1000000, 2)计算结果0.04s接下来看看为什么这样的计

2022-04-24 12:07:40 10265

原创 【算法】快速排序

快速排序(Quicksort),又称划分交换排序(partition-exchange sort)算法思想采用"分而治之"的思想,把大的拆分为小的,小的拆分为更小的。对于给定的记录,选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列实现逻辑设当前待排序序列为R[low:high],其中low ≤ high,如果待排序的序列规模足够小,则直

2022-03-18 09:12:35 581

原创 【python基础】collections的使用

Python的数据类型有list, tuple, dict, str等,collections是实现特定目标的容器,以提供Python标准内建容器dict , list , set和tuple的替代选择Counter字典的子类,提供了可哈希对象的计数功能OrderedDict字典的子类,保留了他们被添加的顺序defaultdict字典的子类,提供了一个工厂函数,为字典查询提供了默认值namedtuple创建命名元组子类的工厂函数deque类似列表容器,实现了在两端快速添加(append

2022-03-16 08:59:06 916

原创 【python基础】reverse和reversed函数及使用

一、reversereverse()是python中列表的一个内置方法(在字典、字符串和元组中没有这个内置方法),用于列表中数据的反转例子:lista = [1, 2, 3, 4]lista.reverse()print(lista)打印结果:[4, 3, 2, 1]其实,lista.reverse()操作的返回值是一个None,其作用的结果需要通过打印被作用的列表才可以查看出具体的效果二、reversedreserved()是python内置函数之一,其功能是对于给定的序列(包括列

2022-03-12 14:55:58 55519 2

原创 【Java】spring事务的实现方式

一、编程式事务管理编程式事务管理,在代码中调用commit()、rollback()等事务管理相关的方法maven pom.xml文件<dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.4.RELEASE</version></dependency&

2022-03-12 01:00:57 3012 2

原创 【架构】IO多路复用

服务器端编程经常需要构造高性能的IO模型,常见的IO模型有:同步阻塞IO(Blocking IO)传统的IO模型同步非阻塞IO(Non-blocking IO)默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCKIO多路复用(IO Multiplexing)经典的Reactor设计模式,有时也称异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型异步IO(Asynchronous IO)经典的Proactor设计模式,也称为异步非

2022-03-10 00:46:55 252

原创 【架构】RPC框架的原理

一、为什么要有RPC随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,需要一个治理系统确保架构有条不紊的演进单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本此时,用于简化增删改查工作量的数据访问框架(ORM)是关键垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC) 是关键分布

2022-03-08 23:31:56 716

原创 【质量】如何衡量测试用例质量

测试用例的标准不能局限于一个层次,因为测试用例设计类似于软件设计,软件设计有架构设计(结构设计/概要设计)和详细设计,所以对于测试用例的质量标准,也应分为两个层次来考虑:高层次——满足某一个测试目标或测试任务来整体看测试用例,衡量一组测试用例的结构、设计思路和覆盖率等指标低层次——从单个测试用例看,衡量其描述的规范性、可理解性和可维护性等指标一、高层次(high-level)标准高层次标准是从满足某一个特定的测试目标出发来进行定义,分析一组测试用例的设计思路、设计方法和策略,包括测试用例的层次、

2022-03-07 09:13:31 1925

原创 【MySQL】性能分析Explain

一、MySQL性能优化1.1 MySQL Query Optimizer的作用MySQL中有专门负责优化SELECT语句的优化器模块,主要功能:通过计算分析系统中收集到的统计信息,为客户端请求的Query提供他认为最优的执行计划ps:MySQL认为最优的数据检索方式,但不见得是DBA认为是最优当客户端向MySQL请求一条Query命令解析器模块完成请求分类区别出是SELECT时并转发给MySQL Query OptimizerMySQL Query Optimizer的处理过程

2022-03-05 13:16:18 1032

原创 【性能调优】调优的常见思路和方法

在通过工具得到异常指标,初步定位瓶颈点后,如何进一步进行确认和调优?在这里提供一些可实践、可借鉴、可参考的性能调优套路,即:如何在众多异常性能指标中,找出最核心的那一个,进而定位性能瓶颈点,最后进行性能调优以下会按照代码、CPU、内存、网络、磁盘等方向进行组织,针对某一个优化点系统的套路总结,便于思路的迁移实践一、应用代码相关遇到性能问题,首先做的是检查否与业务代码相关——不是通过阅读代码解决问题,而是通过日志或代码,排除掉一些与业务代码相关的低级错误性能优化的最佳位置是应用内部,比如:查看业务

2022-03-04 10:18:17 2474

原创 【性能测试】常见的性能测试指标

从性能测试分析度量的角度,性能指标的维度如下:系统性能指标资源性能指标中间件指标数据库指标稳定性指标可扩展性指标可靠性指标接下来从各自维度常见指标及指标含义看看各个性能测试指标一、系统性能指标系统性能指标,常见的有如下几类:响应时间系统处理能力吞吐量并发用户数错误率1.1 响应时间响应时间,简称RT指系统对请求作出响应的时间,可以理解为用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程耗费的时间直观上看,这个指标与人对软件性能的主观感

2022-03-02 20:28:53 16531 4

原创 【JMeter】JMeter的工作原理

一、JMeter简介JMeter是Apache组织开发的基于Java的开源的压力测试工具、接口测试工具可以模拟高并发和多次循环的测试场景,能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试,具有可移植性二、压测的原理性能测试的核心三原则: 基于协议,多线程,场景模拟基于协议基于应用层和传输层的各种协议,比如http、udp、ftp和tcp等多线程通过进程下启动线程的方式来模拟并发用户实现负载场景模拟通过模拟用户使用的真实场景,来提高性能测试的准确性J

2022-03-02 10:02:45 6889

原创 【性能测试】构造性能测试的数据

关于如何准备性能测试数据,可能出现不少的问题,比如:数据量不足导致性能表现非常好,忽略了一些潜在性能问题数据分布不合理导致测试结果与线上差异较大,又要推到重来总结下经验,把测试数据准备分为两类数据:铺底数据和参数化数据什么是铺底数据?一般情况下,产品上线后数据量是不断增加和累计的过程。刚上线时,数据量较少,数据库查询及更新速度快,服务响应及时性较好。 随着数据量的累积,数据量不断增加和膨胀,系统的操作响应时间会随着数据量的不断增加而变得越来越长。 所以,在性能测试模拟时,要考虑一定规模

2022-03-02 00:52:57 2963

django_demo.zip

django demo项目

2022-01-11

JD-GUI.app.zip

Mac平台上的一款帮助用户进行java反编译的工具

2021-08-07

evermeet.cx.ffmpeg

evermeet.cx.ffmpeg

2021-06-08

furion_grafana_v2.1.json

influxdb_grafana_v2.1

2021-03-10

furion_grafana_v1.0.json

influxdb_grafana_v1.0

2021-03-10

jmeter.backendlistener.kafka-1.0.4.jar

jmeter-backend-listener-kafka

2021-02-06

android-sdk-29.0.2

android-sdk-29.0.2

2020-11-12

jca465.jar

线程快照分析工具

2020-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除