标签: 进程 - 文章列表
共 1 页 · 清除标签筛选
-
Go程序CPU占用过高与内存持续上涨的pprof定位方法(火焰图、heap profile与goroutine泄漏排查)
Go服务CPU爬到80%以上或者内存一天涨几百MB下不来时,top只能看到进程号。这篇记录用Go自带的pprof定位到具体函数:端点怎么挂才不暴露公网、top与top -cum的flat和cumulative差别、heap的inuse_space与alloc_space两个视角、用-base做差找泄漏点、goroutine的debug=1与debug=2读法、block与mutex的采样开关,以及Go 1.25、1.26、1.27里新增的相关能力。数据截至2026年10月。
-
Python进程内存持续上涨的排查方法(tracemalloc定位分配点、objgraph看对象引用与RSS口径差异)
Python服务RSS持续上涨直到被OOMKiller杀掉(退出码137),排查要先分清RSS、PSS、USS三个口径,再用MALLOC_ARENA_MAX与sys._debugmallocstats排除pymalloc碎片造成的假泄漏,然后用PYTHONTRACEMALLOC=25配合两次快照做差定位分配点,objgraph的show_growth与show_backrefs查引用链,最后落到logging重复addHandler、lru_cache无maxsize等常见泄漏点。附cgroup v2限额读法。
-
Windows文件删不掉报文件正在使用、需要管理员权限与源路径太长的解决方法(资源监视器、handle.exe定位占用进程与takeown长路径处理)
删文件弹出「文件已在另一程序中打开」「需要管理员权限」「源路径太长」,对应句柄占用、ACL与所有者、MAX_PATH三种不同原因。本篇给出资源监视器与handle.exe定位占用进程、takeown与icacls改权限、\?\前缀与LongPathsEnabled处理长路径、robocopy清空深层目录、chkdsk修复孤立记录的完整处置顺序。
-
Node.js报错JavaScript heap out of memory的排查方法(--max-old-space-size调整堆上限、堆快照抓取与内存泄漏定位)
先区分V8堆溢出与被系统OOM杀掉:前者该抬堆上限,后者要往下压。含node -e读heap_size_limit、NODE_OPTIONS与pm2的node_args写法、process.memoryUsage五个字段的读法、--heapsnapshot-signal抓三张快照做对比,以及全局缓存、事件监听重复注册这几个高频泄漏点。
-
Linux报错Too many open files的排查与解决方法(ulimit文件描述符上限、systemd LimitNOFILE与nginx worker_connections)
进程fd打到软限制1024时的完整排查路径:区分EMFILE与ENFILE、从/proc/PID/limits读真实上限、systemd服务加LimitNOFILE而不是改limits.conf、容器ulimit、nginx的worker_rlimit_nofile与worker_connections配套调整,以及用fd数量趋势判断是配置小还是代码在泄漏。
-
Windows服务启动报错1053与1067的排查方法(服务没有及时响应启动或控制请求与进程意外终止的定位)
Windows服务启动报1053或1067,弹窗只给一句错误信息。按事件ID 7000/7009/7011/7034/7038分诊,手动跑可执行文件定位工作目录与依赖,处理服务账户密码过期、依赖服务未启动、ServicesPipeTimeout超时与sc create的binPath转义。
-
Nginx报错502 Bad Gateway的排查方法(connect() failed与upstream prematurely closed connection定位、proxy_read_timeout与keepalive配置)
502 Bad Gateway基本都出在nginx与后端之间这一段。按error.log里的报错串分成四种情况定位:connect refused、upstream prematurely closed、upstream timed out、no live upstreams,再配keepalive与三个proxy超时参数,附上ss、curl与文件描述符的检查命令。
-
Docker容器退出码137与OOMKilled的排查方法(docker inspect定位、内存限额调整与JVM容器感知)
容器跑着跑着自己就没了,docker ps -a里显示Exited (137),应用日志毫无异常。137等于128加9,是进程被SIGKILL杀掉的信号。本文讲如何用docker inspect确认OOMKilled、翻dmesg内核记录、读cgroup v2的memory.events拿到真实用量,以及不同退出码139、143的区别。
-
PHP-FPM日志报server reached pm.max_children setting的排查与解决方法(pm.max_children计算与slowlog定位慢请求)
nginx日志刷connect() to unix:/run/php/php8.2-fpm.sock failed (11: Resource temporarily unavailable),php-fpm日志报server reached pm.max_children setting,多半是worker被占满。给出fpm-status状态页、按内存算pm.max_children的公式、pool配置示例、slowlog抓慢请求,以及OOM与listen.backlog的排查。
-
Windows端口被占用的排查方法(netstat与PowerShell定位进程并结束)
本地服务起不来报WinError 10048或nginx的10013,是端口被占或落在系统保留区间的典型表现。记录netstat -ano配合findstr定位PID、tasklist查进程、taskkill结束进程的做法,以及用Get-NetTCPConnection一步拿到OwningProcess的写法,附带PID 4被http.sys占用、Hyper-V保留端口段和TIME_WAIT三种特殊情况的处理命令。