- 博客(65)
- 收藏
- 关注
原创 系统崩溃原因分析及排查思路
内存溢出:新建的对象太多,且没有得到及时的释放。java语言里是有内存自动释放的机制,但这并不意味着开发人员在设计代码时不需要考虑释放内存,因为一来自动释放不会那么及时,二来开发人员也需要预先考虑一些场景。1、前端渲染组件太多引起的奔溃,这种一般是内存溢出,但也不排除有极小部分是CPU繁忙(如果前端存在复杂的计算逻辑)问题排查:查看日志,结合一些工具,有的工具可以定位到具体是哪个线程耗用资源最多。2、后端引起的奔溃:计算逻辑复杂,耗用CPU过多造成CPU繁忙;也可能占用内存太多,造成内存溢出。
2025-02-06 13:57:48
199
转载 使用locust做性能测试
locust -f <Python文件> --slave --master-host=<主节点的IP> --clients 50。–master-bind-host:master绑定的接口(主机名、ip)(默认:*(所有可用接口))–expect-workers-max-wait:主节点等待备节点的时间(默认:永远等待)90%ile (ms):90% 的响应时间(有 90% 的请求的响应时间小于或等于该值)99%ile (ms):99% 的响应时间(有 99% 的请求的响应时间小于或等于该值)
2025-01-15 17:05:37
103
原创 prometheus+mysql_exporter监控mysql
1.修改 vim prometheus.yml 配置文件 并重启服务prometheus。注意:user和password可以使用mysql的登录用户名和密码也可以自己定义。把/etc/my.cnf中的skip-grant-tables注释再重启服务。prometheus+mysql_exporter监控mysql。4.在root目录下新建文件:.my.cnf。三.集成Grafana+prometheus。二.安装mysqld_exporter。5.进行.my.cnf文件配置。5.查看服务是否启动:s。
2024-02-19 22:13:57
619
1
原创 Redis & RabbitMQ
它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
2024-02-19 22:05:40
654
原创 网络基础:通信原理及网络协议
在OSI模型中,冲突域被看作是第一层的概念,连接同一冲突域的设备有Hub,Reperter或者其他进行简单复制信号的设备。而第二层设备(网桥,交换机)第三层设备(路由器)都可以划分冲突域的,当然也可以连接不同的冲突域。由于许多设备都极易产生广播,所以如果不维护,就会消耗大量的带宽,降低网络的效率。由于广播域被认为是OSI中的第二层概念,所以像Hub,交换机等第一,第二层设备连接的节点被认为都是在同一个广播域。1、概念不同:广播域指的是所有接收广播信息的节点,冲突域指的是同一物理段中的节点。
2024-02-19 22:04:01
740
原创 webdriver.Remote&grid
2.在selenium官网下载Grid的jar包,根据官网的document(https://www.selenium.dev/documentation/grid/getting_started/)启动hub和node。b.启动jar包作为node,我这里是使用同一台机器既做hub,又做node,因此在terminal中打开两个标签页对此jar包分别以hub和node的方式启动即可。a.启动jar包作为hub,默认使用4444端口,浏览器中访问。在其他主机上运行webdriver,可用于分布式执行环境。
2024-02-19 21:45:57
469
原创 配置Python环境及job运行的虚拟环境
build job的时候会自动在/opt/jenkins(node主机的工作目录,在配置node时设置)下创建workspace目录,并创建以job名称为名字的子目录(如果没有做自定义配置的话)。从github上fetch的代码就会下载到/opt/jenkins/workspace/jobname中。1、配置Jenkins的Python环境:Manage Jnekins-Global Tool Configuration-Python。此插件会给每个job都创建一个虚拟Python环境。
2024-02-19 21:41:46
421
原创 忘记管理员密码
2、删除后,重启Jenkins,就可以无需登录而直接进入Jenkins。3、在用户管理中,可以看到admin用户,进入设置页面,重新设置密码。4、在全局安全配置中,重新配置安全策略。这一步的目的是为了删除用户安全策略。
2024-02-19 21:38:21
227
原创 163邮箱发邮件
如果build job后,显示发送邮件成功,但邮箱里就是没有收到,那么就是Extended Email Notification-Advanced中没有配置smpt username和password,这里使用的是添加凭据的方式配置。若提示权限问题,要么是密码没有填授权码(必须是授权码,而不是邮箱的登录密码),要么是Jenkins location中的邮箱管理员与Extended Email Notification中的发件邮箱不一致。我已经配置过了,所以这里会有一个使用设备。开启POP3/SMTP。
2024-02-19 21:36:48
825
原创 创建job
因为我配置的Credentials是ssh登录的方式,所以URL也要选择ssh方式的:git@gitlab.xxxx.com.cn:xx/xx/xx.git。
2024-02-19 21:30:00
147
原创 3、安装插件
安装后,会在 系统管理-全局系统工具 中出现 Python,在这里可以设置使用的Python路径,或者自动在该路径下安装Python。使用此插件可以将在console中出现的password加密,以防止密码泄露。支持从其他的Jenkins上远程导入job。用于构建后生成HTML报告。在job构建后发送邮件。
2024-02-19 21:24:40
405
1
原创 2、docker安装Jenkins
猜测是将/var/jenkins_home的工作目录挂载到本机/home/jenkins上后,便不再容器的工作目录中写入数据,而是直接在本机挂载目录上工作。3、解锁Jenkins时,/var/jenkins_home/secrets/initialAdminPassword不存在,排查后发现,不存在/var/jenkins_home目录。1、先下载jenkins镜像https://hub.docker.com/r/jenkins/jenkins/tags,选择lts的jenkins最新版本。
2024-02-19 21:23:45
635
原创 1、安装docker
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的后8个字符,验证您现在是否拥有带有指纹的密钥。要安装特定版本的 Docker Engine-Community,请在仓库中列出可用版本,然后选择一种安装。使用第二列中的版本字符串安装特定版本,例如 5:18.09.1。安装 Docker Engine-Community。使用以下指令设置稳定版仓库。更新 apt 包索引。
2024-02-19 21:20:39
631
原创 Jenkins配置node节点
这是在node配置的“Advanced”里设置Java路径错误,一定要设置到java级别:/usr/lib/jvm/java-8-openjdk-amd64/bin/java。1、配置ssh后无法连接到node,但是在master中使用root账户以ssh方式连接node成功。已经配置了公钥和私钥,但没有点开node配置中的“Advanced”去配置Java目录。回到node配置,选择刚才配置的凭据:root(connect to slave)2、配置node主机的java环境。
2024-02-19 21:14:55
1617
转载 通过冗余字段、中间表提升数据库查询性能
在这种情况下,可以在表中添加一个冗余字段来存储已经计算好的聚合结果或计算结果,以便查询时直接使用该字段的值,避免重新计算。在这种情况下,可以在订单表中添加冗余字段,将商品名称和单价存储在订单表中,以便每次查询时直接使用冗余字段的值,提高查询性能。在不使用冗余字段的情况下,需要在查询订单的时候,对该订单包含的所有商品进行遍历,累加总件数和总价格。这样,当查询订单时,就可以直接从 order 表中读取 total_quantity 和 total_price 字段的值,而无需再计算,从而提升了查询性能。
2024-02-05 14:42:58
336
原创 离线环境怎么下载python依赖包
注意,这里是将./script 里的python模块自动扫描并写入到requirements.txt中。2、根据requirements.txt文件的记录信息下载这些模块到packages文件夹中。4、依据requirements.txt中记录的信息从packages文件夹中查找并安装模块。以上的离线安装方式强烈不推荐!耗时久,并且依赖包的先后顺序无法控制,只能人为去查。注意:有些依赖包是有先后顺序的,比如moudleA安装后才能安装moduleB。也可以跟上具体的版本信息,以“==”连接。
2024-02-05 14:20:47
1730
原创 jdk目录里无jre,如何自动添加
jre使用于一般用户需要运行java环境,但如果涉及到开发调试,jre功能可能不能满足,因此需要使用功能更全面的jdk。在新版本的jdk里,已经不默认安装jre了,用户若有需要,需要自己配置。
2024-02-05 13:15:01
1163
原创 python二维数组创建赋值问题:更改单个值却更改了所有项的值
原因:python的二位数据创建方式就是这样,官方文档中有描述What has happened is that [[]] is a one-element list containing an empty list,运行结果:每次赋值都更改了所有项。
2023-12-06 16:12:49
797
原创 接口偶然返回404
2.服务器部署到两台机器上A, B,我们称其为两个节点。负载均衡策略可能是ABAB轮换处理,这个时候如果A挂掉了,那么请求打到A的时候,就会404,但再次请求,又打到了B,就能正常返回。开发B调用接口的时候,Ngix就从nacos上去找,因此开发B就可能把请求发到了开发A的本机服务。(但一般不会这样,因为命名空间不同)开发A调试的时候会在本地启动一个服务,然后把本地的服务注册到nacos上。
2023-11-30 16:04:21
682
原创 Redis
Redis(非关系型数据库) is a database in memory, so it’s fast to write and read.
2022-09-06 17:29:18
352
原创 jwt_token及session及对称加密和非对称加密
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。起源说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。
2022-09-06 17:21:52
836
原创 Python直接赋值&深浅拷贝
在写接口自动化的时候,在setup_class里初始化了一个dic1,在test case1里将dic1赋值给dic2,随后对dic2进行修改。然后在test case2里使用dic1时,发现dic1也被修改了,一番查找之下才发现是自己没有搞清楚直接赋值和深浅拷贝的原理。因此,直接赋值后的变量指向同一个子对象地址,无论是原变量还是赋值变量改变其值后,两个变量的值均改变;浅拷贝后,原对象的修改会对拷贝后对象生效,但拷贝后对象不对原对象生效;深拷贝则是两个完全独立的变量,两者互不影响。
2022-09-06 17:13:34
249
原创 python常用修饰器
1. @staticmethod不需要实例化即可使用class的属性,方法#!/usr/bin/python# -*- coding: UTF-8 -*- class A(object): bar = 1 def func1(self): print ('foo') @classmethod def func2(cls): print ('func2') print (cls.bar) cls()
2022-09-06 16:56:20
977
转载 Linux目录结构
一、查看文件和目录:1---查看当前所在的路径:pwd /root:表示是在根目录下的root目录里面(“/”表示根目录)2---命令格式:命令 -选项 -参数(目录)3---查看当前路径下的文件:ls -d:只看当前目录的信息 -l:看详细信息 -a:显示所有 任何一个文件前面加上“.”,表示隐藏文件。 -h:显示文件大小二、路径的切换1、路径的切换:cd cd -:返回之前的目录
2022-04-06 09:58:12
208
原创 factory-boy工厂模式
Factories declare a set of attributes used to instantiate a Python object. The class of the object must be defined in the model field of a class Meta attribute.官方文档地址: https://factoryboy.readthedocs.io/en/stable/
2022-03-23 18:21:43
327
原创 Chrome安装证书后,fiddler打开后,网页无法访问
问题:从fiddler中导出证书,并导入Chrome中后,在fiddler打开的情况下,Chrome网页无法访问解决办法:Tools-option-HTTPS中,点击Actions中的 Trust Root Certificate
2021-11-11 14:34:40
474
转载 request body json格式错误_Python requests.post方法中data与json参数区别
引用地址:Python requests.post方法中data与json参数区别www.cnblogs.com在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。data与json既可以是str类型,也可以是dict类型。区别:1、不管json是str还是dict,如果不指定headers中的content-type,默认为application/json2、data为dict时,如果不指定content-type,默认为applica
2021-10-28 11:20:44
949
原创 Jmter实战(一)结合函数助手、csv、beanshell解决参数传递问题
1、使用函数助手传参含有变量或函数的表达式,使用__enval比如在测试计划下面定义了一个名为data的变量,data里面又含有其他变量;随后需要在子线程组下的接口中调用,就可以使用KaTeX parse error: Expected group after '_' at position 2: {_̲_eval({data})}。1.22、使用csv文件提取参数三、...
2021-10-23 14:32:29
499
原创 python requests处理post的三种参数格式
HTTP post请求中,body有三种数据格式,处理方式如下:1、application/jsonimport requests,json url = 'http://www.test.com/login'data = {'user':'Tom','password':'123456'}jsondata=json.dumps(data)r =requests.post(url,jsondata)print(r)print(r.text)print(r.content)2、appli
2021-10-23 14:14:42
5164
原创 HTTP协议详解
1、概述1.1 Http协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。它是一个无状态的协议,即客户端第二次向服务器访问同一个资源时,服务器无法识别出这是第几次访问。这样的好处是简化了服务器的设计,使其能够更好地支持大并发量的http访问。1.2 Http协议通信过程OSI七层模型和TCP/IP五层模型:Http分层解析:(1)客户端通过浏览器输入域
2021-10-23 13:54:20
1221
原创 linux下常用命令
查找find /home/centos8 -name test在指定目录下查找名为test的文件whereis qq只能查找应用程序查看系统架构、内存、进程ps -aux | grep bash会显示所有的进程信息,以及标记含有bash的进程free 查看物理内存和交换内存vmstat 内存相关端口netstate -tunlp查看所有端口占用情况netstate -tunlp grep|8080查看8080端口的占用情况文件编辑vim filename 编辑.
2021-10-13 15:33:03
243
原创 Pytest中多个class设置全局属性时的时间顺序
问题描述我在testcase文件夹下分别建立了test_1.py test_2.py test_3.py三个case,每个case中定义一个Test类,在类的全局属性里定义name=‘xxxx’+时间戳。时间戳自动获取。按照pytest的运行规则,会依次执行test_1.py test_2.py test_3.py三个case,按照我的理解,我三个Test类里的name属性中拼接的时间戳应该是不一样的,但执行结果发现,三个case中的时间戳完全一致。原因pytest的运行规则,是遍历文件夹下所
2021-09-30 15:13:27
347
原创 selenium点击lebel标签报错element click intercepted
我的元素标签是/html/body/div[1]/section/section/section/main/div/div[1]/div/div[1]/div/div[1]/label/span排查后,确定该元素可见且唯一,也使用了js的方法来执行:driver.execute_script(“arguments[0].click();”, ele)仍然报错于是根据错误信息,判断该元素的点击事件是被其他元素拦截,一般来说都是被该元素上方的某个元素遮挡了。我从前端来看,该按钮没有遮挡,/span上只
2021-09-27 11:35:04
721
原创 git查看本地和远程分支及关联情况
git branch 查看本地分支,前面有“*”号的代表当前分支git branch -vv 查看本地分支和远程分支关联情况git branch -a查看本地和远程所有分支git remote 查看远程仓库origin仓库下有dev和master两个分支...
2021-09-27 11:01:17
14976
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人