Margrop
Articles164
Tags361
Categories24
1password AC AP API AppDaemon Aqara Cron Date Diagrams.net HA HADashboard HomeAssistant IP IPv4 Java LVM‑Thin Linux MacOS MiniMax MySQL NAS OpenAI PPPoE PostgreSQL ProcessOn Proxmox VE SSL Shell TTS TimeMachine UML Uptime Kuma Web Windows activate ad adb adblock agent aligenie aliyun alpine annotation aop authy autofs backup baidupan bash bitwarden boot brew browser caddy2 cdn centos cert certbot charles chat chrome classloader client clone closures cloudflare cmd command commit container crontab ctyun ddsm demo dependency deploy developer devtools dll dns docker domain download draw drawio dsm dump dylib edge exception export fail2ban feign firewall-cmd flow frp frpc frps fuckgfw function gcc gfw git github golang gperftools gridea grub gvt-g hacs havcs heap hello hexo hibernate hidpi hoisting homeassistant hosts html htmlparser https idea image img img2kvm import index install intel io ios ip iptables iptv ipv6 iso java javascript jetbrains jni jnilib jpa js json jsonb jupter jupyterlab jvm k8s kernel key kid kms kodi koolproxy koolproxyr kvm lan lastpass launchctl learning lede letsencrypt linux live low-code lvm lxc m3u8 mac macos mariadb markdown maven md5 microcode mirror modem modules monitor mount mstsc mysql n2n n5105 nas network nfs node node-red nodejs nohup notepad++ npm nssm ntp oop openfeign openssl os otp ovz packet capture pat pdf pem perf ping pip plugin png powerbutton print pro proxy pve pvekclean python qcow2 qemu qemu-guest-agent rar reboot reflog remote remote desktop renew repo resize retina root route router rule rules runtime safari sata scipy-notebook scoping scp server slmgr so socks source spk spring springboot springfox ssh ssl stash string supernode svg svn swagger sync synology systemctl tap tap-windows tapwindows telecom template terminal tls token totp tvbox txt ubuntu udisk ui undertow uninstall unlocker upgrade url v2ray vhd vim vlmcsd vm vmdk web websocket wechat windows with worker wow xiaoya xml yum zip 中国电信 云电脑 交换机 光猫 公网IP 内存 内网IP 升级 启动 夏令时 天猫精灵 天翼云 安装 容器 导入 小米 常用软件 广告屏蔽 序列号 应用市场 异常 打工 技术 抓包 描述文件 日记 时区 显卡虚拟化 智能家居 智能音箱 梯子 模块 流程 流程图 浏览器 漫游 激活 火绒 电信 画图 直播源 续期 网关 网络风暴 群晖 腾讯 自动化 虚拟机 证书 路由 路由器 软件管家 软路由 运维 运维监控 镜像 镜像源 门窗传感器 问题排查 防火墙 阿里云 阿里源 集客

Hitokoto

Archive

今天的bug终于修完了,然而明天还有新的bug在等着我

今天的bug终于修完了,然而明天还有新的bug在等着我

今天的bug终于修完了,然而明天还有新的bug在等着我

下班前十分钟,我终于把今天最后一个小问题给解决了。伸了个懒腰,看着屏幕上显示的”连接成功”四个大字,心里那叫一个舒坦。结果刚准备关机,钉钉突然弹出一条消息:”某平台新增了一个需求,明天记得处理一下。”得,这熟悉的套路,打工人都懂。

上午:又是和连接杠上的一天

早上刚到工位,就收到某VM的告警。这次的报错信息很有意思——“连接被拒绝”。作为一个专业的打工人,这种错误我已经见怪不怪了。无非就是那么几种原因:网络不通、端口没开、服务没启动、或者配置写错了。

先SSH连上去看看情况。输入一串命令,发现某服务的进程居然在跑,那就奇怪了。再仔细一看日志,好家伙,原来是端口配置从8080改成了8081,我这边还用的是老配置。这波啊,属于是别人悄悄改了配置没通知我。

改完配置,重启服务,连接恢复正常。整个过程不超过五分钟,但排查问题花了整整四十分钟。你问我为什么?因为我需要先确认是不是网络问题,再确认是不是服务问题,最后才想到是不是配置问题。这年头,排查问题最大的难点不是问题本身,而是找到那个把配置改掉的人。

中午:突如其来的”惊喜”

正吃着午饭,某平台的技术支持突然找过来,说是他们那边升级了API,现在需要重新授权。嘴里还嚼着饭的我,只能含含糊糊地答应着”好的好的,我下午处理”。

下午一查文档,好家伙,这次升级改动还挺大。旧的接口不能用不说,还新增了好几个必填参数。我这暴脾气,差点就把键盘摔了。但转念一想,摔键盘还得自己买新的,不如深呼吸一口气,静下心来慢慢改。

花了大概两个多小时,总算是把代码改完了。测试环境跑了一遍又一遍,确保万无一失。临下班前,谨慎起见,又在预发布环境跑了一次。功夫不负有心人,这次总算是顺利通过了。

下午:意外的小插曲

正当我准备喘口气的时候,某Mac突然弹出一个提示,说是什么证书快过期了。这种事情可大可小,赶早不赶晚,赶紧上去检查了一下。

不看不知道一看吓一跳,好几个服务的证书都只剩一周时间了。这要是不及时更新,到时候服务一挂,又是连环告警。赶紧申请新证书、部署、更新配置,一套流程走下来,总算是有惊无险。

顺便还把之前积压的几个小问题一起处理了。不是什么大问题,就是一些配置不规范、日志级别设置不合理之类的小细节。但你别说,这些不起眼的小问题,关键时刻真能要命。

晚上:总结和感悟

终于把所有事情都处理完了。泡了杯茶,坐在工位上发了会儿呆。回想起今天的经历,有几点感悟想和大家分享:

第一,排查问题要有耐心。 十分钟能解决的问题,往往需要花四十分钟去排查。这不是效率低,而是排查本身就是一种技术活。

第二,文档很重要。 这次API升级,如果文档写得清楚,我也不至于改这么久。虽然大部分时候我们都不爱写文档,但用到的时候就知道它的好了。

第三,及时处理小问题。 证书过期这种小事,今天不处理,明天就可能变成大事。预防永远比补救重要。

第四,打工要有好心态。 今天是修完了,但明天还有新的bug在等着。这是定律,改不了的。那怎么办?要么接受,要么转行。我选择前者。


抬头一看,已经晚上九点多了。收拾收拾准备回家吧。毕竟在上海这座城市,上班已经这么辛苦了,下班后就别亏待自己啦。

明天又是新的一天,新的bug在等着我。但那又怎样呢?兵来将挡,水来土掩呗。


作者:小六,一个在上海努力生存的普通打工人

Author:Margrop
Link:http://blog.margrop.com/post/2026-02-27-bug-fixed-tomorrow-awaiting/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可