- 博客(1357)
- 资源 (120)
- 收藏
- 关注
原创 Gin获取Response Body引发的OOM
同时根据请求的Header跳过SSE及Websocket请求,因为这两类流的请求记录到审计日志中意义不大,而且在json序列化的时候也会有问题。再看下代码,可以看到这个代码的逻辑是每一个请求都会将响应的Body完整的缓存在内存一份,对于响应体很大的请求,在这里就会造成内存暴涨,比如:像日志下载。我们在开发中基于Gin开发了一个Api网关,但上线后发现内存会在短时间内暴涨,然后被OOM kill掉。在图二中可以看到内存的增长是很快的,在一分半的时间内,内存增长了近2G。* 后来参考Echo,补上了这个功能。
2023-02-25 04:56:36 823
原创 身份的焦虑笔记
title: 身份的焦虑笔记本文整理自:《身份的焦虑》作者:【英】阿兰·德波顿生活就是用一种焦虑代替另一种焦虑,用一种欲望代替另一种欲望的过程。more我们身上那些更加隐秘的侧面——诸如我们的困惑、我们的愠怒,我们的罪恶感——有时竟然在某一书页上跟我们撞个正着,一种自我认同感于是油然而生。
2023-02-18 02:14:16 2054
转载 Git规范的必要性
分支管理代码提交在应该提交的分支随时可以切换到线上稳定版本代码多个版本的开发工作同时进行记录的可读性所有commit必须有注释,内容必须按照注释格式严格执行!正确为每个项目设置Git提交用到的user.name和user.email信息,以公司邮箱为准,不可随意设置以影响无法正确识别。查看当前项目配置信息的命令:git config -l版本号(tag)版本号(tag)命名规则主版本号.次版本号....
2023-02-12 09:26:52 243
转载 十一(1)
下午我妈要去赶小市(就是去村里晚上卖菜啥的地方买点菜),我背有点不太舒服,就让她帮忙带盒膏药,然后,我妈兴高采烈的回来了,带了个这????说大夫说了,这个比膏药好用多了(关键我也不是跌打损伤啊????)然后,顺便买了点嘎啦,竟然10块钱一斤,这就是10块钱的,感觉一个好几毛钱(农村的物价不一定比城里便宜啊)...
2022-10-01 20:01:53 344
原创 ES Cluster in Red status: what about write & delete operations?
ES Cluster in Red status: what about write & delete operations?
2022-07-22 14:40:05 389
原创 Golang写时复制是否是原子性的?
验证代码:汇编代码:下面主要看下21行对应的汇编:基础知识补充:MOVQmovb(8位)、movw(16位)、movl(32位)、movq(64位)寄存器寻址:https://blog.csdn.net/luoyhang003/article/details/46786591/TEST指令的行为与AND指令一样,除了不改变目的寄存器的值。例如,testq %rax, %rax 用来检查 %rax 是负数、零、还是正数。https://stackoverflow.com/questions/1
2022-07-07 21:45:00 1117
原创 《剑来》语句摘录(七)
第935章想人的时候喝酒,想事的时候喝茶。第949章姜尚真懒洋洋道:“帮人夜中打灯笼,帮人雨中撑伞,到头来只被嫌弃灯火不亮堂,埋怨雨水湿了鞋。”崔东山双手笼袖,“你得这么想,没有这些人心,强者何必奋起?”人生路上,真正的过失,错过和失去的,不是什么擦肩而过的机缘,不是失之交臂的贵人,而是那些原本有机会改正的错误。然后错过就失去。第950章今儿吃得下,穿得暖睡得着,明...
2022-07-04 21:00:11 2787 2
原创 使用 nsenter 进入 netns 抓包
我们使用 Kubernetes 时难免发生一些网络问题,往往需要进入容器的网络命名空间 (netns) 中,进行一些网络调试来定位问题,本文介绍如何进入容器的 netns。使用 kubectl 获取 pod 中任意 cotnainer 的 id:输出示例片段1 (containerd运行时):输出示例片段2 (dockerd运行时):获取 PID拿到 container id 后,我们登录到 pod 所在节点上去获取其主进程 pid。containerd 运行时使用 crictl 命令获取:do
2022-06-08 18:19:11 1045 1
原创 Nginx 代理MySQL
docker-compose.ymlversion: '2.0'services: nginx: restart: always image: nginx:1.13.9-alpine ports: - 63307:63306 volumes: - ./nginx.conf:/etc/nginx/nginx.confnginx配置文件user nginx;worker_processes 1;error_log /var/lo
2022-04-28 17:49:59 8597
原创 MySQL 可重复读隔离级别与幻读
在MySQL可重复读的隔离级别下,能很大程度上避免幻读,而不能完全避免。场景复现环境信息:MySQL版本:5.7.23-log隔离级别:REPEATABLE-READ测试数据:SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for app_record_lock_test-- ----------------------------DR.
2022-03-16 17:40:25 2645
原创 【Elasticsearch源码】 更新性能分析
带着疑问学源码,第三篇:Elasticsearch 更新性能代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+目的在看源码之前先梳理一下,自己对于更新疑惑的点:为什么Elasticsearch更新与写入的性能会有比较大的差异?源码分析建议先看一下:【Elasticsearch源码】 写入分析在【Elasticsearch源码】 写入分析中可以看到bulk请求最终在TransportShardB.
2022-03-16 17:25:01 2746
原创 计算机存储单位换算
bit、byte、KB、MB、GB常见的单位换算如下:1 byte = 8 bit1 KB = 210 byte = 1024 byte ≈ 103 byte1 MB = 220 byte ≈ 10 6 byte1 GB = 230 byte ≈ 10 9 byte1 亿 = 1081 个整数占 4 byte,1 亿个整数占 4*108 byte ≈ 400 MB。...
2022-03-16 17:24:14 4572
原创 时间的量级
本文整理自:《性能之巅》作者:【美】 Brendan Gregg英文版出版时间:2014年我们可以用数字来作为时间的比较方法,同时可以用时间的长短经验来判断延时的源头。系统各组件的操作所处的时间量级差别巨大,大到了难以体会的地步。表2.2提供的延时示例,从访问3.3GHz的CPU寄存器的延时开始,阐释了我们所打交道的时间量级的差别,表中是发生单次操作的时间均值,等比放大成为想象的系统,一次寄存器访问0.3ns(十亿分之一秒的三分之一)相当于现实生活中的1秒。表2.2 系统的各种延时事件
2022-03-16 17:23:15 1869
原创 [转]7.7 版本中的新改进:显著降低 Elasticsearch 堆内存使用量
原文地址:https://www.elastic.co/cn/blog/significantly-decrease-your-elasticsearch-heap-memory-usage由于 Elasticsearch 用户不断突破在 Elasticsearch 节点上存储的数据量的极限,所以他们有时会在耗尽磁盘空间之前就将堆内存用完了。对于这些用户来说,这个问题难免让他们沮丧,因为每个节点拟合尽可能多的数据通常是降低成本的重要手段。但为什么 Elasticsearch 需要堆内存来存储数据.
2022-03-16 17:22:05 1074
原创 Sentry 高可用部署
Sentry 高可用部署,部署分析基于Sentry 10.1.0.dev 05e720a7对应dockerhub镜像版本分别为:getsentry/snuba:31c967e774759c0548652d986645fdff844e0a39getsentry/sentry:8549f2a492c803bab77af26e7417272975b9369agetsentry/symbolicator:94cdbb7b543ebe53744144305db21a56b6a0d5a8Sentry官方.
2022-03-16 17:21:31 4282 8
原创 [译]ElasticSearch中如何处理关联数据?
Inner Object、Nested、Parent/Child、Denormalization现实世界中的数据很少是简单的–通常情况下,数据之间有着错综复杂的联系。你如何在 Elasticsearch 中表示关系数据? 有几种机制可用于提供关系支持。 每个都有其优点和缺点,使它们适用于不同的情况。Inner Objects最简单的机制被命名为“内部对象”。 它们是嵌入在父文档中的JSON对象:{ "name": "Zach", "car": { "make":
2022-03-16 17:19:20 1821
原创 Kubernetes中Java应用Heap Dump
Dump Java Heap to OSS伴随着微服务及容器化的发展,越来越多的应用运行在kubernetes集群中,运维、调试的问题也随之而来。以Java为例,当线上环境出现内存问题,比如OOM,这时候需要Dump内存进行分析的时候,就会发现对于普通开发人员来说他们没有操作kubernetes集群机器的权限,从而导致,Dump出来的文件无法回传到开发手中进行MAT之类的分析。本文的解决办法是这样的,当用户需要Dump某个应用实例的时候,只需要在实例终端界面点击一下按钮,后台会自动Dump Hea.
2022-03-16 17:15:28 2219
原创 Elasticsearch 集群内应该设置多少个分片(shard)?
我应该设置多少个分片?我应该设置多大的分片?Elasticsearch 是一个功能十分丰富的平台,支持各种用例,能够在数据整理和复制战略方面提供很大的灵活性。然而这一灵活性有时也会带来困扰,让您在前期难以确定如何最好地将数据整理为索引和分片,如果您刚上手使用 Elastic Stack,这一点可能更明显。如果未能做出最佳选择,尽管这在开始的时候可能不会造成问题,但随着数据量越来越大,便有可能会引发性能问题。集群中的数据越多,要纠正这一问题就越难,这是因为有时必须对大量数据进行重新索引。据我们了解,当
2022-03-16 17:13:27 3776
原创 encrypted communication elasticsearch java rest client
ElasticSearch 7.3.1Java Rest Client HTTPS连接操作ElasticSearch版本7.3.1,elasticsearch.yml配置如下:xpack.security.enabled: truexpack.security.transport.ssl.enabled: truexpack.security.transport.ssl.verification_mode: certificatexpack.security.transport.ssl.k.
2022-03-16 17:11:40 1802
原创 【Elasticsearch源码】 写入分析
带着疑问学源码,第一篇:Elasticsearch写入代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+目的在看源码之前先梳理一下,自己对于写入流程疑惑的点:Elasticsearch写入是等待所有副本都写入完成了才返回还是只要主副本写入了就返回?副本写入成功的标准是什么?wait_for_active_shard参数的作用是啥?源码分析第二部分是代码分析的过程,不想看的朋友可以跳过直接看第.
2022-03-16 17:10:45 2432
原创 【Elasticsearch源码】 检索分析
带着疑问学源码,第二篇:Elasticsearch 搜索代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+目的在看源码之前先梳理一下,自己对于检索流程疑惑的点:当索引是按照日期拆分之后,在使用-* 检索,会不会通过索引层面的时间配置直接跳过无关索引?使用*会对性能造成多大的影响?源码分析第二部分是代码分析的过程,不想看的朋友可以跳过直接看第三部分总结。分析的话,咱们就以_search操作为主线.
2022-03-16 17:09:41 3873
原创 Elasticsearch From/Size、Scroll、Search After对比
Elasticsearch From/Size、Scroll、Search After对比From/Size可以使用from和size参数对结果进行分页。from参数定义要获取的第一个结果的偏移量。 size 参数允许您配置要返回的最大匹配数。简单来说,需要查询from + size 的条数时,coordinate node就向该index的其余的shards 发送同样的请求,等汇总到(shards * (from + size))条数时在coordinate node再做一次排序,最终抽取出.
2022-03-16 17:08:38 4375
原创 Elasticsearch Refresh vs Flush
Elasticsearch Refresh和Flush区别Refresh使用refresh API显式刷新一个或多个索引。 如果请求以数据流为目标,则刷新该流的后台索引。刷新使自上次刷新以来对索引执行的所有操作都可用于搜索。默认情况下,Elasticsearch会定期每秒刷新一次索引,但仅在最近30秒内收到搜索请求的索引上刷新。也可以使用index.refresh_interval设置更改此默认间隔。刷新请求是同步的,并且在刷新操作完成之前不会返回响应。Flush通过刷新data stre.
2022-03-16 16:59:29 1164
原创 [译]eBay Elasticsearch性能调优实践
翻译自:Elasticsearch Performance Tuning Practice at eBay地址:https://tech.ebayinc.com/engineering/elasticsearch-performance-tuning-practice-at-ebayElasticsearch是一个基于Apache Lucene的开源搜索和分析引擎,允许用户近实时地存储、搜索和分析数据。在eBay上承载Elasticsearch集群的平台Pronto,使eBay内部客户可以轻松地.
2022-03-16 16:58:37 1740 1
原创 【Elasticsearch源码】 节点关闭分析
带着疑问学源码,第六篇:Elasticsearch 节点关闭分析代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+目的在看源码之前先梳理一下,自己对于节点关闭流程疑惑的点:节点关闭都做了哪些检查?kill ES进程来关闭节点是否安全?普通节点关闭与Master节点关闭有什么区别?正在写入数据的节点,在关闭的时候,会发生什么?源码分析在节点启动过程中,Bootstrap#setup方法中.
2022-03-16 16:57:57 1571
原创 【Elasticsearch源码】 节点启动分析
带着疑问学源码,第五篇:Elasticsearch 节点启动分析代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+目的在看源码之前先梳理一下,自己对于节点启动流程疑惑的点:节点启动都做了哪些检查?节点启动都初始化了哪些内容?当节点启动后,数据迁移是在哪里处理?源码分析先从启动脚本中找到启动类的入口:org.elasticsearch.bootstrap.Elasticsearch。下面.
2022-03-16 16:56:40 2202
原创 ElasticSearch的一些限制
ElasticSearch 限制1、 数组字段,数组大小无限制。There is no hard limit but it’s definitely recommended to keep those arrays “reasonable”. When performing an update, Elasticsearch needs to fetch the entire doc, apply the update, then index the updated document and rep.
2022-03-16 16:54:40 2688
原创 【Elasticsearch源码】 GET分析
带着疑问学源码,第四篇:Elasticsearch GET代码分析基于:https://github.com/jiankunking/elasticsearchElasticsearch 7.10.2+通过前3篇的学习,可以稍微总结一下Elasticsearch:ES是一个集群,所以每个Node都需要和其他的Nodes 进行交互,这些交互是通过NodeClient来完成。ES中RPC、HTTP请求都是基于Netty自行封装的:NettyTransport 对应RPC协议支持Netty.
2022-03-16 16:53:53 2090
原创 [译]Elasticsearch集群规模和性能调优
翻译自:Elasticsearch Cluster Sizing and Performance Tuning地址:https://www.elastic.co/cn/blog/found-sizing-elasticsearch集群应该有多少个节点?应该创建多少个副本?为了获得最佳的搜索性能,分片(Shard)的最佳平均大小是多少?诸如此类的问题只有你自己知道答案。没有人知道你的数据和查询结构,你使用的硬件,你的吞吐量。没有数学公式,也没有理论计算方法。如果你带着这样的期望而来,我很抱歉让你失.
2022-03-16 16:52:47 549
原创 Elasticsearch Breaker CircuitBreakingException Parent Data Too Large Real Usage
indices.breaker.total.use_real_memory 引发的问题最近业务日志es(7.6.2)集群,写入时经常返回以下异常:2020-11-24T02:59:05.557085524Z {"type": "server", "timestamp": "2020-11-24T02:59:05,556Z", "level": "DEBUG", "component": "o.e.a.a.c.n.i.TransportNodesInfoAction", "cluster.name".
2022-03-16 16:51:29 617
zookeeper开源客户端Curator
2017-03-25
zookeeper开源客户端ZkClient使用
2017-03-25
java cpu 内存占用高 问题 模拟并排查
2018-03-29
理解 channels - Kavya Joshi
2018-01-18
zookeeper常见应用场景简单实现及ppt
2017-03-26
zookeeper应用场景实现demo及ppt资料
2017-03-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人