Kubernetes中Ingress名字(metadata.name是不可直接修改
Posted on
在 Kubernetes (k8s) 中,Ingress(和大多数资源一样)名字(metadata.name)是不可变的,不能直接修改
方案 1:导出现有 Ingress → 修改 → 重新创建
1 | # 导出现有 ingress 配置 |
centos9编译安装优化httpd-2.2.27
Posted on
lynx命令行下的纯文本网页浏览器
Posted on
cronolog一个经典的日志切割工具
Posted on
cronolog 是一个用 C 写的小工具,用于按时间自动切割日志文件。它主要用于 Web 服务器(如 Apache、Nginx)或其他进程,将日志按时间组织成多个文件,方便管理和归档。
版本:1.6.2(你提供的版本)
用途:
- 按天、小时或自定义时间切割日志
- 文件名中包含时间戳
- 适用于需要精细化日志管理的系统
优势:
- 灵活的时间格式(%Y-%m-%d、%H 等)
- 无需定时任务即可自动切割
- 可输出到管道,结合 Web 服务器使用
使用场景
Apache、Nginx、Squid 这类服务端进程默认只能把日志写到一个文件,不会自动分割。
借助
cronolog,可以实现类似:- 每天生成一个新的访问日志
- 每小时切割一个错误日志
- 文件名中自动包含时间戳
容器健康检查失败不会自动触发容器重启
Posted on
Edited on
mac上对gbk中文乱码修复
Posted on
kubectl logs--previous参数(查看上一个容器日志)
Posted on
Edited on
kubectl logs 的 --previous 参数是一个很实用的选项,主要用于排查容器异常重启(CrashLoopBackOff、OOMKilled 等)时的日志。
具体含义:
默认情况 (
kubectl logs pod -c container)
获取的是容器 当前正在运行实例 的日志。
如果容器已经崩溃并被 Kubernetes 重启,新实例启动后,旧日志就不会显示。加上
--previous参数
会让kubectl logs去获取 上一个已终止容器实例 的日志。
这对于定位容器为什么崩溃非常关键。
JVM在容器里会表现出实际占用内存比-Xmx大很多
Posted on
Edited on
1. JVM 内存 != 堆内存
-Xmx 只控制 Java 堆(Heap) 的上限,而 JVM 进程还需要其他内存区域:
- 堆 (Heap): 由
-Xms/-Xmx控制 - 非堆 (Non-Heap): 元空间 (Metaspace)、代码缓存 (CodeCache)、JIT 编译出来的机器码
- 直接内存 (Direct Memory):
ByteBuffer.allocateDirect(),或者 Netty、RPC 框架常用 - 线程栈 (Thread Stack): 每个线程
-Xss,默认一般 1M,一个容器里如果有几千线程就很夸张了 - GC 开销 / JIT 开销: GC 线程运行需要额外内存,JIT 编译时也会占内存
- JNI / 本地库分配: 依赖 C/C++ 库时的 malloc 内存
👉 所以,JVM 进程的实际 RSS = Heap + Non-Heap + Direct + Thread + Native,远大于 -Xmx。
Linux 管道符结合xargs和sed使用差异
Posted on
Edited on
yum download(下载依赖宝方便离线安装服务)
Posted on
如何把时间戳(time\_t, 秒数)转成人类可读时间
Posted on
Edited on