- 博客(44)
- 收藏
- 关注
原创 Nginx 高并发调优实操笔记:从默认配置到扛住上万并发
只调不改系统 fd 限制:最常见,改了也不生效systemd 服务的 limits.conf 不生效:必须用加,被这个坑了很久设太大:超过核数反而变慢,跟核数一致即可调太高:压缩耗 CPU,5 左右就够静态资源日志没关:海量小文件请求下,日志 IO 是隐形杀手后端 keepalive 忘清 Connection 头:长连接起不来,等于白配somaxconn和 listen backlog 不匹配:Nginx 的值被系统截断,超出的连接直接丢调完不压测:不知道效果,也不知道新瓶颈在哪。
2026-11-05 17:04:49
260
原创 MySQL 慢查询日志开启与优化实操笔记
声明:本文为个人服务器运维过程中的实操记录,仅用于技术交流与经验分享,内容为通用的 MySQL 排查方法论,不涉及任何商业推广。
2026-11-05 16:56:01
347
原创 Docker 部署 Nginx 反向代理 + 自动 HTTPS 实操笔记
本文为个人技术实践记录,仅用于技术交流与经验分享,不构成任何购买建议或商业推广。文中所有命令均在测试环境实际执行验证,可直接复现。
2026-11-05 16:11:40
304
原创 Nginx 502 Bad Gateway 完整排查思路(PHP-FPM / 上游 / 超时三类原因全覆盖)
502 不等于 Nginx 挂了,先看 error.log 确定上游是谁,别张口就重启 Nginx。= PHP-FPM 满了,这是最高频的 502 原因,重点查和backlog。按内存算,别拍脑袋写 100:算错了直接把机器撑爆,反而更容易 OOM 出 502。升级 PHP 版本后务必核对 socket 路径,Nginx 和 PHP-FPM 两边不一致是最隐蔽的 502。调大超时是兜底不是解药的真正解法是让后端变快(查慢 SQL)。要查 OOM,进程被杀而不是 Nginx 拒绝。
2026-11-03 17:07:06
186
原创 Linux服务器磁盘空间占满排查与清理实操笔记
先df分清是空间满还是 inode 满,两者处理思路完全不同,别一上来就删大文件du和df对不上,先查,八成是被删除但没释放句柄的文件,重启对应进程即可正在被进程写入的日志用,别用rmrm不 reload 不释放空间Docker 的日志上限一定要提前配里加上max-size,能省很多事MySQL binlog 记得设过期时间,尤其是开了主从或者频繁写入的库清理只是应急,轮转和告警才是根治logrotatejournald。
2026-11-03 15:35:20
267
原创 HTTPS证书自动续期故障排查记录
80 端口不要随便关,Let’s Encrypt http-01 验证必须用 80 端口,就算你网站强制跳 HTTPS 也得开着 80自动续期一定要加重载 Nginx/Apache 的钩子,不然续了也白续定时任务要加日志输出,不然失败了根本不知道不用自己写 crontab,新版 certbot 的 systemd timer 比自己写的 crontab 靠谱,默认安装就有,不会写错路径和参数可以配置邮件通知,续期失败发邮件提醒,省得证书过期了才发现。
2026-11-03 15:25:07
276
原创 # 磁盘IO性能fio测试实操笔记
很多人买 VPS 只看 CPU 和内存,忽略磁盘 IO 性能,结果跑数据库、存文件的时候卡得要死,甚至有的超售严重的 VPS,磁盘随机读写速度还不如机械硬盘,跑个 WordPress 首页加载要几秒。fio 是目前最准确的磁盘性能测试工具,比 dd 测试准很多,能测随机读写、顺序读写、IOPS 这些核心参数,这篇讲怎么安装 fio,怎么看测试结果,怎么判断磁盘性能好不好。从图里能一眼看出:读性能明显强于写性能,IOPS 和带宽都是读高写低,而延迟则是写高于读,符合 NVMe SSD 的典型特征。
2026-11-02 23:51:08
145
原创 WordPress伪静态404故障排查笔记
配置完之后,刷新网站,点击文章、分类、标签、分页都试试,所有页面都能正常打开之后,再去 WordPress 后台固定链接设置里选你想要的链接格式(一般选「文章名」对 SEO 最好),点保存就可以了。这种,能正常访问,结果一改成固定链接伪静态,点所有文章页、分类页全都是 404 Not Found,只有首页能打开。这个问题 90% 的新手装 WordPress 都会遇到,要么是 Nginx 没配伪静态规则,要么是配置没加载,要么是权限不对,这篇把我排查这个问题的完整过程记下来,遇到同样问题照着一步步查就行。
2026-11-02 23:40:33
90
原创 BBR Plus编译与开启实操记录
买了香港 VPS 的朋友应该都有感受,晚高峰的时候看 YouTube 速度上不去,下载国内文件只有几百 KB,开网页都卡。这时候开启 BBR 拥塞控制算法能有效提升高延迟、有丢包的网络环境下的传输速度,普通原版 BBR 提升有限,BBR Plus 针对国内网络环境做了优化,晚高峰速度提升明显,这篇记录我在 Debian 12 上编译开启 BBR Plus 的完整过程,以及开启前后的测速对比。BBR Plus 是社区优化的版本,源码在 GitHub 上,我们直接编译模块就行,不用换整个内核,不容易出问题。
2026-11-02 23:34:21
91
原创 认证记录全绿,邮件为什么还是进了垃圾箱?自建 Postfix+Dovecot 的收信验证、传输加密与发信信誉排查实战
注册了,验证邮件一直没收到。我第一反应是“用户填错邮箱”。让客服要了收件地址,三个全是 Gmail。4203 封积压。我用“我发垃圾邮件了?但我是个五人小站,一个月发不到两万封,全部是事务邮件(注册验证、订单通知、找回密码)。“IP 是不是在什么黑名单里?去查,果然——被列进了一个叫 PBL 的名单。“这个 IP 段属于住宅/动态/云主机网络,按策略性收录。它不是说我垃圾,它是在说“这个 IP 段按惯例不该直连发信”。“那先改中继,把邮件发出去。配了 smarthost,队列慢慢消下去了。
2026-10-31 23:59:12
254
原创 为什么 SELECT 3 也挡不住邻居?Redis 多租户隔离、ACL 键模式与 TLS SNI 路由实战
生产 Redis 写入全挂了,业务全 500。我 SSH 上去看日志,满屏都是。内存用满,写命令被拒,缓存全部击穿到 MySQL。第一反应是“流量突增”,但当时是周末下午两点,流量在低谷。第二反应是“某个接口缓存失效”,但看键总数稳定在平常水平。把db3 只有不到 9000 个键,但它是数据批处理服务()在用;而我业务线的热 key 全在 db0 里,这一周被一点点淘汰光了。我去翻批处理那一侧的发版记录,发现半小时前他们上线了一个新的离线任务,把 60 万条商品详情一次性塞进了 Redis,键前缀。
2026-10-31 23:50:59
318
原创 服务器安全加固与入侵检测实战:从SSH加固、防火墙策略到挖矿木马排查
做运维这些年,最让人后背发凉的不是"服务器挂了",而是"服务器不知道什么时候已经被别人用了我处理过的最典型一例:一台对外提供服务的 VPS,某天监控告警CPU长期100%,登上去一查——被人种了挖矿程序,跑了整整三天。追溯原因很简单:SSH 用的还是默认 22 端口 + root 密码登录,密码是“公司名+123456”这种。攻击者用字典跑了一晚上就进来了。。SSH被爆破成功后装后门,攻击者随时能回来,你删了挖矿程序他再装一遍;应用漏洞被利用。
2026-10-30 21:58:26
130
原创 自建 Git 代码托管服务实战:Gitea 与 GitLab 选型、CI/CD 搭建与仓库存储扩容
做团队开发这些年,关于代码托管,我经历过三个阶段。第一阶段,所有仓库都放公共平台。图省事,但很快遇到问题:私有仓库数量一多就要付费;大仓库 clone/push 动不动卡住超时;公司要求代码不能出内网,公共平台直接出局。第二阶段,开始有人把代码随手放开发机、NAS 甚至网盘上。这更危险——代码是最不该“只有一份、还没人管”的资产。开发机一重装、磁盘一坏,几个月的提交记录说没就没。第三阶段自建一套 Git 服务,放自己的服务器上。代码数据完全自主:不用担心平台政策变化、项目被下架、私有仓库要涨价;
2026-10-30 21:48:23
31
原创 Stable Diffusion 云端部署与出图提速实战:从环境搭建到显存优化的完整踩坑记录
我想跑 SD,但我是 Mac / 我的显卡只有 8G 显存 / 我那台老机器风扇能起飞,到底该怎么办?答案其实很清楚——上云。租一台按小时计费的 GPU 实例,用完就关,既不用花一两万买 4090,也不用担心本地显卡显存不够、散热压不住、驱动装到崩溃。但云上跑 SD 也不是无脑操作。我见过太多人踩这几个坑:显存爆了报 OOM、出图速度慢到怀疑人生、忘了关机月底收到一张几百块的账单、装了一晚上环境最后还是起不来。
2026-10-28 15:26:09
300
原创 海外免备案云服务器节点怎么选?香港/日本/新加坡/美国四个节点实测对比与部署实战
服务器到底放哪。这个问题看似简单,踩坑的人却特别多。我见过把面向欧美客户的站点放在香港的(结果欧美用户访问慢)、把面向国内运营团队的机器放在美东的(结果自己上后台卡到崩溃)、也有为了省几美元选了绕路线路,最后广告费全打了水漂的。节点选址是海外业务的第一块地基,比 CPU 核心数、比内存大小都重要得多。今天把我这几年给十几个海外项目做节点选型的完整方法论拆开讲:先讲清楚什么业务该用境外节点、节点选址的四个决策维度,再给四个主流节点的实测对比,最后是线路验真和免备案部署的完整流程。所有脚本都能直接复制运行。
2026-10-28 14:35:50
227
原创 一台机器上放三个站点为什么会串号?Nginx+PHP-FPM 多站点隔离、Cookie 作用域与 HSTS 预埋实战
那天晚上九点多,我收到一条用户反馈:“我登了自己的后台,刷新一下就跳到另一个站点的后台了。第一反应是 Nginx 配错了。我把三个站点的过了一遍,都对;root目录各自独立,也对;PHP-FPM 的 socket 每个站一个,没混。我又查了一遍 session 存储路径,也是分开的。十分钟之后,我打开浏览器的开发者工具,才看到问题:浏览器给三个站点都种了同一个 cookie。这台机器上我放了三个站点:一个博客、一个小工单系统、一个朋友的小商城。三个站点都是同一根域下的子域——准确地说,是博客挂在。
2026-10-27 16:12:44
264
原创 登得上去为什么看不到仓库?自建服务统一接 Keycloak SSO 实战(aud 校验、nonce 重放、角色映射、redirect_uri 精确匹配)
那天上午九点半,同事在群里发了一张截图——Gitea 登录成功了,进去之后页面一片空白,右上角显示的是一串 UUID 而不是用户名,点任何仓库都报 403。我自己切过去看,登录流程是通的,Keycloak 那边也看到了成功记录,但 Gitea 这边的用户信息全是空的。排查了十分钟发现原因非常简单:我在 Keycloak 的 client scope 里只配了,Gitea 要求拿当用户名,而 profile scope 在 Keycloak 26 里默认只带namegiven_name。
2026-10-25 15:43:12
227
原创 跨可用区流量为什么反而绕了远路?K8s 拓扑感知路由与就近转发排查实战(hints 与 trafficDistribution)
一个月前的周四晚上,我在看一次小型活动的收尾数据。业务很简单:一个自建的图片处理 API,三个机房各放一组 Pod,入口走集群里的网关。平时 p99 稳定在 12 ms 上下,那天晚上它跑到了 83 ms。我第一反应是资源不够,看了一眼各节点的 CPU:平均不到 30%,没有热点。第二反应是 CNI 出问题,翻了一遍日志,没有丢包。第三反应是 DNS,也正常。真正让我起疑的是流量图。40 GB/天的基础量,那天跑到了 190 GB/天。而业务量只涨了不到 20%。
2026-10-24 11:23:20
317
原创 容器的时钟不是自己的:K8s 节点时钟偏差、时间命名空间与准入检查实战
周四上午十点,我在日志平台上看到一条请求链路断成了三截。这是一次跨三个服务的调用,正常情况下在日志里按时间排序后首尾相接:网关的记录在前,服务 A 在中间,服务 B 在后。那天服务 A 那一段整段跑到了最前面,比网关还早 4 分 12 秒。第一反应是时区。我以前在时区上栽过跟头,也有现成的套路:查容器的、查TZ环境变量、查基础镜像里有没有 tzdata。这一套查下来,全对,而且三个服务都显示 UTC,谁也不比谁特殊。
2026-10-23 15:27:56
280
原创 为什么备份成功了还是恢复不回来?Velero 定时备份、一致性 Hooks 与 etcd 分层灾备实战
那天早上八点四十,同事在群里发了一句:“上周五那批订单怎么查不到了?前一天晚上十一点,有人清理测试命名空间的时候连错了 context,把 order 服务所在的命名空间整个删掉了。好消息是我们有一份每天跑的 Velero 定时备份。显示Completed;一片 Running;监控面板上 QPS 曲线正常、错误率正常;但数据库里少了整整一天的数据。我花了一上午才把这条链拆清楚。原来那次备份里,集群对象的备份确实成功了,卷数据的备份却没进去——里 Phase 写的是Completed。
2026-10-22 22:13:46
367
原创 纠删码防得住坏盘却防不住机房下线:MinIO 站点复制与跨机房容灾实战(含双向复制与故障切换演练)
上个月底的一个周三下午两点多,我正在调一个前端页面,运营群里突然炸了——后台文章里的配图全变成了裂图。我第一反应是数据库连接池满了,登上去一看数据库好好的,ping那台跑对象存储的机器,不通。翻开放云厂商的控制台,里面静静躺着一行小字:该宿主机所在网络设备维护,预计影响 40 分钟。那 40 分钟里我什么都做不了。图片打不开,附件下载不了,后台一片空白。事后复盘,真正让我后背发凉的不是那 40 分钟,而是我一直以为自己已经"做了高可用"
2026-10-21 15:20:08
336
原创 把散落在世界各地的机器连成一个内网:WireGuard 跨地域虚拟组网实战(多节点、路由、NAT 穿透与密钥管理)
写到第五十六篇,我手上已经有七八台机器散在不同机房:香港、日本、新加坡、韩国、美西、巴西、荷兰、迪拜……在旧机器上加新机器的 SSH 公网 IP;开防火墙对应端口;配 rsync / Prometheus / Loki 抓取规则;备份脚本里再加一条 IP;机器换 IP 时,上面所有地方全部改一遍。到第七台的时候我实在忍不了了。这些机器对外服务各不相同,但它们彼此之间一直在对话:日志要往中心发、备份要跨机拷、Prometheus 要抓各节点指标、SSH 跳板要能通所有机器。
2026-10-20 16:02:34
330
原创 从“邮件能收到“到“邮件不会被降级窃听“:MTA-STS、TLS-RPT、DANE 与 BIMI 邮件安全进阶实战
配完 SPF/DKIM/DMARC + 收信那套之后,我以为邮件这件事“能收能发就算齐了”。甚至有过一次更糟的情况——我用检查工具看下来,某些中继在 STARTTLS 协商失败时会静默退回明文传输,而我完全不知道。发件方看见的是"发出去了",收件方看见的是"收到了",中间那段路有没有被窃听,没有任何一方能证明。SPF/DKIM/DMARC 解决的是“是谁发的”和“能不能发”的问题,但它们完全不解决“传输过程中有没有被窃听”这个问题。MTA-STS。
2026-10-20 15:02:23
279
原创 网站内容不错但就是没流量?独立站 SEO 技术配置实战:robots.txt、sitemap、canonical、hreflang 与结构化数据
先说一个我自己绕了很久的弯。站点上线大半年,内容我是认真写的,每篇两三千字,配图、排版、内链都做了。但自然搜索进来的访客一直是零星的个位数,我从后台看,偶尔来一两个人,关键词还都是站名本身——也就是说,只有已经知道我的人才能找到我。我一开始的怀疑方向是内容:是不是写得不够深?是不是话题不够热?于是我把标题改了又改,把关键词往开头堆,甚至重写了两篇。三个月过去,几乎没有变化。真正的转折是一次偶然。
2026-10-19 14:22:31
107
原创 网站被恶意刷量怎么办?从访问日志识别异常流量到 Nginx 分层限流与封禁实战
刷量不像入侵。入侵会留下后门、会偷数据、会有明显的异常进程,你会紧张。而刷量不偷东西、不留后门、甚至不试图突破任何权限——它只是安安静静地、用很大的量、把你的页面访问一遍。账单变贵了、机器变卡了,但监控面板上的每一项都是绿的。我第一次遇到是去年冬天。月初收到带宽超额提醒,我以为是正常的流量增长,没太在意。到了第三天,后台开始转圈——不是打不开,是每次都要等三四秒。登机器一看,到了 40 多,Nginx 的稳定在四千以上。CPU 只有 30%,内存用了不到一半,磁盘 IO 也很正常。
2026-10-19 14:13:58
282
原创 为什么接入 CDN 之后网站反而更慢了?缓存策略、回源配置与命中率排查实战
接 CDN 不一定变快,运气不好的时候会比不接还慢。这话听着反直觉,但它是我上个月实实在在经历的事。我这个站挂在海外的源站上,访问者主要在国内和东南亚。直连的时候首屏大概 1.8 到 2.5 秒,说不上快,但能用。后来我想着加一层 CDN 应该能明显改善,就按服务商给的指引把域名接了上去。接完我随手测了一下首页,本地打开 0.6 秒——挺好,果然有用。第二天,一个常来的读者在评论区问我:你这站是不是换服务器了,怎么感觉比以前还慢?我第一反应是"不可能"。
2026-10-18 16:06:22
245
原创 只能发信不能收信?自建域名邮箱实战:MX 记录 + Postfix + Dovecot + Rspamd 反垃圾完整记录
上一篇写过“网站发出的邮件总进垃圾箱”,结尾我留了一句:站点的收信方向还没整理过(现在是靠转发),如果哪天要自己收admin@这类地址,MX 记录和反垃圾那一套又是另一个话题。这篇就是来补这件事的。起因其实很具体。我那个站挂着一个admin@地址,之前一直是转发——域名上配一条转发规则,有人发到admin@,就自动转到我自己的私人邮箱。用了两年多,一直没出事,直到有一回:一个合作方说给我发了报价单,附件有点大。我这边翻遍私人邮箱的收件箱、垃圾箱、推广分类,都没有。最后折腾了半天,发现那封信。
2026-10-18 16:01:46
131
原创 Kubernetes 密钥集中治理实战:从硬编码到 Vault + External Secrets 自动注入
去年有一次挺丢人的事:我把一个测试用的仓库推到了公网,第二天收到一份自动化扫描的提醒邮件——里面赫然是我那个仓库里的.env文件,数据库密码、对象存储的 AK/SK、一个第三方服务的 API Key,全是明文。更尴尬的是,那个密码我在三四个地方都用过:本地.env、CI 的仓库 Secret、K8s 里若干个Secret资源、还有一份躺在旁边的备份文件。要改就得一个个改,漏掉一个就是隐患。从那次之后我开始认真处理密钥这件事。仓库里一个明文密钥都没有,连Secret的 YAML 都只剩一个"引用声明";
2026-10-17 17:17:05
266
原创 从“错误率超过 1% 就报警“到错误预算:用 SLO 和烧损率重做告警,并接进发版决策
错误率超过 1% 持续 2 分钟就报警这条规则我用了一年多,中间出过两次事,都挺典型。第一次是"半夜被叫起来,看了一眼发现没事"。凌晨两点多收到告警,错误率 1.2%。爬起来连上机器翻日志、看发布记录、看数据库连接数,折腾四十分钟,发现是某个下游接口在某一分钟里抖了一下,总共影响了几十个请求,之后自己恢复了。这一分钟的错误率把 5 分钟窗口的平均值拉过了 1%,告警就响了。它响得没错,但响得没有意义——按我们那个月剩下的错误额度算,这几十个请求连零点几个百分点都不到。
2026-10-17 17:08:37
319
原创 服务器被入侵过一次之后,我把安全巡检做成了每天自动跑:Lynis + CIS 基线 + AIDE 完整性 + auditd 审计实战
上一篇写完那台新加坡机器被种挖矿木马的复盘之后,我在文末留了一句“后面要把安全巡检做成常态”。这篇就是兑现。先说清楚为什么非得自动化。上次入侵之后我干的第一件事是手动巡检一遍——照着加固清单一条条敲命令看:SSH 配置、防火墙、密码策略、sudoers、定时任务、可执行文件权限……大概花了一个下午。当时觉得挺踏实,毕竟全都查过了。问题出在两个星期后。我另一台机器要上一个新服务,装了个第三方的一键脚本,那个脚本会顺手改几个系统配置。改完之后没人知道它改了什么,我也没再去查——因为“上周不是刚巡检过吗”。
2026-10-16 18:08:59
183
原创 服务器被入侵后怎么排查?从 CPU 告警到后门清理的完整应急响应记录
那天下午四点多,监控面板开始给我发告警:一台跑着对外服务的新加坡机器,CPU 使用率从平时不到 5% 一路飙到 97%,持续了十几分钟没下来。第一反应是业务出了什么问题——是不是某个接口被人刷了、是不是数据库查询炸了。登上去敲了top,结果看到一个叫kthreaddi的进程占着接近满核的 CPU,进程名看着像内核线程(kthreadd那一类),但路径是/tmp下的一个随机文件名。不是业务问题,是被种了挖矿木马。我第一件事是没有直接 kill 它。
2026-10-16 18:02:07
189
原创 从手动调到 Git 托管:KEDA 伸缩配置纳入 GitOps 与“缩到零“冷启动体验压测实战
第二十九篇把 GPU 推理服务从“固定副本”改成了“按队列长度伸缩”,KEDA 配好之后确实好用了:没人用的时候副本缩到零,显存释放出来;队列一堆积,几十秒内自动拉起第二个副本。但用了一段时间,我发现两件别扭的事。第一件是配置漂了。当时那个是我在集群里上去的,中间调阈值、改、加了个fallback,都是在命令行上改的。过了一个月我想看看“现在到底配的是什么值”,结果 Git 仓库里那份 YAML 还停在最初的版本——集群里的真相和 Git 里的记录对不上。
2026-10-15 19:42:44
301
原创 从一张整卡到多份配额:Kubernetes 里 GPU 的调度、共享与隔离实战(Device Plugin、时间切片、MPS、MIG、DRA)
把 GPU 节点接进来”。当时只是把节点加进集群、确认能被调度器看见,就收笔了。因为真正麻烦的东西在后头——卡只有一张,想用的人有三个。我自己要跑一个常驻的小推理服务;同事要偶尔上去调个模型、跑几组对比实验;还有一个定时任务,一周跑一次微调,跑完就闲着。按最朴素的玩法,谁先用谁独占,其他人排队。推理服务平时利用率也就百分之十几,剩下百分之八十几的算力在那儿趴着;而同事和我又都在等。一张几万块的卡,被当成“只能用一个人的独占设备”。
2026-10-15 13:49:53
244
原创 从手动续期到全自动 HTTPS:cert-manager + Let‘s Encrypt 自动签发与续期证书实战
事情是这样来的。用 k3s 把自己的几个服务编排起来之后,我以为 HTTPS 这块已经不是问题了——之前用 Nginx 的时候,certbot加个定时任务就搞定了。结果换成集群之后发现两个新麻烦:第一个麻烦是证书得跟着 Ingress 走。以前一台机器上一个站点一张证书,路径都是固定的。现在服务在 Pod 里,前面还隔着 Ingress Controller,证书到底该放哪、怎么让 Ingress 用上,一开始我完全是懵的。第二个麻烦是数量变多了。以前一台机器一张证书,续期脚本写一条就够了。
2026-10-14 17:22:41
262
原创 从多机手工运维到容器编排:用 k3s 搭建轻量 Kubernetes 集群实战(安装、Ingress、存储、GPU 节点接入完整记录)
前面一段时间,我手里陆续攒了五六台机器:两台跑 Web,一台跑数据库,一台跑对象存储,一台跑监控,还有一台挂在角落里做各种实验。一开始都是手工维护,倒也没什么大问题——反正服务就那么几个。但机器一多,痛点就藏不住了。第一,加一个服务,就要动一串地方。想新上线一个小应用,我得先决定放哪台机器、然后去那台机器装依赖、改 Nginx 加个 server 块、去监控那边加个采集目标、再去备份脚本里加一条路径。这四五个地方只要漏了一个,过段时间就出问题。第二,环境不一致。
2026-10-14 17:06:10
308
原创 从单地域到多地域:自建 GeoDNS 实现就近接入与故障转移实战(BIND 9 视图 + GeoIP + 健康检查脚本)
上一篇把入口做成了双机热备,VIP 一漂移,单台机器宕机再也不会让全站失联。用户离服务器有多远。我遇到的真实情况是这样的——站点原本只放在香港,国内访问很舒服,首页 TTFB 四五十毫秒。但有段时间北美用户反馈打开很慢,我一开始以为是他们的网络问题,后来自己挂了台美西的机器去测,发现从那边连香港,一个请求的往返就要 200 毫秒以上,首屏加载比北美本地节点慢了五六倍。反过来也一样,把站点整个搬到美西,国内用户又慢回去了。这就是单地域的先天缺陷:物理距离摆在那里,绕不过去。
2026-10-13 21:47:08
213
原创 从单入口到双机热备:Nginx + Keepalived 高可用实战(VRRP 虚拟 IP 漂移 + 服务级探活 + 防脑裂)
负载均衡器自己也是单点。当时我用一台独立的机器跑 Nginx 做 upstream,后端挂了两台 Web 应用。压测数据确实好看,双机 + LB 之后 QPS 从单机的 1850 涨到了 4180。但那天晚上我盯着架构图看了很久,越看越不舒服——后端从一台变成了两台,可靠性上去了;可入口从"和 Web 同机"变成了"独立一台",单点故障的粒度其实一点没变。果不其然,没过多久就出事了。
2026-10-13 21:39:07
179
原创 服务器监控告警体系搭建实战:Prometheus + Grafana + Alertmanager 从零部署到邮件告警完整记录
前面几篇把服务器初始化、Web 环境、数据库、WordPress 调优、自动部署、对象存储备份都折腾了一遍。站点是稳了,数据也备份了,但心里还是有个不踏实的地方——机器到底健不健康,我全靠“打开网页能不能访问”来判断。CPU 悄悄跑满、磁盘一点点写满、内存慢慢被吃掉,我完全不知道,直到网站打不开才后知后觉;半夜出事没人知道,第二天早上起来发现站点挂了 8 小时;想回看“上周是不是有段时间负载很高”,一点历史数据都没有,全靠猜。搭一套属于自己的监控告警体系。
2026-10-12 16:26:33
211
原创 自建 S3 兼容对象存储实战:MinIO 部署、WordPress 媒体库分离、数据库异地自动备份完整记录
数据只有一个副本,全躺在那台服务器的/www目录里。服务器这东西,硬盘什么时候坏、机房哪天出状况、手滑rm -rf删错目录,都不是不可能的事。之前就吃过一次亏——误删了一个附件目录,只能翻三天的备份,丢了一周的上传文件,补得欲哭无泪。把媒体文件和数据库备份从服务器上“拆”出去,放到一个独立的、S3 兼容的对象存储里。为什么强调“S3 兼容”?因为一旦接口标准了,以后想换存储、想上云、想多副本,都只是改个地址的事,不用动业务代码。
2026-10-12 16:12:43
150
原创 MySQL 8.0 安装配置与性能优化实战,小内存服务器调优、慢查询分析、索引优化、自动备份完整记录
手上有个朋友的小项目,原来数据全部塞在一个 SQLite 文件里,访问量上来以后并发一高就锁表,查询慢得离谱。于是打算迁到 MySQL,找我要个“够用就行”的方案。服务器配置不高,2 核 2G 的小机器,预算有限,所以不能照搬网上那些“16G 内存起步”的调优模板——那些参数往小机器上一套,MySQL 直接 OOM 起不来。这篇文章就是记录我怎么在这么一台小内存机器上,把 MySQL 8.0 配得既稳又能扛住日常访问,从安装、安全初始化、参数调优、慢查询排查、索引优化到自动备份,一步不落。
2026-10-10 18:12:38
293
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅