编程技巧 - 文章列表
-
PostgreSQL慢查询定位与索引失效的排查方法(pg_stat_statements抓取、EXPLAIN ANALYZE看执行计划与索引不命中的常见写法)
接口越用越慢却查不出原因时,先把SQL抓出来再看执行计划。文章讲pg_stat_statements的安装与排序查法、log_min_duration_statement与auto_explain的配置、EXPLAIN ANALYZE的三处读法,以及函数包裹列、隐式类型转换、前导模糊、复合索引前导列缺失这些让索引失效的写法,还有random_page_cost与统计信息过期的处理。
-
IIS站点访问报错503 Service Unavailable与应用池自动停止的排查方法(快速故障防护、标识权限与HTTPERR日志定位)
IIS站点打开是一张白页只显示Service Unavailable。文章按503的子状态码分诊,讲清503.0应用池停掉的定位办法:appcmd查池状态、WAS事件5002与5011确认快速故障防护触发、httperr.log里的AppOffline原因短语,以及标识权限、Load User Profile与appConcurrentRequestLimit这几处常见诱因。
-
Kubernetes Pod一直CrashLoopBackOff与ImagePullBackOff的排查方法(kubectl describe定位、探针配置与镜像拉取修复)
Pod卡在CrashLoopBackOff或ImagePullBackOff时的排查路径:kubectl describe看Events与Last State退出码,137、139、143、127各自代表什么,livenessProbe把慢启动应用杀掉时容忍时间怎么算,私有仓库的imagePullSecrets挂到ServiceAccount,节点上用crictl验证拉取,以及arm64节点拉amd64镜像导致的exec format error。
-
Elasticsearch集群报red状态与分片UNASSIGNED的排查方法(allocation explain定位、磁盘水位线与副本数调整)
Elasticsearch集群health变red、分片显示UNASSIGNED,写入报cluster_block_exception。用_cat/shards与_cluster/allocation/explain定位到具体decider,处理磁盘水位线85%、90%、95%,副本数与节点数不匹配、max_shards_per_node上限及分配开关未恢复。
-
Windows服务启动报错1053与1067的排查方法(服务没有及时响应启动或控制请求与进程意外终止的定位)
Windows服务启动报1053或1067,弹窗只给一句错误信息。按事件ID 7000/7009/7011/7034/7038分诊,手动跑可执行文件定位工作目录与依赖,处理服务账户密码过期、依赖服务未启动、ServicesPipeTimeout超时与sc create的binPath转义。
-
Android Studio构建报错Unsupported class file major version 65与Minimum supported Gradle version的解决方法(AGP、Gradle与JDK版本对应排查)
升级Android Studio后打开老项目,Sync必报Unsupported class file major version 65与Minimum supported Gradle version。前者是Gradle跑在过高JDK上(61对应Java 17、65对应Java 21),后者是AGP要求的Gradle下限。用gradlew --version看实际生效版本,改distributionUrl与Gradle JDK,处理国内仓库、代理与cacerts证书,再清daemon缓存复查。
-
python -m venv创建虚拟环境报错ensurepip is not available与Activate.ps1禁止运行脚本的解决方法(python3-venv安装、执行策略与环境失效修复)
Debian和Ubuntu上python3 -m venv建不出环境报ensurepip is not available,Windows下Activate.ps1又被执行策略挡住,激活后pip还指向系统Python。按报错阶段分诊:装python3-venv与python3-full、处理EXTERNALLY-MANAGED标记、改ExecutionPolicy或用activate.bat绕过、重建不可迁移的venv目录,并用sys.prefix判断是否真的进了环境。
-
go mod tidy报错missing go.sum entry与module lookup disabled by GOPROXY=off的解决方法(GOPROXY镜像、GOPRIVATE与校验数据库配置)
go mod tidy与go build的依赖报错分三类:下载超时换GOPROXY镜像并保留direct兜底、GOPROXY=off导致的module lookup disabled、Go 1.16起-mod=readonly引发的missing go.sum entry。文中给出go env -w配置、GOPRIVATE处理私有模块、go clean -modcache修复checksum mismatch的完整命令与取舍说明。
-
git clone报错Failed to connect to github.com port 443与SSL certificate problem的排查方法(代理配置、http.version与CA证书修复)
git clone拉不下来时,报错串可以分成两类:带port 443或Couldn't connect to server的查网络、代理与HTTP/2协议版本;带SSL certificate problem的查CA证书与系统时间。文中给出curl探测、git config --list --show-origin定位配置来源、http.version改HTTP/1.1、sslCAInfo指定证书、sslVerify临时绕过的完整命令。
-
Java报错java.lang.OutOfMemoryError: Java heap space的排查方法(jmap与jcmd导出堆快照、MAT定位泄漏点与-Xmx调整)
Java heap space只说明堆分配不下了,谁占着堆要看堆快照。用-XX:+HeapDumpOnOutOfMemoryError留现场,jcmd与jstat判断是泄漏还是-Xmx给小了,再用MAT的Dominator Tree追引用链,顺带说清容器里UseContainerSupport与OOMKilled的关系。