- 博客(27)
- 收藏
- 关注
原创 深入解析 Java 进程的内存占用-ByAI
在日常的 Java 开发和运维过程中,我们经常会关注 Java 进程的内存占用情况,特别是在运行大型应用时,如何准确分析内存使用、发现潜在问题,并优化资源配置,是一个重要的课题。本文将深入探讨 Java 进程的内存模型,并结合pmap -x和jcmd命令解析 JVM 内存使用情况。
2025-03-06 15:57:42
858
原创 Kubernetes 资源分配与管理:平衡超卖、利用率与突发需求的终极指南
一、问题背景:资源管理的核心矛盾在 Kubernetes 集群中,资源分配常面临两个看似对立的目标:提高资源利用率:避免 CPU/内存长期闲置,降低成本。保障业务稳定性:应对突发流量或计算需求,避免资源竞争导致服务降级。典型场景矛盾:场景 1:某在线服务在业务高峰期需要突发使用 4 核 CPU,但日常仅需 1 核。若按峰值分配,80% 的 CPU 时间将闲置;若按日常分配,突发时可能因资源不足导致请求超时。场景 2:日志处理任务平时占用资源极少,但偶尔需要大量 CPU 进行数据压缩。若严格限
2025-02-27 20:35:17
715
原创 Shell 编程入门:给一头困惑的牛
我一直觉得,写 Shell 脚本就像养一头牛。你以为它温顺,其实它比你还犟。你喂它一把草,它吐你一口痰。你信誓旦旦地输入 if [ "$a"="test" ]; then,它立刻冷冷地回你一句:unary operator expected。你拍着脑袋想,这玩意儿明明在 Python 里能跑,在 C 里也能跑,怎么到 Shell 里就跪了? 于是你开始百度,开始谷歌,开始跪求 ChatGPT。但你不甘心,你要搞清楚,这一切到底是为什么!
2025-02-17 10:08:23
572
原创 Kyverno:Kubernetes 界的“霸道管家”,专治集群不服!
(“第42行,securityContext 没写 runAsNonRoot?(“你都创建 Deployment 了,不顺便来个 Service 吗?建议先设宽松策略,否则可能触发 Kyverno 的“狂暴模式”(比如一天驳回你 50 次请求)。虽然偶尔有点烦人,但有了它,你的集群再也不会变成“垃圾场”!写策略时请收敛控制欲,避免把集群变成“监狱风云”。👉 在你搬新家时送你灭火器(Generate)👉 在你忘关窗时帮你锁门(Mutate):像你妈一样,总觉得你穿得不够暖。“你尽管乱来,放行算我输!
2025-02-11 13:09:16
807
原创 当我创建一个 Deployment 时,Kubernetes 都在干什么?
你是不是也曾在 Kubernetes 上创建一个 Deployment,然后想:“到底发生了什么?Kubernetes 是如何把我写的那些配置变成实际运行的服务的?”好消息!今天我们就通过一个简单的场景,带你走一遍 Kubernetes 集群的幕后工作流程。让你不仅理解资源创建的整个过程,还能感受到 Kubernetes 各个组件是如何在背后默默配合,让一切顺利进行的。
2025-02-10 13:59:33
721
原创 优雅停机:分布式服务的关机艺术02-Spring Boot 优雅停机配置与实现
在微服务架构中,优雅停机(Graceful Shutdown)是一项非常重要的功能,它保证了应用在关闭时能够处理完当前的请求、释放资源,并平滑过渡到关闭状态。Spring Boot 提供了对优雅停机的原生支持,但如果你想进一步增强对停机过程的控制,可以借助 spring-boot-starter-actuator 来实现 HTTP 接口触发的优雅停机。
2025-02-09 00:17:08
1130
原创 Kustomize patches 使用技巧-替换带 / 的 Key
可以让 Kubernetes 资源管理更加灵活、可维护!规则允许我们修改已有资源的字段。进行 Kubernetes 资源管理时,,Kustomize 采用了。Kubernetes 资源的。可以确保它被正确识别为。微信: sawyerlan。公众号:一只核心bug。
2025-02-07 16:21:01
358
原创 优雅停机:分布式服务的关机艺术-01
优雅停机,简单来说,就是服务体面的离场。在关闭应用程序时,通过一系列步骤,确保服务能够稳妥地完成当前任务,而不是像翻桌子一样突然终止。停止接收新请求接到停机指令后,服务立即关闭入口,不再接受新的访问请求。完成当前任务对于已经在处理中的请求,服务会耐心地处理完毕,确保不留烂摊子。包括定时任务、消息队列消费等在内的内部任务,也会有序完成。发出关闭信号通知其他服务伙伴:“兄弟们,我要下线了,你们顶住啊!优雅停机不是让服务“死得漂亮”,而是让它为系统的稳定性保驾护航。
2025-01-24 17:01:45
853
原创 什么是滚动发布?k8s中的滚动发布实现
Kubernetes 滚动发布通过Deployment 控制 ReplicaSet 交替更新分层管理策略驱动:通过和maxSurge平衡效率与稳定性。健康检查:确保新版本可用性,是滚动过程的核心安全机制。合理配置策略参数,结合监控与渐进验证,可显著提升部署安全性和效率。
2025-01-21 00:13:51
733
原创 shell并发编程,你可能没用过这种方式
首先,我们定义一个函数,用于处理单个任务文件。假设文件的第一行是注释,表示目标服务器的IP地址,其余部分是要执行的命令。/bin/bash#定义任务执行函数#读取文件中的目标服务器地址和命令$file$file")#输出执行日志echo"[INFO]执行任务文件:$file->服务器:$server_ip"#通过SSH执行命令do通过xargs和函数导出,我们可以高效地并发执行批量任务。简单易用,兼容性强。灵活性高,可根据需要调整并发数。
2025-01-18 00:50:16
403
原创 一看就懂!配置 Nginx SSL 证书,你只需这些文件
CSR 是什么?申请证书时的“简历”,用完即可丢到一边。私钥的重要性:加密通信的核心,绝对不能泄露。证书链的作用:帮客户端验证你的证书是可信的。Nginx 配置文件配置指向证书链文件(配置指向私钥文件(通过这篇文章,希望你不仅能搞懂这些文件的作用,还能轻松完成 HTTPS 配置。
2025-01-08 15:32:54
740
原创 如何暂停k8s的liveness探针
Pod因为探活失败导致重启(liveness等探针),重启后就无法拿到现场信息,比如我们需要拿到java程序的内存dump、线程信息等,liveness根据配置会在一定的周期内进行pod重启,如果周期比较短 ,那么在短时间里k8s 就会将pod重启掉。将livenessProbe中的模式由httpGet改为exec模式,exec中编写探活的脚本,在脚本里做探活并通过文件标记来判断是否跳过探活直接返回成功。,即便探活失败也不让k8s去重启pod,将探针暂停后就有足够的时间去获取这些信息。
2024-07-10 12:56:32
287
1
原创 使用zabbix监控Oracle锁表
经常出现锁表的情况,有时候表被锁了导致业务异常,研发需要查看日志才能定位到,于是笔者使用zabbix监控oracle锁。
2022-11-22 15:47:27
930
原创 使用zabbix监控oracle中的表数据
有时候需要对表中的数据进行监控,比如笔者的这种场景: 微服务自己实现了定时任务,定时任务的执行结果会记录到某张日志表中,如果定时任务执行失败将会对业务产生影响,而微服务又没有自己的告警机制进行通知,故笔者用zabbix+python进行了监控,当任务失败时 进行告警。而这些业务的定时任务又是动态的,会增加新任务也会删除旧任务,所以对于这些任务要动态发现。下面是效果图。
2022-11-20 16:23:00
1818
原创 使用Prometheus监控RocketMQ
文章目录配置步骤1 安装RocketMQ Exporter2 配置Prometheus3 配置告警规则4 配置grafana5 参考链接6 关于作者本文基于官方提供的RocketMQ Exporter来监控RocketMQ集群。可以实现以下功能:Broker TPS/QPS的监控消息积压监控消费组消费演示监控最终的Grafana面板效果图如下:配置步骤1 安装RocketMQ ExporterRocketMQ官方已经提供了exporter,官方链接 https://github.com
2021-06-23 14:45:27
7594
1
原创 使用Prometheus监控web站点及证书过期
文章目录配置详情安装配置black_expoter配置Prometheus支持black_expoter配置告警规则配置grafana本文所指的web监控是指对某些访问地址或者说是接口进行监控。我们将通过一些实例,来介绍如何配置Prometheus 、black_exporter、grafana来监控站点的以下几个方面:状态码响应时间证书过期时间最终的效果图如下(图片建议在电脑端看):单个站点监控详情图企业微信告警样图Prometheus的web监控需要借助 blackbox_e
2021-06-22 00:34:42
4938
6
原创 gitlab跨大版本升级
文章目录Gitlab跨大版本升级Gitlab升级方法升级步骤1 查看当前版本2 确定升级路线图3 配置官方仓库4 依次安装各个版本进行升级Gitlab跨大版本升级gitlab的升级不能随意升级,需要根据官方文档的升级路线进行升级。如当前版本为11.10.4 -> 目标版本为13.2.10.你不能直接升级为13.2.10这个版本,你需要按以下路径进行升级:11.10.4 -> 11.11.8 -> 12.0.12 -> 12.1.17 -> 12.10.14 ->
2021-02-23 15:38:36
1588
原创 Centos6镜像源问题
CentOS 6操作系统版本结束了生命周期(EOL),Linux社区已不再维护该操作系统版本。建议您升级操作系统至CentOS 7及以上,如果您的业务过渡期仍需要使用CentOS 6系统中的一些安装包,请根据下文切换CentOS 6的源。https://help.aliyun.com/document_detail/193569.html?spm=5176.11065259.1996646101.searchclickresult.5c4f16c92Y7Qfw...
2021-02-07 10:37:48
261
原创 使用ansible部署springboot系列02-服务托管与jvm参数管理
文章目录0 简单回顾1 服务系统托管1.1 为什么需要系统托管1.2 怎么实现服务的系统托管1.3 把jar包服务做成系统托管这是使用ansible部署springboot系列 的第二篇文章。本系列文章介绍基于springboot的java程序如何自动化部署。该CI/CD方案基于Jenkins+Ansible,可以快速在企业落地。不了解Ansible或者Jenkins都没有关系,你甚至只需要复制方案代码并录入你的资产,即可落实该CI/CD方案了。0 简单回顾在 https://blog.csdn.n
2020-11-28 00:48:55
831
4
原创 redis内存碎片
1 redis 的碎片率1.1 碎片是什么,怎么产生的?内存碎片一般是由于空闲的连续空间比要申请的空间小,导致这些小内存块不能被利用。产生内存碎片的方法很简单,举个例:假设有一块一共有100个单位的连续空闲内存空间,范围是099。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为09区间。这时候你继续申请一块内存,比如说5个单位大,第二块得到的内存块就应该为10~14区间。 如果你把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请
2020-11-24 16:25:04
292
原创 mount卡住不动解决思路
mount -a一直卡主不动解决思路背景解决过程1 查看mount帮助发现有-v参数2 进行ping测试3 查看本机路由4 删除路由,挂载恢复背景使用阿里云NAS服务挂载做nfs服务器,目前笔者公司已经有很多机器挂载了该NAS,但唯独有一台机器挂载出现了问题,使用mount -a 挂载时,出现一直卡着不动。解决过程既然是卡主不动,那能不能看到卡在哪里了呢?1 查看mount帮助发现有-v参数mount --help -v, --verbose say what is bei
2020-11-24 14:55:23
17337
1
原创 使用ansible部署springboot系列01
文章目录工作流程准备环境资产组织管理项目环境资产包与主机绑定本文介绍基于springboot的java程序如何自动化部署。该CI/CD方案基于Jenkins+Ansible,可以快速在企业落地。不了解Ansible或者Jenkins都没有关系,你甚至只需要复制方案代码并录入你的资产,即可落实该CI/CD方案了。不管你是开发者或者是运维人员,如果你满足以下条件的任一种,建议深度阅读此文:使...
2020-04-05 14:35:57
1510
2
原创 借redis之手入侵服务器
说明利用redis端口暴露公网,且没有设置密码,能轻松入侵linux 服务器。原理远程连接redis,修改redis数据目录及文件为linux计划任务的目录,设置xx 键的值为计划任务,save数据后将会把该值写入计划任务文件,计划任务命令中可以执行任意脚本。入侵演示1. 编译安装并配置redis免密码,允许外部连接。主要修改以下参数,其他参数默认即可bind 0.0.0.0 #允...
2020-03-07 12:00:37
454
原创 zabbix redis监控自动发现
概述本文主要基于zabbix自动发现监控redis,redis指标主要通过 redis-cli info 命令采集,并使用zabbix-sender 将监控数据发送至zabbix-server。环境描述zabbix-server 4.0zabbix-sender 4.0python2.7redis 5.0.5工作原理zabbix discovery自动发现redis端口及red...
2020-02-17 12:13:43
486
转载 RocketMQ 控制台This date have't data
快速解决指定容器启动参数,增加时区及jvm参数-Duser.timezone='Asia/Shanghai",并且挂载本地时区文件,如下docker run --name mq -d -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.0.249:9876;172.16.8.248:9876 -Dcom.rocketmq.sendMessageWithVI...
2020-02-14 12:21:03
5461
原创 windows子系统apt出错libapt-private.so.0.0找不到
原文链接apt: error while loading shared libraries: libapt-private.so.0.0: cannot open shared object file: No such file or directorywindows10 WSL 执行apt命令出现以下错误apt: error while loading shared libraries: ...
2020-02-14 12:12:36
1962
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人