【JAVA实战】记一次线上性能问题定位实战
0X00-问题现象:进入XX系统资源页面,XX管理页签数据无法显示,F12查看后端请求报错。
0X01-定位过程:1、F12查看后端请求报错
2、根据报错信息,判断XX服务可能存在问题,查看XX服务日志使用 jstat -gcutil -pid 1000 20 每一秒打印一次gc信息,打印20次查看结果。发现FGC在频繁发生,差不多每5秒发生一次。FGC发生次数达到了3571次(运行8小时)
3、通过导出dump使用MAT工具进行分析使用如下命令导出对应服务的dump文件
123sudo docker exec -it `sudo docker ps | grep xx | awk '{print $1}'` /bin/bash -c "jmap -dump:format=b,file=xx.dump 6"sudo docker cp `sudo docker ps | grep xx | awk '{print $1}'`:/opt/project/galaxy_device.dum ...
【Python】selenium自动化初探
需求媳妇最近需要参加普通话考试,由于她是社会考生,很难报上名。(武汉市上一次举行社会考生参加普通话考试还是去年的12月份)基于此,媳妇想让我帮她写一个程序,监控普通话考试的报名信息。那我的python就大有用处了!
过程既然要监控普通话考试的报名信息,肯定有一个目标网站。找来找去找到华中师范大学的普通话测试通知网页https://www.ccnu.edu.cn/shfw/pthcs.htm 以及湖北普通话水平测试在线报名系统http://hubeibm.cltt.org/pscweb/signUp.html。华师的网页是一个静态页面,比较好处理,使用python的lxml库将文本解析为html,使用xpath即可解析需要的数据。初步对湖北普通话报名系统使用xpath解析时得到数据很明显无法使用(怀疑使用了反爬技术),退而求其次,咱可以使用python+selenium对网页进行截图,然后将图片进行压缩转成base64,发送到微信企业号,就可以进行监控报名系统了,大功告成!
开发环境通过前面的分析,本次需求的实现需要用到的第三方库,依次使用pip install 安装如下依赖
12345 ...
【SpringBoot】SpringBoot集成websocket
SpringBoot集成websocket本次以代码实战的方式介绍SpringBoot集成websocket
HandshakeInterceptor12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455/** * websocket握手拦截器 * @author zhouheng * @date 2021-04-20 18:17 */@Slf4j@Componentpublic class XXXHandshakeInterceptor implements HandshakeInterceptor { @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse serverHttpResponse, WebSocketHandler webSocketHandler, Map<String, Object ...
【Python】pipreqs使用报错问题
问题:在使用 pipreqs 生成 Python 项目依赖文件 requirements.txt 时,在项目根目录输入命令 pipreqs . 时,出现错误UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xae in position 812: illegal multibyte sequence
解决:使用命令 pipreqs . --encoding=utf8
【Elasticsearch】建模初探
一、ES中的数据建模ES是基于Lucence以倒排索引为基础的存储体系,不遵循关系型数据库中的范式约定。
二、Mapping字段相关设置回顾
enabled 仅存储,不做搜索或聚合分析
true
false
index 是否构建倒排索引
true
false
index_options 存储倒排索引的哪些信息
docs 只有文档编号被索引。能够回答的问题只有此 term(词条)是否存在于此字段
freqs 文档编号和 term(词条)的频率会被索引。term(词条)频率用于给搜索评分,重复出现的 term(词条)评分将高于单个出现的 term(词条)。
positions 文档编号、term frequencies(词条频率)和 term(词条)位置(或顺序)将被索引。Position被用于 proximity queries (邻近查询)和 phrase queries(短语查询)。
offsets 文档编号、term(词条)频率,位置,起始和结尾字符偏移量(用于映射该 term (词条)到原始字符串)将被索引。Offset用于postings highlighter。 ...
【Elasticsearch】热温冷架构初探
1、什么是热温冷架构? 通俗解读:热节点存放用户最关心的热数据;温节点或者冷节点存放用户不太关心或者关心优先级低的暖数据或者冷数据。
对于日志或指标(metric)类时序性强的ES索引,因为数据量大,并且写入和查询大多都是近期时间内的数据。我们可以采用hot-warm-cold架构将索引数据切分成hot/warm/cold的索引。
如下是最简单的热温冷架构部署图,HOT,WARM,COLD是节点属性,HOT节点负责最新数据的读写,可使用内存或者SSD进行存储;WARM负责较旧的数据读取,可以使用SSD或者HDD进行存储;COLD节点负责最旧的数据读取(很少被读取),可以采用HDD存储。
2、实战冷热架构索引生命周期管理 (ILM) 是在 Elasticsearch 6.6(公测版)首次引入并在 6.7 版正式推出的一项功能。ILM 是 Elasticsearch 的一部分,主要用来管理索引。http://10.122.100.146:5601/app/kibana#/management?_g=()
2.1 以docker-compose方式部署el ...
【设计模式】装饰器模式
1、定义在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案,属于结构型设计模式。
2、身边例子(反例写法)山东煎饼果子例子、装修例子、促销打折例子
123456789101112131415package top.zhhades.design.decorator.v1; import lombok.ToString; import lombok.extern.slf4j.Slf4j; /** * @author zhhades */ @Slf4j public class Pancake { public String makeBy() { return "面粉"; } public int cost() { return 5; } }
123456789101112131415package top.zhhades.design.decorator.v1; import lombo ...
【Elasticsearch】分页查询实现方案
1. from+size 实现分页from表示从第几行开始,size表示查询多少条文档。from默认为0,size默认为10,注意:size的大小不能超过index.max_result_window这个参数的设置,默认为10,000。如果搜索size大于10000,需要设置index.max_result_window参数
123456PUT _settings{ "index": { "max_result_window": "10000000" }}
内部执行原理:示例:有三个节点node1、node2、node3,每个节点上有2个shard分片
node1
node2
node3
shard1
shard3
shard5
shard2
shard4
shard6
123451.client发送分页查询请求到node1(coordinating node)上,node1建立一个大小为from+size的优先级队列来 ...
【Elasticsearch】DSL语句介绍
1.Lucene评分影响因子
文档权重(document boost):索引期赋予某个文档的权重值
字段权重(field boost):查询期赋予某个字段的权重值
协调因子(coord):基于文档中词项个数的协调因子,一个文档命中了查询中的词项越多,得分越高
逆文档频率(inverse document frequency):一个基于词项的因子,告诉评分公式该词项有多么罕见。逆文档频率越高,词项就越罕见。评分公式利用该因子,为包含罕见词项的文档加权
长度范数(length norm):每字段的基于词项个数的归一化因子(在索引期被计算并存储在索引中)。一个字段包含的词项数越多,该因子的权重越低。这表示lucene评分公式更“喜欢”包含更少词项的字段
词频(Term frequency):一个基于词项的因子,用来表示一个词项在某个文档中出现了多少次。词频越高,得分越高
查询范数(Query norm):一个基于查询的归一化因子,等于查询中词项的权重平方和。查询范数使不同查询的得分能互相比较
2.Elasticsearch默认评分公式 Elasticsearch 5.0版本以前默认评分公式 ...
【工具】Ngrok服务器搭建
Ngrok是什么 ngrok是一个内网穿透的解决方案:它使得你本地的服务器可以被局域网外的公网访问到,ngork有服务端和客户端,服务端运行在公网服务器,客户端运行在本地服务器
Ngrok服务器搭建必备条件
具有公网IP的服务器
可进行解析配置的域名
搭建步骤本文基于CentOS7的环境进行搭建,Ubuntu环境类似,本文不再赘述1. 安装git和go以及其它依赖1yum install gcc mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 -y
2. 下载源码1git clone https://github.com/inconshreveable/ngrok.git
3. 生成证书12345678cd ngrok#将xxxx.xxxx修改为你自己的域名export NGROK_DOMAIN="xxxx.xxxx" openssl genrsa -out rootCA.key 2048openssl req -x509 - ...