- 博客(28)
- 收藏
- 关注
原创 记录性能问题排查及jvm调优思路
只要业务逻辑代码写正确,处理好业务状态在多线程的并发问题,很少会有调优方面的需求。最多就是在性能监控平台发现某些接口的调用耗时偏高,然后再发现某一SQL或第三方接口执行超时之类的。如果你是负责中间件或IM通讯相关项目开发,或许就需要偏向CPU、磁盘、网络及内存方面的问题排查及调优技能。根据这么多年性能压测积累的经验,归纳提炼了以下几点排查调优思路:CPU过高,怎么排查问题linux内存磁盘IO网络IOjava 应用内存泄漏和频繁 GCjava 线程问题排查常用 jvm 启动参数调优一、服务
2022-05-25 11:11:52
559
原创 效能度量平台
## 一、背景 为了提升研发部各部门或各业务线的研发效率和交付质量,我们开发了效能度量平台。没有度量,就无法高效的管理。## 二、开发度量指标### 需求设计质量我们谈软件质量,不可避免要从它的源头说起,而源头就是需求和设计阶段要做的事情。这个阶段包括原型图、PRD文档、交互设计、技术方案、测试用例等几项重要产出物,当然他们有一定的前后依赖关系。在需求设计阶段,我个人认为比较重要的有如下几点指标:- 需求评审通过率(是否有遗漏、描述不清、存在逻辑漏洞等);- 设计评审通过率(设计是否....
2022-05-22 22:32:40
417
原创 研发效能度量平台
一、背景为了提升研发部各部门或各业务线的研发效率和交付质量,我们开发了效能度量平台。二、开发度量指标度量指标:指标定义:按交付效率和交付质量来分类。平台开发度量样例:以QA部门为例:...
2022-05-16 11:40:20
1262
原创 怎么做性能测试
一、性能测试概述软件性能:系统的性能是个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。性能测试:性能测试主要是通过自动化工具模拟多种正常、峰值以及异常负载条件对系统进行操作,以获得系统各项性能指标的一种测试。即对被测试系统按照一定策略施加压力,获取系统响应时间、TPS、吞吐量、资源利用率等性能指标,以期保证系统的性能。性能测试重要性:随着公司业务发展越来越快,原有的服务体系已不能满足现在的业务需求,渐渐地暴露出了线上性能不足
2022-05-14 15:03:03
4607
原创 MeterSphere重构
MeterSphere重构背景最近公司要做一个测试平台,主要功能涉及了产品,开发和测试三方的业务联动。其实在业界已经有了很多类似的开源平台,例如阿里的云效,腾讯的tapd,还有很多其他的云测试平台。由于涉及到公司的信息安全问题,公司内部希望能够自研一款对内的测试平台,解决产研测一体化的问题。通过对市面上各种竞品调研,最终选定了metersphere这款测试平台进行二次开发。背景:主要原因就是我们人太多了,testrail收费太贵。其次是希望我们有一个平台可以来做我们的测试过程管理。TestRail不
2022-04-07 22:39:11
3133
1
原创 舆情监控系统
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代.
2022-04-07 22:06:45
1815
原创 行情多数据源对比项目
问题:去年我开发了行情多数据源对比项目,线上服务器已经运行1年多了,基本逻辑:实时抓取多个数据源的行情数据,对各个行情指标进行汇总计算,实时多数据源对比和计算逻辑,对比后,把每支股票超过设定的指标偏差的指标数据(offset)数据进行计算/汇总发邮件模块,即把每支股票的offset数据绘制成excel表格和附件,以邮件的方式每天定时给相关人发出去这个项目已经上线运行1年多了,其中每天必看的多数据源对比结果邮件按照股票品类每天都会定时发送出来给相关责任人,可是最近突然接收不到美股的对比邮件了,赶紧
2021-03-06 21:08:06
436
1
原创 grpc测试环境搭建全过程
第一、安装 GolangMAC版安装go环境:1、安装命令:brew install go2、检查:输入brew info go或者go env即可查看当前安装的golang版本信息3、配置go路径环境主要是GOROOT和GOPATHGOROOT:就是go的安装环境GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径。其实说通俗点就是你的go项目工作目录。通常情况下GOPATH包含三个目录:bin、pkg、src。src目录下主要存放go的源文件pkg目录存放编译好的
2021-02-26 01:42:57
927
原创 grpc服务接口测试方案与实现
优势grpc服务集成RESTful Json 和grpc-gateway反向代理来实现对grpc服务的接口测试,省去了自己编写客户端代码的工作。一句话描述:使用grpc-gateway反向代理插件将基于HTTP协议的RESTful JSON API转换为gRPC(即翻译),同时也免去自己去写grpc的客户端。流程图步骤一、编写grpc服务测试工程该工程使用maven进行管理1.安装环境2、创建测试工程1)创建maven工程修改pom.xml文件<?xml version="1
2021-02-26 01:26:25
1441
原创 根据股票symbol区分具体交易所
在股票证券行业待久了,coding的时候经常会遇到这样的需求:自动拉取当天的最新股票市场全量symbol数据,然后对这些全量的股票数据进行处理,首先要先对symbol按交易所进行区分/分类,然后再对区分出来的A股进行细化分类,分类成上交所还是深交所。针对这样常见的需求,我写了一个工具类(写了两个版本,java和python双版本),方便以后工作开发使用,记录下。需求一:根据全量股票数据判断该symbol是哪类股票----A股/港股/美股java python双版本Java版本:public s
2021-02-25 22:06:01
509
2
原创 JVM性能调优
由 张月旭创建, 最后修改于2019-04-12一、调优标准1.Minor GC执行时间不到50ms;2.Minor GC执行不频繁,约10秒一次;3.Full GC执行时间不到1s;4.Full GC执行频率不算频繁,不低于10分钟1次;如果满足以上指标,则一般不需要进行GC调优。二、调优步骤1.监控GC的状态使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC执行时间,觉得是否进行优化。系统崩溃前的一些现象:每次
2021-02-25 11:31:34
154
原创 线上集群压测(PTS)压测
由 张月旭创建一、背景在做性能测试的时候,传统方式都是用并发虚拟用户数来衡量系统的性能(站在客户端视角),一般适用于一些网页站点比如首页、H5 的压测;而 RPS(Requests per second)模式主要是为了方便直接衡量系统的吞吐能力-TPS(Transaction Per Second, 每秒事务数)而设计的(站在服务端视角),按照被压测端需要达到TPS等量设置相应的RPS,应用场景主要是一些动态的接口API,比如登陆、提交订单等等。针对服务器端的性能,以TPS为主来衡量系统的性能,并发用
2021-02-24 14:11:56
2489
原创 gRPC接口性能测试
测试部门提供GHZ工具来辅助实现gRPC接口性能测试;相比较于市面上的其他工具,GHZ的好处是只需要提供proto文件就可以发起测试了,不需要额外编写客户端与压测程序。1,通过http://help.j.snowballfinance.com/jmp_apply/add 申请压测服务器权限:10.10.50.2,原因写gRPC压测需要。2,跳转到目录:/opt/tools/ghz/,进入projects目录,创建自己的压测文件夹目录。3,将压测需要的proto文件或者protoset文件存在压测文件
2021-02-24 14:05:17
1029
原创 RPC接口性能压测
一、项目需求开发文档已明确要压测的接口是rpc接口,并给出了rpc接口和依赖,如下:RPC接口:<dependency> <groupId>com.xueqiu.snowflake</groupId> <artifactId>usercenter-client</artifactId> <version>2.13.5</version></dependency>调用示例:List&
2021-02-24 14:00:28
463
原创 一整套Java线上故障排查技巧
线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查 CPU 方面的问题。CPU 异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁 GC 以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导
2021-02-24 11:17:42
236
原创 解决java.lang.String cannot be cast to java.lang.Integer异常
开发中经常会遇到java.lang.String cannot be cast to java.lang.Integer异常,记录下我怎么解决的。这种异常就是经常会出现类型转换的地方,这里面有些小坑,必须要踩过,撸源码才知道问题原因,哈哈。比如我在Double转String,Integer转String的过程中遇到的坑:Double.parseDouble()和Double.valueOf()方法的区别:parseDouble()方法得到的数据类型不能继续编译,因为这个方法得到的是 double ,
2021-02-24 10:57:57
43608
原创 Docker生成镜像的两种方式
有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像两种方式:1.更新镜像:使用docker commit命令2.构建镜像:使用docker build命令,需要创建Dockerfile文件更新镜像先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用docker commit命令提交为一个新的镜像(以tomcat为例)。1.根据基础镜像,创建容器docker run --name mytomcat -p 80:8080 -d tomcat2
2021-02-24 10:50:01
241
原创 String字符串使用split()方法按特殊符号进行分隔
日常工作中常见的特殊字符,比如:圆括号( :split("[(]")符号:split("\")斜杆():split("\\")按位或符号(|):split("\|").dot:split("\.")如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如"name=Bobandage=19andaddress=Beijing",把key和value都分隔出来,可以用split("=|and")还有的复杂字符串,如果按常规操作,比如按逗号分隔,使用str.split(",")进行分隔,分隔出
2021-02-24 10:46:43
7117
1
原创 java调shell脚本返回值
process2.sh:#!/bin/bashfunction process(){ #echo $1,$2,$3,$4,$5 #if [[ $1 -eq 0 && $2 -eq 0 && $3 -eq 1 && $4 -eq 1 && $5 -eq 1 ]] #then #return 200 #fi if [[ $1 -eq 0 && $2 -eq 0 &
2021-02-24 10:24:40
941
原创 jenkins任务线上接口超时问题
问题:业务部门反映她们那边接口测试超时,如下:期待1000毫秒内响应, 实际响应时间7061毫秒期待1000毫秒内响应, 实际响应时间3053毫秒但是开发排查他们那边的接口响应都不超过1s。排查:代码分支clone下来,检查代码没问题。那为啥会超时呢?代码没问题,那开始排查服务器的CPU ,负载,带宽:CPU情况:带宽情况:从这基本上可以定位是服务器的问题了,都把CPU跑满了。再看jenkins的job执行情况:通过jenkins的job执行情况看,job最大同时执行6个任务
2021-02-24 10:14:17
245
原创 使用jmeter内核源码压测
本质上是脱离了jmeter这个工具,利用的是jmeter的内核源码进行发压。一、Jmeter的简介Jmeter一款开源的压力测试工具,而这款开源的测试工具是基于Java开发。Jmeter最初的设计是为了web的性能测试。而在后面扩展了很多种类的测试。Jmeter是基于Java编写,所以使用时需要安装jdk二、Jmeter负载测试和性能测试种类1.Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)2.SOAP / REST W..
2021-02-24 09:23:41
203
原创 监控体系建设
一、背景去年我们工具组开发了ams线上接口监控报警平台,开发该平台的目的是为了能够让用户没发现问题的时候,通过钉钉报警和可视化的方式让我们内部人员(开发、测试)提前知道哪个接口或哪个服务中的链路出问题了,然后快速处理掉,及时止损,这种守住最后一道防线的方式,目前取得了不错的效果。同时该平台也实现了对线上接口监控指标的可视化展示,分为两类:一类是实时展示的监控指标;一类是展示统计性的监控指标。实时监控指标如图:但是监控数据的可视化方案在需求设计时考虑有些欠缺:1、当时组内因为任务多、时间紧,我们
2021-01-27 17:19:40
709
原创 SpringBoot @Scheduled定时任务执行两次问题
问题描述:项目是使用springboot2开发,打的war包,以docker的形式部署到tomcat运行,我项目有一个@Scheduled 定时器,每天定时处理生产数据,处理完后定时发送邮件,但是遇到的问题是,每次接收邮件会同时连着接到两封相同的邮件,也就是说同一个事件在同一时刻被触发了两次。一开始我以为是网络原因,没有重视,直到昨天我们领导找我说这个项目中的邮件组里面把CTO和新来的技术总监加进去,并反馈了这个问题,他要求这个bug必须要快速解决,而且要尽快修复上线。 原因分析:好吧,既然是b
2021-01-27 10:05:01
5993
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人