- 博客(329)
- 资源 (56)
- 收藏
- 关注
原创 OkHttp3线程池相关之Dispatcher中的ExecutorService
基本使用同步请求:private static final String DESTINATION_ADDRESS = "https://github.com/soulrelay";OkHttpClient client = new OkHttpClient.Builder().build();Request request = new Request.Builder() .url(DESTINATION_ADDRESS) .build();Response r
2021-06-16 10:31:19 8176
原创 lettuce redis SDK监控
前提介绍如果已经使用了redis sdk雪球的SDK组件,已经集成实现了实现原理英文原声文档,简单易懂,而且这种metric模式,是趋势https://github.com/lettuce-io/lettuce-core/wiki/Command-Latency-Metrics代码实现添加监控注意commandLatencyCollector方法 privatevoidbuildRedisClusterClient() { if(r...
2021-06-15 17:55:29 7713
原创 Prometheus个性化语法
基础查询:Graphite--查看CPU使用率aliasByNode(container.message-platform-service.production.*.*.cpu.total, 4)prometheus--查看系统CPU使用率system_cpu_usage{instance="$instance",application="xueqiu-push"}范围查询:目前用不到,不做讲解偏移查询:graphite没有,目前没有找到相应的语...
2021-06-15 17:54:48 5270
原创 threadPool 线程池监控
Redis连接池不够用?这个问题回答见:lettuce 共享连接xueqiu-toolbox-spring提供了spring中Executor类型bean的默认监控:集成监控Executor的线程池参数<!-- 版本从50开始:0.0.50 --><dependency> <groupId>com.xueqiu.infra.toolbox</groupId> <artifactId>xueqiu-toolb.
2021-06-15 17:53:39 5653 1
zookeeper 监控
zookeeper监控指标zk_version 版本zk_avg_latency 平均 响应延迟zk_max_latency 最大 响应延迟zk_min_latency 最小 响应延迟zk_packets_received 收包数zk_packets_sent 发包数zk_num_alive_connections 活跃连接数zk_outstanding_requests 堆积请求数zk_server_state 主从状态zk_znode_count znode 数zk_watch_
2021-06-15 17:52:48 4164
原创 jmc&jcmd
采集jfr数据的脚本使用直接:bash dump_event_jfr.sh 1h后面是时间#!/bin/bash# dump jfr下载到本地# touch dump_event_jfr.sh ; chmod u+x dump_event_jfr.sh ; vim dump_event_jfr.sh# nohup bash dump_event_jfr.sh 1h &recordMinute=10mif [[ -n "$1" ]]; then recordMinute=$1.
2021-06-15 11:12:08 3628
原创 Audacity合成音频的软件
合成音频的软件使用的是Audacity,免费开源,网上教程也多操作简单:项目:https://audacity.onl/源码:https://github.com/audacity/audacity
2021-06-07 10:44:04 3683
原创 集成监控Executor的线程池参数
实现方式采用spring的bean后置装载的接口代码: publicclassExecutorMetricWapperimplementsBeanPostProcessor { @Override publicObject postProcessAfterInitialization(Object bean, String beanName)throwsBeansException { if((beanins...
2021-05-31 13:51:28 4613
原创 6-日志平台-日志流监控
日志采集: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警 ...
2021-05-31 13:43:39 4019
原创 5-日志平台-日志检索
5.日志检索转至元数据结尾由贺矿省创建, 最后修改于2021-05-08转至元数据起始日志采集: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合...
2021-05-31 13:42:08 4015
原创 4-日志平台-日志切分
日志采集: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警 不同的日志落地规则: Java应用日志logStash落ES 之前...
2021-05-17 20:53:12 4285
原创 3-日志平台-日志传输
日志采集: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警 各种规范对应的传输要求: Java应用对应的kafka 之前的ka...
2021-05-17 20:49:58 4085
原创 2-日志平台-日志采集
日志采集: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警 日志目标: Java应用logback+filebeat 之前的f...
2021-05-17 20:48:57 4249
原创 1-日志平台-日志规范
日志规范: 流程 要做的事情 日志规范 固定字段定义 日志格式 日志采集 落盘规则 滚动策略 采集方法 日志传输 消息队列 消费方式 Topic规范 保存时间 日志切分 采样 过滤 自定格式 日志检索 索引分割 分片设置 检索优化 权限设置 保存时间 日志流监控 采集异常 传输异常 检索异常 不合规范 监控报警 日志类型: ES的server log Java应用logback...
2021-05-17 20:46:36 4116
原创 0-日志平台-graylog放弃&ES术语简介
使用的目的:从filebeat采集到kafka的数据,在ELK方案中使用的是logstash落到ES那么在graylog中要实现logstash如下两个重要功能:1.消息体的解析(包含过滤、剔除、提取,转换)2.ES的索引映射,ES作为底层的存储,涉及到日至平台性能,因此这个索引映射和存储要把握住使用的流程:1.input配置,kafka接入extractor提取器:解析json解析message(不好使)2.indices、stream配置,ES索引映射写入.
2021-05-17 20:45:33 4479
原创 0-日志平台调研
形象的解释下监控、链路追踪、日志这三个平台的意义1.日志平台:日志是最能记录案发现场的东西,就好比监控视频、现场人证物证,对各位“警察”分析案发现场至关重要2.监控平台:而metric就好比是“电子交通警察”,记录数据指标信息,能够实时的“抓拍违章信息”并发送告警3.链路追踪:tracing就像是你在排查问题时候的“警犬”,能够顺着气味帮你串联起来多个“作案地点”,找出背后的“真凶”将其绳之於法基于ELK实现https://github.com/ameizi/ELKhttps:.
2021-05-17 20:43:53 4194
原创 关于mysql设置查询超时时间
建议首先DataSource组件使用的是Druid,只做了连接池的封装,没有在ORM和JDBC层面做过多的封装而查询超时时间设置,是在mysql-connector-java底层是通过定时器Timer来实现statement timeout的功能,也就是说,对于设置了statement timeout的sql,将会导致mysql创建定时Timer来执行sql因此对于这查询超时设置,只能够在正常的业务代码中进行配置(但是这个就要做到读写分离,要是写SQL配置了超时,那么server就会出现脏数据需
2021-04-15 11:51:41 10135
原创 redis基础操作基于redis cluster5 client命令
https://blog.csdn.net/houxian1103/article/details/108270768===============RedisCluster5的安装包wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gzcd redis-5.0.3make# 安装到 /usr/local/redis 目录中 安装的文件只有一个bin目录make install.
2021-04-13 17:16:06 4604
原创 Gson反序列化的adapter的cache机制在非单例下引起的性能问题
一、问题现象2021-04-07 18:42发现总体的qps没有任何变化的情况下,包括mysql的qps没有任何增加,接口总体的p99相较于redis版本升级前增加了30~50ms(与预期不符,预期是redis版本切换之后P99无影响)二、排查过程1.排查GCyoung gc也有相应变化,p99在升高时期,young gc的次数变多,由点图换成了线图。但同时对比了早上开盘期间9:30~10:30之间的,也是出现的有yong gc频繁,但是P99没有像redis版本...
2021-04-12 18:22:43 4558
原创 spring redis引入多个StringTemplate bean报错
问题背景:项目里最初有一个RedisTemplate. 然后新增了个集群 我创建连接池和template,结果。旧redis的数据全跑到新集群来了我当时debug了下,发现俩Template里 连接池,连的是一个ip但是。你有一个 配置了 Primary,假如3个集群的话 怎么搞两个【非】primary的 不还是覆盖?解决过程:、测试通过 吃完饭回来一看,得把spring自动注入的那个给注销掉原因:spring里面我这个使用的是lettuce,他的内部类Le.
2021-03-25 15:21:03 4165
原创 默认ForkJoinPool引发的Redis lettuceP99升高
背景:推荐系统升级RedisCluster4的SDK后,与之前的redis2.8的jedis客户端相比性能下降,具体表现在对应接口P99升高问题原因:在项目中使用了parallelStream的并行执行,其和lettuce的异步获取结果的CompletableFuture线程共用了一个ForkJoinPool解决方案:去除对于parallelStream的依赖,使用单独的线程池通过排查堆栈,发现parallelStream产生大量的ForkJoin线程,怀疑其和lettuce的fut
2021-03-25 14:18:41 5107 2
原创 redis cluster master failover问题
背景:在进行主从切换演练的过程中,发现client应用端会在master下线后,slave选举成为主且节点topology拓扑更新完毕的过程中出现报错信息 默认的时间是60s,我这里配置的是300ms io.lettuce.core.RedisCommandTimeoutException: Command timed out after 300 millisecond(s) at io.lettuce.core.ExceptionFactory.createTimeoutExc
2021-02-24 15:49:13 5851
原创 redis cluster topology handshake问题
问题背景:2021-01-29由于55.6物理机可用内存较少,担心内存在高峰期吃紧对社区帖子服务的comment集群进行了节点的迁移(在迁移之前帖子服务redis4的client连接已经构建,只是没有读写流量)1.下线了2个实例 10.10.55.6:26962和10.10.55.6:26966,其中一个是master,另外一个是slave2.上线了2个实例 10.10.164.15:26962和10.10.164.15:26966,对上一步的两个节点进行替换2021-02-20 帖..
2021-02-24 10:21:29 4943
原创 grpc基于envoy治理 java实现 control panel
envoy的部署与架构:见SRE空间:envoyenvoy基础(1.7版本的):PDF业内厂商实现案例:网易轻舟:其中有几个关注点:1.轻舟的这套服务网格技术的研发成员有C++的研发人员2.轻舟的envoy部署模式是sidecar模式(要是按照这种模式部署,对雪球来说步子跨的是不是有些大?)PDF从kong到envoy的演进:https://zhuanlan.zhihu.com/p/242260216?utm_source=wechat_session其中有几..
2021-01-27 19:21:09 4260
原创 Redis 最佳实践 1
JedisPool使用的最佳实践(阿里云上现成的,其实就是对Apache-commons-pool2这个库的理解,网上找的七七八八的都是说的GenericObjectPool的配置导致的一些timeout、QPS、no resource之类的问题)Redis 的性能幻想与残酷现实参数说明Jedis连接就是连接池中JedisPool管理的资源,JedisPool保证资源在一个可控范围内,并且保障线程安全。使用合理的GenericObjectPoolConfig配置能够提升Redis的服务性能,
2021-01-27 19:14:44 3535
转载 Redis为什么变慢了?Redis性能问题排查详述
Redis 作为优秀的内存数据库,其拥有非常高的性能,单个实例的 OPS 能够达到 10W 左右。但也正因此如此,当我们在使用 Redis 时,如果发现操作延迟变大的情况,就会与我们的预期不符。你也许或多或少地,也遇到过以下这些场景: 在 Redis 上执行同样的命令,为什么有时响应很快,有时却很慢? 为什么 Redis 执行 SET、DEL 命令耗时也很久? 为什么我的 Redis 突然慢了一波,之后又恢复正常了? 为什么我的 Redis 稳定运行了很久,突然从某个
2021-01-26 19:33:54 3754
原创 lettuce偶现Connection reset by peer异常排查
问题描述:服务的异常日志中偶现查询超时1min服务异常日志偶现连接断开排查过程:问:这个明显网络超时,按照lettuce的默认超时配置,我这边看完lettuce的配置源码逻辑告诉你另外需要以下几个信息:1.是不是只有这一台服务节点有异常,所有的服务节点都有异常报错吗?2.出现异常时的redis命令和参数,发生时所连接的redis node的ip3.redis服务端监控没有异常(例如:网络,磁盘,慢日志)答:1.目前2个都有出现2.。。。3...
2020-12-24 10:28:07 9633 3
原创 压力测试:JMH基础介绍
网上一堆文章介绍,如下:JMH官方例子Introduction to JMHJava 并发编程笔记:JMH 性能测试框架Java微基准测试框架JMHJMH性能测试框架常数折叠循环展开Using annotation processor in IDE主要关注的参数: 解释 参数解释 解释 参数解释 @Benchm...
2020-12-01 14:30:59 2715
原创 单元测试概述
单元测试与覆盖率摘自网络:覆盖率或测试覆盖率是用来衡量单元测试对功能代码的测试情况,通过统计单元测试中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。覆盖率的前提是存在单元测试,并且从其本意上推导,可被统计覆盖率的单元测试应当是证明了软件正确的,这是一个不能动摇的基础,否则一切就失去意义。单元测试重点在于验证软件正确,而覆盖率重点在于描述测试的充分程度,两者不会等同起来,但在项目和团队中一个普遍的认识是“高覆盖率的代码,其功能的正确性是得到保障的”。一些骚操作:覆盖率在持
2020-12-01 14:29:35 2426
原创 zookeeper单元测试
curator-test:Contains the TestingServer, the TestingCluster and a few other tools useful for testing.深坑:curator竟然不是向下兼容的,https://issues.apache.org/jira/browse/CURATOR-428(使用版本)log4j-over-slf4j竟然也不是向下兼容的,扯犊子呢,而且外文文档也是一通瞎扯[惊恐][惊恐][惊恐]原理:启动
2020-12-01 14:27:16 2654
原创 redis单元测试
embedded-redis:Redis embedded server for Java integration testingredis-unit:Redis instance for unit testing applications.原理:启动java的嵌入式redis,然后获取启动时的随机端口,通过spring-redis的创建工厂映射自己需要的bean(使用雪球RedisCluster4的,redis-sdk里面有单元测试:http://git.snowballfinance.com
2020-12-01 14:26:42 3256
原创 mysql单元测试
embedded-db-junit:JUnit Rule for providing an embedded in-memory database for your testsmysql-connector-mxj:MySQL Connector/MXJ is a Java Utility package for deploying and managing a MySQL database.h2:H2 is an embeddable RDBMS written in Java.使用H2..
2020-12-01 14:26:18 2565
原创 kafka单元测试
kafka-junit:JUnit rule for spinning up a Kafka brokerkafka-junit:This library wraps Kafka's embedded test cluster, allowing you to more easily create and run integration tests using JUnit against a "real" kafka server running within the context of your t
2020-11-25 19:02:18 3180
原创 分布式限速器
限流算法漏桶算法漏桶算法思路很简单,水(也就是请求)先进入到漏桶里,漏桶以一定的速度出水,当水流入速度过大会直接溢出,然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率。 示意图(来源网络)如下:令牌桶算法令牌桶算法和漏桶算法效果一样但方向相反的算法,更加容易理解。随着时间流逝,系统会按恒定1/QPS时间间隔(如果QPS=100,则间隔是10ms)往桶里加入令牌(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了。新请求来临时,会各自拿走一个令牌,如果没有令牌可拿了就阻塞
2020-10-20 14:50:59 2761
原创 TCP握手、time_wait、close_wait等问题详解
目录系统调用 listen() 的 backlog 参数指的是什么P2P 下载加速理论上的加速比是多少呢?TCP 的发送窗口有哪些稳定状态呢?TCP 是端到端的协议,也就是 TCP 对端 Peer 只看到对方,看不到网络上的其他点,那么 TCP 的两端怎么对网络情况做出反映呢?发生拥塞的时候,拥塞控制机制是如何的?TCP 两端 Peer 的处理能力不对等的时候,比如发送方处理能力很强,接收方处理能力很弱,这样发送方是否能够不管接收方死活狂发数据呢?如果不能,流量控制机制的如何的?假如
2020-09-12 00:30:54 2957
原创 redis slow log采集
价值意义1.便于统计分析,以往只能一个节点一个节点看,采集到一起方便分析2.慢日志持久化,类比MySQL,mysql是有日志文件的,而redis是内存队列FIFO3.redis是单线程的slowlog的监控分析很有意义,严重会导致系统雪崩设计概要实现原理slowlog get [len]和slowlog reset。slowlog get [len]命令获取指定长度的慢查询列表。 redis 127.0.0.1:6379> slowlog get 2...
2020-09-10 17:45:34 3197
原创 Linux关于IO部分
成本:程序不能直接访问硬件:网卡、磁盘(内核来访问的)内核提供了:sysctl(软中断、硬中断)strace -ff -o ./xxx java TestSocket:抓取程序对内核有没有系统调用cd /proc/PID:进程的文件描述cd task:看有多少个线程cd fd:文件描述符(0、1、2基本描述输入 输出 错误)netstat -natp 只有服务端只有listen状态nc:可以和任何程序建立连接epoll尽量不浪费CPUsele...
2020-09-08 22:46:46 2819 1
原创 线上redis ttl时间未到缺key却被删除排查录
引言:以下内容直接从我球的docs粘贴:https://xueqiu.com/欢迎简历投递:hekuangsheng@xueqiu.com问题:目前悬赏贴悬赏有效期为5天,余额只存储在redis中,集群为status集群,key:st:offer:balance:{statusId},缓存有效期为6天。当进行分配赏金时,会查询该贴的余额。有问题的悬赏贴,相应的redis key被删除。 分析:首先,大致看了下业务代码和 redis 组件相关的实现,以及 24/25 号的日志,没有
2020-09-07 14:01:41 4392
原创 redis lua执行原理,主从同步,动态变量
[Redis Slowlog]是排查性能问题关键监控指标。它是记录Redis queries运行时间超时特定阀值的系统。这类慢查询命令被保存到Redis服务器的一个定长队列,最多保存slowlog-max-len(默认128)个慢查询命令。当慢查询命令达到128个时,新产生的慢查询被加入前,会从队列中删除最旧的慢查询命令。执行原理创建并修改Lua环境1 创建基础Lua环境 2 载入函数库 3 创建全局表格Lua 4 替换随机函数 5 创建排序辅助函数 6 创建redis.pcall
2020-09-07 13:40:17 4575 5
redis-desktop-manager-0.8.3-2550.dmg
2018-12-25
head+first+servlets jsp
2018-07-31
深入理解Java虚拟机[JVM高级特性与最佳实践](周志明)
2018-07-31
从PAXOS到ZOOKEEPER分布式一致性原理与实践
2018-07-31
mac的网络传输分析工具
2018-07-06
mac数据恢复
2018-07-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人