Latest Notes

把日常问题写成可复用的答案。

这里收集技术实践、排错记录、阅读札记和一些生活观察。每一篇都尽量留下清晰的上下文、判断和解决路径。

Today 持续记录,慢慢变好

技术笔记、项目复盘、阅读摘录和问题清单。

系统运维 1436 阅读

java CPU占用过高问题的排查及解决

java cpu飙升居高不下,这种事情虽然很少。 但是这种故障一旦发生了,可能就很严重。 那么当我们某个Java项目占比很高了,怎么定位到代码? 1. top 使用top 定位到占用CPU高的进程PID 2. 通过ps aux | grep PID命令 获取线程信息,并找到占用CPU高的线程 ps -mp "$PID"

阅读全文
Python 1688 阅读

Python基于Redis实现分布式锁

分布式锁应该具备的条件: 在分布式系统环境下,任意时刻,只能有一个客户端能持有锁; 高可用/高性能的获取锁和释放锁,必须保证加锁和解锁是同一个客户端所为; 具备锁失效机制(防止死锁),即使有一个客户端在持有锁期间崩溃而没有主动释放锁,也能保证后续其他客户端能正常加锁; 具备非堵塞特性,即没有获取到锁,直接返回获取锁失败

阅读全文
Python 1645 阅读

Django 异常日志输出到一行

一些常见的跨平台日志收集平台,如阿里云日志、efk,一般都是按一行作为一条日志记录。 Python默认的输出会将消息原样输出,如果有异常的话,会将异常堆栈多行形式返回。不方便进行日志的收集分析。所以需要将其输出为一行。 创建MyFormatter格式化类 参考官方 import logging class MyForm

阅读全文
系统运维 1537 阅读

k8s 使用Init Container确保依赖服务是否启动

在K8S使用过程中,我们在启动服务过程中,可能会存在服务依赖启动的问题。比如:我们希望先启动MySQL服务,再启动Nginx服务。此时可以使用initContainers来实现我们需要的功能,控制服务启动顺序。 Init Container简介 Pod中能够包含多个容器,也可能包含一个或多个先于应用容器启动的init容

阅读全文