漏洞修复与索引优化:搜索引擎性能提升实战
|
去年三月十二号,凌晨三点二十,我正蹲在机房门口啃冷掉的葱油饼,手电筒光晃着UPS机柜上那道胶布——上周贴的,遮住漏电的指示灯,说等备件。突然手机震,是监控告警群跳出来三条红字:disk_full / elasticsearch_unavailable / nginx_502。我没点开,直接把饼塞回塑料袋,饼渣掉在鞋带上。 电梯卡在负二,我爬消防梯上去,楼道灯坏了两盏,第三盏闪得像心跳监护仪。推开运维间门,满屋凉气混着泡面汤味儿,小王瘫在椅子上抠键盘缝,屏幕右下角时间跳到三点二十七,他头也不抬:“主节点磁盘爆了,查过,/data/elasticsearch/nodes/0/indices 下塞了七百多个叫 .security-7 的索引,全带时间戳后缀,最早的去年十月。” 我原以为是备份脚本没删快照,结果进去一扒日志,根本没备份任务跑过。再看 crontab,那行 sh /opt/es/backup.sh 被注释了——前天下午大刘改配置时顺手注释的,理由是“怕影响搜索延迟”。我嗓子发紧,没说话。窗外开始下雨,雨点砸在玻璃上不是滴答声,是噗噗噗,像谁在往窗上吐口水。 老板微信弹进来,就一行:“用户反馈搜不到订单,客服电话被打爆了,十分钟后开会。”后面跟了个燃烧的表情。我盯着那个火苗图标看了五秒,把它划掉了。转身摸出工单系统,发现昨天有条未关闭的工单,标题写着“ES集群索引生命周期策略失效”,创建人是实习生小李,处理人栏空着,状态是“已分配”,分配时间是上午十点零三分——而那天上午九点四十七分,我还在隔壁会议室听厂商讲新版本证书自动续期方案,讲到一半断网,他们调试 DNS 重定向,折腾了四十来分钟。 我重启 ES 服务。先 stop,等三十秒,确认 java 进程全退干净;再 ps -ef | grep es 看一眼,漏掉一个线程就重来;最后 start,看着它打完三行启动日志才敢去敲 curl -XGET 'localhost:9200/_cat/indices?v'。返回结果里,.security-7- 还在,只是都变红了。小王递来耳机,里面传来客服工位的录音循环播放:“您好,订单查询功能正在优化中……”声音干得像砂纸磨铁皮。
文章配图,仅供参考 磁盘确实满了,但没满死——/data 还剩三百兆。够写一个日志,不够写一个 segment 文件。可 ES 不认这个账,它看见 99.98% 就判定自己濒危。我手动删了三个最老的 .security-7 索引,用的是 delete by name,不是 shrink,更不是 rollover。删完 df -h,数字跳成 99.96%,ES 还是红的。小王忽然说:“要不,试试强制刷新?curl -XPOST 'localhost:9200/_flush'?”我摆摆手,这招我去年七月在测试环境试过,刷完集群直接脑死亡,重装都救不回来。 后来是张工提的:别动数据,动配置。他在 /etc/elasticsearch/elasticsearch.yml 里把 cluster.routing.allocation.disk.threshold_enabled 设成 false,加了一行 disk.watermark.flood_stage.ignore:true。改完 reload,ES 吐了口浊气,status 变黄,十五分钟后变绿。没丢数据,没宕太久,没动核心逻辑——就是把“不能干活”的规则临时掰弯了点儿。 其实这事早露过苗头。上个月迁移测试集群,DBA 把旧 ES 的 _settings 一股脑导过去,结果新集群里多出来十几个废弃模板,全带 .old 后缀,压根没人清理。我们当时还笑,说“留着当纪念”,现在想,那哪是纪念,是墓碑。 中间有段空档,我坐在值班室沙发上闭眼,听见隔壁房间有人喊孩子名字:“林远!作业写完没有!”——是新来的运维姑娘,她孩子六岁,去年搬家,箱子上写着“教具—小学一年级”,结果拆箱时发现全是她自己考软考的复习资料。我忽然记起自己第一次配 ELK,也是拿个错版 Logstash 配置跑了三天,最后发现 filter{} 块里少了个 },日志全堵在内存里,像便秘。 漏洞修复不是补洞,是给整面墙重新抹灰。索引优化不是调参数,是亲手撕掉三十年前钉进墙里的、早该朽烂的木楔子。优胜劣汰?对,但淘汰的从来不是代码,是那些“反正能跑”“先上线再说”“下次再清”的念头——它们比 .security-7 更顽固,比磁盘满更难预警,比老板的燃烧表情更让人头皮发麻。 凌晨五点,我把删掉的三个索引路径抄下来,发给小李:“这仨,下周拉个清单,挨个查为什么还活着。”她回了个OK,后面跟了个猫头鹰emoji。我盯着那个圆眼睛看了一会儿,忽然想起上周五机房巡检,空调外机滴水,滴在机柜散热口边缘,积了浅浅一层水膜,映着顶灯,亮得瘆人。 明天先把告警阈值调了。磁盘 97% 就发严重,不等它喘气。别的事,等天亮再说。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


