主 题:磁盘上的代码不等于正在跑的代码
发 布 者:webblekubera
标签分类: 技术
时 间:2026-09-16 14:47:37
内容预览:去年开始,我把家里一台常年开机的小机器当成生产环境在用,上面跑自建的后台服务和一堆定时任务。踩得最久的一个坑,是我一直默认:改完代码、重启服务、看到进程还在,就等于新代码生效了。真实情况是重启脚本拉起新进程的时候,端口被同一个项目的残留进程占着。新进程绑定失败,自己悄悄退出,旧进程继续好好地对外服务。日志里确实有一行绑定失败,但淹在启动噪音里,而从外面看一切正常:端口通、接口有响应、返回也不报错。我就这样对着旧版本改了大半天,改一次没效果,再改一次还是没效果,最后开始怀疑缓存、怀疑反代、怀疑浏览器,唯独没怀疑那个服务压根没换过。后来改成两步走。先让新版本在一个空闲端口上影子启动,用真实请求探一遍,确认它自己能起、能答;确认之后才切过去。切完不看进程列表,只对活着的监听端口发一个能反映版本的探测,拿到新版本的回应才算部署成功。用 AI 写码工具之后,这个坑更隐蔽。它改文件很快,改完会告诉你已完成,但那句话说的是文件写好了,不是服务换了。现在我的习惯是:任何一句已完成,都要配一次对线上端口的实际探测,没有探测结果就当没做。
直达链接: https://www.nodeseek.com/post-931633-1
发 布 者:webblekubera
标签分类: 技术
时 间:2026-09-16 14:47:37
内容预览:去年开始,我把家里一台常年开机的小机器当成生产环境在用,上面跑自建的后台服务和一堆定时任务。踩得最久的一个坑,是我一直默认:改完代码、重启服务、看到进程还在,就等于新代码生效了。真实情况是重启脚本拉起新进程的时候,端口被同一个项目的残留进程占着。新进程绑定失败,自己悄悄退出,旧进程继续好好地对外服务。日志里确实有一行绑定失败,但淹在启动噪音里,而从外面看一切正常:端口通、接口有响应、返回也不报错。我就这样对着旧版本改了大半天,改一次没效果,再改一次还是没效果,最后开始怀疑缓存、怀疑反代、怀疑浏览器,唯独没怀疑那个服务压根没换过。后来改成两步走。先让新版本在一个空闲端口上影子启动,用真实请求探一遍,确认它自己能起、能答;确认之后才切过去。切完不看进程列表,只对活着的监听端口发一个能反映版本的探测,拿到新版本的回应才算部署成功。用 AI 写码工具之后,这个坑更隐蔽。它改文件很快,改完会告诉你已完成,但那句话说的是文件写好了,不是服务换了。现在我的习惯是:任何一句已完成,都要配一次对线上端口的实际探测,没有探测结果就当没做。
直达链接: https://www.nodeseek.com/post-931633-1