开发技术记录 开发技术记录

热度:

编号:216206

分类:编程开发

加入:2026-04-13 04:35:34

点入:2026-04-13 04:35:38

备案:-

名称:-

SEO更新时间
2026-04-13T04:35:50

百度权重:百度权重0
百度移动:百度移动0
360 权重:360权重0
搜狗权重:搜狗权重0
开发技术记录
访问网站

https://www.841220.xyz

举报/报错
网站标签

该站未曾设置keywords

网站描述

该站未曾设置description

上一篇:有点迷惘

下一篇:苏州迈迪链信息技术有限公司

Seo综合信息
SEO信息: 百度来访IP:- | 移动端来访IP:- | 出站链接:0 | 站内链接:0
IP网速: IP地址:- 地址:- | 网速:969毫秒
ALEXA排名: 世界排名:- | 预估IP:- | 预估PV:-
备案信息: - | 名称:- | 已创建:未知
收录 百度 360 搜狗 谷歌
查询 0 0 0 0
电脑关键词 手机关键词 页面友好 首页位置 索引 近期收录
0 0 电脑端优秀 - 0 0
服务器信息 协议类型 - 页面类型 - 服务器类型 - 程序支持 - 连接标识 - 消息发送 - GZIP检测 - 源文件大小 - 压缩后大小 - 压缩率 -
网站快照

开 发 技 术 记 录 开 发 技 术 记 录 H o m e A r c h i v e s  2 0 2 5 0 5 2 8 D a t a b a s e O p t i m i z a t i o n 数 据 库 索 引 设 计 的 几 个 误 区 数 据 库 索 引 设 计 的 几 个 误 区 索 引 是 数 据 库 性 能 优 化 的 利 器 , 但 我 在 项 目 中 见 过 太 多 因 为 索 引 设 计 不 当 导 致 的 性 能 问 题 。 从 过 度 索 引 导 致 写 入 性 能 下 降 , 到 索 引 失 效 引 起 慢 查 询 , 这 些 坑 都 踩 过 。 今 天 总 结 几 个 常 见 的 索 引 设 计 误 区 。 误 区 一 : 索 引 越 多 越 好 常 见 错 误 做 法 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 为 每 个 字 段 都 建 索 引 C R E A T E T A B L E u s e r _ o r d e r s ( i d B I G I N T P R I M A R Y K E Y , u s e r _ i d B I G I N T , o r d e r _ n o V A R C H A R ( 3 2 ) , p r o d u c t _ i d B I G I N T , q u a n t i t y I N T , p r i c e D E C I M A L ( 1 0 , 2 ) , s t a t u s T I N Y I N T , c r e a t e d _ a t T I M E S T A M P , u p d a t e d _ a t T I M E S T A M P , 错 误 : 为 每 个 可 能 查 询 的 字 段 都 建 索 引 K E Y i d x _ u s e r _ i d ( u s e r _ i d ) , K E Y i d x _ o r d e r _ n o ( o r d e r _ n o ) , K E Y i d x _ p r o d u c t _ i d ( p r o d u c t _ i d ) , K E Y i d x _ q u a n t i t y ( q u a n t i t y ) , K E Y i d x _ p r i c e ( p r i c e ) , K E Y i d x _ s t a t u s ( s t a t u s ) , K E Y i d x _ c r e a t e d _ a t ( c r e a t e d _ a t ) , K E Y i d x _ u p d a t e d _ a t ( u p d a t e d _ a t ) ) ; 问 题 分 析 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 # 查 看 表 的 索 引 情 况 S H O W I N D E X F R O M u s e r _ o r d e r s ; # 查 看 表 的 存 储 开 销 S E L E C T t a b l e _ n a m e , R O U N D ( ( d a t a _ l e n g t h + i n d e x _ l e n g t h ) / 1 0 2 4 / 1 0 2 4 , 2 ) A S t a b l e _ s i z e _ m b , R O U N D ( i n d e x _ l e n g t h / 1 0 2 4 / 1 0 2 4 , 2 ) A S i n d e x _ s i z e _ m b , R O U N D ( i n d e x _ l e n g t h / ( d a t a _ l e n g t h + i n d e x _ l e n g t h ) * 1 0 0 , 2 ) A S i n d e x _ r a t i o F R O M i n f o r m a t i o n _ s c h e m a . t a b l e s W H E R E t a b l e _ n a m e = u s e r _ o r d e r s ; 结 果 可 能 显 示 : 索 引 大 小 占 表 总 大 小 的 6 0 % 以 上 正 确 的 做 法 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 根 据 实 际 查 询 模 式 设 计 复 合 索 引 C R E A T E T A B L E u s e r _ o r d e r s ( i d B I G I N T P R I M A R Y K E Y , u s e r _ i d B I G I N T , o r d e r _ n o V A R C H A R ( 3 2 ) , p r o d u c t _ i d B I G I N T , q u a n t i t y I N T , p r i c e D E C I M A L ( 1 0 , 2 ) , s t a t u s T I N Y I N T , c r e a t e d _ a t T I M E S T A M P , u p d a t e d _ a t T I M E S T A M P , 根 据 查 询 模 式 设 计 复 合 索 引 U N I Q U E K E Y u k _ o r d e r _ n o ( o r d e r _ n o ) , 订 单 号 唯 一 查 询 K E Y i d x _ u s e r _ s t a t u s _ c r e a t e d ( u s e r _ i d , s t a t u s , c r e a t e d _ a t D E S C ) , 用 户 订 单 查 询 K E Y i d x _ p r o d u c t _ c r e a t e d ( p r o d u c t _ i d , c r e a t e d _ a t D E S C ) , 商 品 销 售 查 询 K E Y i d x _ s t a t u s _ c r e a t e d ( s t a t u s , c r e a t e d _ a t D E S C ) 订 单 状 态 查 询 ) ; 误 区 二 : 复 合 索 引 字 段 顺 序 随 意 错 误 的 索 引 设 计 1 2 3 4 5 6 7 查 询 模 式 分 析 Q 1 : S E L E C T * F R O M o r d e r s W H E R E u s e r _ i d = ? A N D s t a t u s = ? O R D E R B Y c r e a t e d _ a t D E S C Q 2 : S E L E C T * F R O M o r d e r s W H E R E s t a t u s = ? A N D c r e a t e d _ a t > ? Q 3 : S E L E C T * F R O M o r d e r s W H E R E u s e r _ i d = ? O R D E R B Y c r e a t e d _ a t D E S C 错 误 的 索 引 顺 序 K E Y i d x _ w r o n g ( c r e a t e d _ a t , s t a t u s , u s e r _ i d ) 无 法 有 效 支 持 上 述 查 询 字 段 顺 序 原 则 1 2 3 4 5 6 7 正 确 的 索 引 设 计 原 则 : 1 . 等 值 查 询 字 段 放 在 前 面 2 . 范 围 查 询 字 段 放 在 中 间 3 . 排 序 字 段 放 在 最 后 K E Y i d x _ u s e r _ s t a t u s _ c r e a t e d ( u s e r _ i d , s t a t u s , c r e a t e d _ a t D E S C ) , 支 持 Q 1 和 Q 3 K E Y i d x _ s t a t u s _ c r e a t e d ( s t a t u s , c r e a t e d _ a t D E S C ) 支 持 Q 2 实 战 案 例 : 订 单 查 询 优 化 问 题 S Q L : 1 2 3 4 5 6 7 8 慢 查 询 : 耗 时 2 . 3 秒 S E L E C T * F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s I N ( 1 , 2 , 3 ) O R D E R B Y c r e a t e d _ a t D E S C L I M I T 2 0 ; 原 索 引 设 计 K E Y i d x _ o l d ( c r e a t e d _ a t , u s e r _ i d , s t a t u s ) 错 误 的 字 段 顺 序 分 析 执 行 计 划 : 1 2 3 4 5 6 7 8 9 E X P L A I N S E L E C T * F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s I N ( 1 , 2 , 3 ) O R D E R B Y c r e a t e d _ a t D E S C L I M I T 2 0 \ \ G 结 果 显 示 : k e y : i d x _ o l d r o w s : 5 0 0 0 0 0 ( 需 要 扫 描 5 0 万 行 ) E x t r a : U s i n g w h e r e ; U s i n g f i l e s o r t ( 需 要 额 外 排 序 ) 优 化 后 : 1 2 3 4 5 6 7 正 确 的 索 引 顺 序 K E Y i d x _ n e w ( u s e r _ i d , s t a t u s , c r e a t e d _ a t D E S C ) 执 行 计 划 改 善 : r o w s : 2 0 E x t r a : U s i n g w h e r e ( 利 用 索 引 , 无 需 排 序 ) 查 询 时 间 : 1 5 m s 误 区 三 : 忽 略 索 引 覆 盖 低 效 的 查 询 方 式 1 2 3 4 5 6 7 原 始 查 询 : 需 要 回 表 S E L E C T i d , o r d e r _ n o , s t a t u s , c r e a t e d _ a t F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s = 1 ; 当 前 索 引 K E Y i d x _ u s e r _ s t a t u s ( u s e r _ i d , s t a t u s ) 覆 盖 索 引 优 化 1 2 3 4 5 6 7 8 9 1 0 优 化 后 的 索 引 : 包 含 查 询 所 需 的 所 有 字 段 K E Y i d x _ u s e r _ s t a t u s _ c o v e r ( u s e r _ i d , s t a t u s , o r d e r _ n o , c r e a t e d _ a t ) 执 行 计 划 对 比 E X P L A I N S E L E C T i d , o r d e r _ n o , s t a t u s , c r e a t e d _ a t F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s = 1 \ \ G 优 化 前 : E x t r a : N U L L ( 需 要 回 表 ) 优 化 后 : E x t r a : U s i n g i n d e x ( 覆 盖 索 引 , 无 需 回 表 ) 实 际 性 能 对 比 1 2 3 4 5 6 7 8 9 性 能 测 试 脚 本 S E T @ s t a r t _ t i m e = N O W ( 6 ) ; S E L E C T i d , o r d e r _ n o , s t a t u s , c r e a t e d _ a t F R O M o r d e r s W H E R E u s e r _ i d I N ( 1 0 0 0 , 2 0 0 0 , 3 0 0 0 , 4 0 0 0 , 5 0 0 0 ) A N D s t a t u s = 1 ; S E L E C T T I M E S T A M P D I F F ( M I C R O S E C O N D , @ s t a r t _ t i m e , N O W ( 6 ) ) / 1 0 0 0 A S e x e c u t i o n _ t i m e _ m s ; 优 化 前 : 2 5 0 m s 优 化 后 : 4 5 m s ( 性 能 提 升 5 倍 ) 误 区 四 : 前 缀 索 引 使 用 不 当 错 误 的 前 缀 索 引 长 度 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 对 于 较 长 的 字 符 串 字 段 C R E A T E T A B L E u s e r _ p r o f i l e s ( i d B I G I N T P R I M A R Y K E Y , e m a i l V A R C H A R ( 1 2 8 ) , d e s c r i p t i o n T E X T , a v a t a r _ u r l V A R C H A R ( 5 1 2 ) ) ; 错 误 : 前 缀 太 短 , 区 分 度 不 够 K E Y i d x _ e m a i l _ s h o r t ( e m a i l ( 5 ) ) 区 分 度 可 能 很 低 错 误 : 前 缀 太 长 , 浪 费 空 间 K E Y i d x _ e m a i l _ l o n g ( e m a i l ( 1 0 0 ) ) 大 部 分 e m a i l 不 会 这 么 长 计 算 最 优 前 缀 长 度 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 分 析 字 符 串 分 布 , 确 定 最 优 前 缀 长 度 S E L E C T L E N G T H ( e m a i l ) a s e m a i l _ l e n g t h , C O U N T ( * ) a s c o u n t F R O M u s e r _ p r o f i l e s G R O U P B Y L E N G T H ( e m a i l ) O R D E R B Y e m a i l _ l e n g t h ; 计 算 不 同 前 缀 长 度 的 区 分 度 S E L E C T C O U N T ( D I S T I N C T L E F T ( e m a i l , 5 ) ) / C O U N T ( * ) A S s e l e c t i v i t y _ 5 , C O U N T ( D I S T I N C T L E F T ( e m a i l , 1 0 ) ) / C O U N T ( * ) A S s e l e c t i v i t y _ 1 0 , C O U N T ( D I S T I N C T L E F T ( e m a i l , 1 5 ) ) / C O U N T ( * ) A S s e l e c t i v i t y _ 1 5 , C O U N T ( D I S T I N C T L E F T ( e m a i l , 2 0 ) ) / C O U N T ( * ) A S s e l e c t i v i t y _ 2 0 F R O M u s e r _ p r o f i l e s ; 选 择 区 分 度 达 到 0 . 9 5 以 上 的 最 短 长 度 结 果 显 示 1 5 个 字 符 就 能 达 到 0 . 9 8 的 区 分 度 K E Y i d x _ e m a i l _ o p t i m a l ( e m a i l ( 1 5 ) ) 误 区 五 : 忽 略 索 引 维 护 未 及 时 删 除 无 用 索 引 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 分 析 索 引 使 用 情 况 S E L E C T s . t a b l e _ s c h e m a , s . t a b l e _ n a m e , s . i n d e x _ n a m e , s . s e q _ i n _ i n d e x , s . c o l u m n _ n a m e , t . t a b l e _ r o w s , I F N U L L ( s t . r o w s _ r e a d , 0 ) a s r o w s _ r e a d F R O M i n f o r m a t i o n _ s c h e m a . s t a t i s t i c s s L E F T J O I N i n f o r m a t i o n _ s c h e m a . t a b l e s t O N s . t a b l e _ s c h e m a = t . t a b l e _ s c h e m a A N D s . t a b l e _ n a m e = t . t a b l e _ n a m e L E F T J O I N s y s . s c h e m a _ i n d e x _ s t a t i s t i c s s t O N s . t a b l e _ s c h e m a = s t . t a b l e _ s c h e m a A N D s . t a b l e _ n a m e = s t . t a b l e _ n a m e A N D s . i n d e x _ n a m e = s t . i n d e x _ n a m e W H E R E s . t a b l e _ s c h e m a = y o u r _ d a t a b a s e O R D E R B Y s t . r o w s _ r e a d D E S C ; 找 出 从 未 使 用 的 索 引 S E L E C T D I S T I N C T o b j e c t _ s c h e m a , o b j e c t _ n a m e , i n d e x _ n a m e F R O M p e r f o r m a n c e _ s c h e m a . t a b l e _ i o _ w a i t s _ s u m m a r y _ b y _ i n d e x _ u s a g e W H E R E i n d e x _ n a m e I S N O T N U L L A N D c o u n t _ s t a r = 0 A N D o b j e c t _ s c h e m a = y o u r _ d a t a b a s e ; 定 期 索 引 维 护 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 重 建 索 引 以 消 除 碎 片 A L T E R T A B L E l a r g e _ t a b l e E N G I N E = I n n o D B ; 或 者 针 对 特 定 索 引 D R O P I N D E X i d x _ n a m e O N t a b l e _ n a m e ; C R E A T E I N D E X i d x _ n a m e O N t a b l e _ n a m e ( c o l u m n _ n a m e ) ; 分 析 索 引 碎 片 情 况 S E L E C T t a b l e _ n a m e , i n d e x _ n a m e , s t a t _ n a m e , s t a t _ v a l u e , s t a t _ d e s c r i p t i o n F R O M m y s q l . i n n o d b _ i n d e x _ s t a t s W H E R E t a b l e _ n a m e = y o u r _ t a b l e A N D s t a t _ n a m e = s i z e ; 误 区 六 : 在 小 表 上 建 过 多 索 引 小 表 索 引 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 对 于 小 表 ( 错 误 做 法 C R E A T E T A B L E c o n f i g _ s e t t i n g s ( i d I N T P R I M A R Y K E Y , s e t t i n g _ k e y V A R C H A R ( 5 0 ) , s e t t i n g _ v a l u e T E X T , c r e a t e d _ a t T I M E S T A M P , 没 必 要 的 索 引 K E Y i d x _ k e y ( s e t t i n g _ k e y ) , 表 只 有 几 十 行 数 据 K E Y i d x _ c r e a t e d ( c r e a t e d _ a t ) 全 表 扫 描 更 快 ) ; 正 确 做 法 : 只 保 留 必 要 的 唯 一 索 引 C R E A T E T A B L E c o n f i g _ s e t t i n g s ( i d I N T P R I M A R Y K E Y , s e t t i n g _ k e y V A R C H A R ( 5 0 ) U N I Q U E , 业 务 唯 一 性 要 求 s e t t i n g _ v a l u e T E X T , c r e a t e d _ a t T I M E S T A M P ) ; 索 引 设 计 最 佳 实 践 设 计 检 查 清 单 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 . 分 析 查 询 模 式 E X P L A I N S E L E C T . . . ; 检 查 每 个 重 要 查 询 的 执 行 计 划 2 . 监 控 慢 查 询 日 志 S E T s l o w _ q u e r y _ l o g = O N ; S E T l o n g _ q u e r y _ t i m e = 1 ; 记 录 超 过 1 秒 的 查 询 3 . 定 期 分 析 索 引 使 用 情 况 S E L E C T * F R O M s y s . s c h e m a _ u n u s e d _ i n d e x e s W H E R E o b j e c t _ s c h e m a = y o u r _ d b ; 4 . 监 控 索 引 大 小 和 维 护 成 本 S E L E C T t a b l e _ n a m e , R O U N D ( ( d a t a _ l e n g t h + i n d e x _ l e n g t h ) / 1 0 2 4 / 1 0 2 4 , 2 ) A S t o t a l _ s i z e _ m b , R O U N D ( i n d e x _ l e n g t h / 1 0 2 4 / 1 0 2 4 , 2 ) A S i n d e x _ s i z e _ m b , R O U N D ( i n d e x _ l e n g t h / ( d a t a _ l e n g t h + i n d e x _ l e n g t h ) * 1 0 0 , 2 ) A S i n d e x _ r a t i o F R O M i n f o r m a t i o n _ s c h e m a . t a b l e s W H E R E t a b l e _ s c h e m a = y o u r _ d a t a b a s e O R D E R B Y i n d e x _ s i z e _ m b D E S C ; 自 动 化 监 控 脚 本 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 # ! / b i n / b a s h # i n d e x _ h e a l t h _ c h e c k . s h D B _ N A M E = y o u r _ d a t a b a s e M Y S Q L _ C M D = m y s q l u $ U S E R p $ P A S S e c h o = = = 索 引 健 康 度 检 查 = = = # 1 . 检 查 未 使 用 的 索 引 e c h o 未 使 用 的 索 引 : $ M Y S Q L _ C M D e S E L E C T D I S T I N C T o b j e c t _ s c h e m a , o b j e c t _ n a m e , i n d e x _ n a m e F R O M p e r f o r m a n c e _ s c h e m a . t a b l e _ i o _ w a i t s _ s u m m a r y _ b y _ i n d e x _ u s a g e W H E R E i n d e x _ n a m e I S N O T N U L L A N D c o u n t _ s t a r = 0 A N D o b j e c t _ s c h e m a = $ D B _ N A M E ; # 2 . 检 查 重 复 索 引 e c h o 可 能 重 复 的 索 引 : $ M Y S Q L _ C M D e S E L E C T s 1 . t a b l e _ n a m e , s 1 . i n d e x _ n a m e A S i n d e x 1 , s 2 . i n d e x _ n a m e A S i n d e x 2 , s 1 . c o l u m n _ n a m e F R O M i n f o r m a t i o n _ s c h e m a . s t a t i s t i c s s 1 J O I N i n f o r m a t i o n _ s c h e m a . s t a t i s t i c s s 2 O N s 1 . t a b l e _ s c h e m a = s 2 . t a b l e _ s c h e m a A N D s 1 . t a b l e _ n a m e = s 2 . t a b l e _ n a m e A N D s 1 . c o l u m n _ n a m e = s 2 . c o l u m n _ n a m e A N D s 1 . i n d e x _ n a m e W H E R E s 1 . t a b l e _ s c h e m a = $ D B _ N A M E ; # 3 . 检 查 大 表 缺 失 索 引 的 情 况 e c h o 大 表 可 能 缺 失 的 索 引 : $ M Y S Q L _ C M D e S E L E C T t a b l e _ n a m e , t a b l e _ r o w s , R O U N D ( ( d a t a _ l e n g t h + i n d e x _ l e n g t h ) / 1 0 2 4 / 1 0 2 4 , 2 ) A S s i z e _ m b F R O M i n f o r m a t i o n _ s c h e m a . t a b l e s W H E R E t a b l e _ s c h e m a = $ D B _ N A M E A N D t a b l e _ r o w s > 1 0 0 0 0 0 A N D t a b l e _ n a m e N O T I N ( S E L E C T D I S T I N C T t a b l e _ n a m e F R O M i n f o r m a t i o n _ s c h e m a . s t a t i s t i c s W H E R E t a b l e _ s c h e m a = $ D B _ N A M E ) ; 索 引 设 计 需 要 在 查 询 性 能 和 维 护 成 本 之 间 找 到 平 衡 。 避 免 这 些 常 见 误 区 , 建 立 合 适 的 监 控 和 维 护 机 制 , 是 保 证 数 据 库 长 期 稳 定 运 行 的 关 键 。 记 住 : 好 的 索 引 设 计 来 自 于 对 业 务 查 询 模 式 的 深 度 理 解 。 D a t a b a s e I n d e x M y S Q L P e r f o r m a n c e S Q L O p t i m i z a t i o n 2 0 2 5 0 2 1 4 C o n t a i n e r T e c h n o l o g y D o c k e r 容 器 资 源 限 制 最 佳 实 践 D o c k e r 容 器 资 源 限 制 最 佳 实 践 在 生 产 环 境 运 行 容 器 时 , 合 理 的 资 源 限 制 是 保 障 系 统 稳 定 性 的 关 键 。 我 在 容 器 化 改 造 项 目 中 踩 过 不 少 坑 , 从 O O M K i l l 到 C P U t h r o t t l i n g , 积 累 了 一 些 实 用 的 经 验 。 内 存 限 制 策 略 基 础 内 存 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # d o c k e r c o m p o s e . y m l v e r s i o n : 3 . 8 s e r v i c e s : w e b a p p : i m a g e : m y a p p : l a t e s t d e p l o y : r e s o u r c e s : l i m i t s : m e m o r y : 5 1 2 M # 硬 限 制 r e s e r v a t i o n s : m e m o r y : 2 5 6 M # 预 留 内 存 m e m _ s w a p p i n e s s : 0 # 禁 用 s w a p 应 用 内 存 评 估 方 法 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # 1 . 运 行 容 器 并 监 控 内 存 使 用 d o c k e r r u n d n a m e m y a p p t e s t m y a p p : l a t e s t d o c k e r s t a t s m y a p p t e s t n o s t r e a m # 2 . 分 析 内 存 增 长 趋 势 f o r i i n ; d o d o c k e r s t a t s m y a p p t e s t n o s t r e a m f o r m a t t a b l e } | t a i l 1 s l e e p 6 0 d o n e # 3 . 进 行 压 力 测 试 a b n 1 0 0 0 0 c 1 0 0 h t t p : / / l o c a l h o s t : 8 0 8 0 / a p i / u s e r s 实 战 案 例 : J a v a 应 用 内 存 调 优 问 题 : J a v a 应 用 容 器 频 繁 被 O O M K i l l 分 析 过 程 : 1 2 3 4 5 6 # 查 看 O O M 事 件 d m e s g | g r e p i k i l l e d p r o c e s s # j a v a i n v o k e d o o m k i l l e r : g f p _ m a s k = 0 x 1 4 0 0 0 c 0 , o r d e r = 0 # 检 查 容 器 内 存 使 用 d o c k e r e x e c m y a p p j a v a j m a p h i s t o 1 | h e a d 2 0 解 决 方 案 : 1 2 3 4 5 6 7 8 9 1 0 F R O M o p e n j d k : 1 1 j r e s l i m # 设 置 J V M 参 数 , 限 制 堆 内 存 为 容 器 限 制 的 7 0 % E N V J A V A _ O P T S = X m s 2 5 6 m X m x 3 5 8 m X X : + U s e G 1 G C X X : M a x G C P a u s e M i l l i s = 2 0 0 # 启 用 容 器 感 知 E N V J A V A _ O P T S = $ J A V A _ O P T S X X : + U s e C o n t a i n e r S u p p o r t X X : M a x R A M P e r c e n t a g e = 7 0 . 0 C O P Y a p p . j a r / a p p . j a r E N T R Y P O I N T [ s h , c , j a v a $ J A V A _ O P T S j a r / a p p . j a r ] C P U 限 制 与 调 度 C P U 资 源 配 置 1 2 3 4 5 6 7 8 9 1 0 s e r v i c e s : c o m p u t e a p p : i m a g e : c o m p u t e i n t e n s i v e : l a t e s t d e p l o y : r e s o u r c e s : l i m i t s : c p u s : 2 . 0 # 最 多 使 用 2 个 C P U r e s e r v a t i o n s : c p u s : 0 . 5 # 预 留 0 . 5 个 C P U c p u s e t : 0 , 1 # 绑 定 到 特 定 C P U 核 心 C P U t h r o t t l i n g 监 控 1 2 3 4 5 6 7 8 # 检 查 C P U t h r o t t l i n g 情 况 c a t / s y s / f s / c g r o u p / c p u / d o c k e r / [ c o n t a i n e r _ i d ] / c p u . s t a t # n r _ p e r i o d s : 周 期 数 # n r _ t h r o t t l e d : 被 限 制 的 周 期 数 # t h r o t t l e d _ t i m e : 总 的 被 限 制 时 间 # 计 算 t h r o t t l i n g 比 例 t h r o t t l i n g _ r a t i o = n r _ t h r o t t l e d / n r _ p e r i o d s * 1 0 0 % 实 战 案 例 : G o 服 务 C P U 优 化 问 题 现 象 : G o 服 务 响 应 时 间 抖 动 严 重 , P 9 9 延 迟 偶 尔 超 过 5 秒 排 查 发 现 : 1 2 3 4 # C P U 使 用 率 看 起 来 正 常 ( 5 0 % ) , 但 存 在 严 重 t h r o t t l i n g d o c k e r e x e c m y a p p c a t / s y s / f s / c g r o u p / c p u / c p u . s t a t # n r _ t h r o t t l e d : 5 0 0 0 0 # t h r o t t l e d _ t i m e : 1 8 0 0 0 0 0 0 0 0 0 0 # 3 分 钟 被 限 制 时 间 优 化 方 案 : 1 2 3 4 5 6 7 8 # 原 配 置 限 制 过 于 严 格 c p u _ q u o t a : 5 0 0 0 0 # 0 . 5 C P U c p u _ p e r i o d : 1 0 0 0 0 0 # 优 化 后 允 许 突 发 使 用 c p u _ q u o t a : 2 0 0 0 0 0 # 2 . 0 C P U c p u _ p e r i o d : 1 0 0 0 0 0 c p u s : 1 . 0 # 平 均 使 用 1 个 C P U 磁 盘 I O 限 制 存 储 配 置 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 s e r v i c e s : d a t a b a s e : i m a g e : p o s t g r e s : 1 3 d e p l o y : r e s o u r c e s : l i m i t s : m e m o r y : 2 G v o l u m e s : d b _ d a t a : / v a r / l i b / p o s t g r e s q l / d a t a d e v i c e _ r e a d _ b p s : / d e v / s d a : 5 0 m b # 读 取 限 制 5 0 M B / s d e v i c e _ w r i t e _ b p s : / d e v / s d a : 3 0 m b # 写 入 限 制 3 0 M B / s d e v i c e _ r e a d _ i o p s : / d e v / s d a : 3 0 0 0 # 读 取 I O P S 限 制 d e v i c e _ w r i t e _ i o p s : / d e v / s d a : 2 0 0 0 # 写 入 I O P S 限 制 I O 性 能 监 控 1 2 3 4 5 # 监 控 容 器 I O 使 用 情 况 d o c k e r e x e c m y a p p i o s t a t x 1 # 查 看 容 器 级 别 I O 统 计 c a t / s y s / f s / c g r o u p / b l k i o / d o c k e r / [ c o n t a i n e r _ i d ] / b l k i o . t h r o t t l e . i o _ s e r v i c e _ b y t e s 网 络 资 源 管 理 带 宽 限 制 1 2 3 4 5 # 使 用 t c ( t r a f f i c c o n t r o l ) 限 制 容 器 网 络 带 宽 # 限 制 容 器 网 络 接 口 带 宽 为 1 0 0 M b p s d o c k e r e x e c m y a p p t c q d i s c a d d d e v e t h 0 r o o t h a n d l e 1 : h t b d e f a u l t 1 2 d o c k e r e x e c m y a p p t c c l a s s a d d d e v e t h 0 p a r e n t 1 : c l a s s i d 1 : 1 h t b r a t e 1 0 0 m b i t d o c k e r e x e c m y a p p t c c l a s s a d d d e v e t h 0 p a r e n t 1 : 1 c l a s s i d 1 : 1 2 h t b r a t e 1 0 0 m b i t 连 接 数 限 制 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 s e r v i c e s : n g i n x : i m a g e : n g i n x : a l p i n e d e p l o y : r e s o u r c e s : l i m i t s : m e m o r y : 1 2 8 M s y s c t l s : n e t . c o r e . s o m a x c o n n = 6 5 5 3 5 # 增 加 连 接 队 列 n e t . i p v 4 . i p _ l o c a l _ p o r t _ r a n g e = 1 0 0 0 0 6 5 0 0 0 # 扩 大 端 口 范 围 u l i m i t s : n o f i l e : s o f t : 6 5 5 3 5 h a r d : 6 5 5 3 5 容 器 资 源 监 控 P r o m e t h e u s 指 标 收 集 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 # d o c k e r c o m p o s e m o n i t o r i n g . y m l v e r s i o n : 3 . 8 s e r v i c e s : c a d v i s o r : i m a g e : g c r . i o / c a d v i s o r / c a d v i s o r : l a t e s t c o n t a i n e r _ n a m e : c a d v i s o r p o r t s : 8 0 8 0 : 8 0 8 0 v o l u m e s : / : / r o o t f s : r o / v a r / r u n : / v a r / r u n : r o / s y s : / s y s : r o / v a r / l i b / d o c k e r / : / v a r / l i b / d o c k e r : r o c o m m a n d : h o u s e k e e p i n g _ i n t e r v a l = 1 0 s d o c k e r _ o n l y = t r u e 关 键 监 控 指 标 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 # 监 控 规 则 配 置 c o n t a i n e r _ m o n i t o r i n g : m e m o r y _ u s a g e : q u e r y : c o n t a i n e r _ m e m o r y _ u s a g e _ b y t e s / c o n t a i n e r _ s p e c _ m e m o r y _ l i m i t _ b y t e s t h r e s h o l d : 0 . 8 5 c p u _ t h r o t t l i n g : q u e r y : r a t e ( c o n t a i n e r _ c p u _ c f s _ t h r o t t l e d _ s e c o n d s _ t o t a l [ 5 m ] ) / r a t e ( c o n t a i n e r _ c p u _ c f s _ p e r i o d s _ t o t a l [ 5 m ] ) t h r e s h o l d : 0 . 1 o o m _ k i l l s : q u e r y : i n c r e a s e ( c o n t a i n e r _ o o m _ k i l l s _ t o t a l [ 5 m ] ) t h r e s h o l d : 0 资 源 限 制 测 试 内 存 压 力 测 试 1 2 3 4 5 # 使 用 s t r e s s 工 具 测 试 内 存 限 制 d o c k e r r u n r m i t m e m o r y = 1 0 0 m p r o g r i u m / s t r e s s \ \ v m 1 v m b y t e s 1 5 0 M v m h a n g 0 # 预 期 结 果 : 容 器 被 O O M K i l l C P U 压 力 测 试 1 2 3 4 5 # 测 试 C P U 限 制 d o c k e r r u n r m i t c p u s = 0 . 5 p r o g r i u m / s t r e s s \ \ c p u 2 t i m e o u t 6 0 s # 监 控 C P U 使 用 率 不 应 超 过 5 0 % 生 产 环 境 最 佳 实 践 资 源 配 额 模 板 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 # 小 型 服 务 ( A P I G a t e w a y , 配 置 中 心 ) s m a l l _ s e r v i c e _ t e m p l a t e : d o # 检 查 容 器 状 态 i f ! d o c k e r p s | g r e p q $ C O N T A I N E R _ N A M E ; t h e n e c h o C o n t a i n e r $ C O N T A I N E R _ N A M E i s n o t r u n n i n g , r e s t a r t i n g . . . d o c k e r c o m p o s e u p d $ C O N T A I N E R _ N A M E f i # 检 查 内 存 使 用 率 M E M O R Y _ U S A G E = $ ( d o c k e r s t a t s $ C O N T A I N E R _ N A M E n o s t r e a m f o r m a t t a b l e } | t a i l 1 | s e d s / % / / ) i f ( ( $ ( e c h o $ M E M O R Y _ U S A G E > $ M E M O R Y _ T H R E S H O L D | b c l ) ) ) ; t h e n e c h o H i g h m e m o r y u s a g e d e t e c t e d : $ % , r e s t a r t i n g c o n t a i n e r . . . d o c k e r c o m p o s e r e s t a r t $ C O N T A I N E R _ N A M E f i s l e e p 6 0 d o n e 合 理 的 容 器 资 源 限 制 不 是 一 次 性 设 置 就 完 事 的 , 需 要 根 据 应 用 特 点 和 业 务 负 载 持 续 调 优 。 记 住 : 宁 可 保 守 一 点 , 也 不 要 让 容 器 影 响 宿 主 机 的 稳 定 性 。 在 容 器 编 排 平 台 如 K u b e r n e t e s 中 , 这 些 实 践 同 样 适 用 , 只 是 配 置 语 法 略 有 不 同 。 C o n t a i n e r D e v O p s D o c k e r R e s o u r c e M a n a g e m e n t 2 0 2 4 1 2 0 5 W e b P e r f o r m a n c e N g i n x 反 向 代 理 的 性 能 优 化 N g i n x 反 向 代 理 的 性 能 优 化 N g i n x 作 为 反 向 代 理 在 我 们 的 架 构 中 承 担 着 重 要 角 色 。 从 单 机 几 千 Q P S 到 集 群 处 理 十 万 级 并 发 , 我 在 N g i n x 调 优 方 面 积 累 了 不 少 经 验 。 这 里 分 享 一 些 实 战 中 验 证 有 效 的 优 化 策 略 。 基 础 性 能 调 优 w o r k e r 进 程 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 # n g i n x . c o n f 核 心 配 置 u s e r n g i n x ; w o r k e r _ p r o c e s s e s a u t o ; # 自 动 设 置 为 C P U 核 心 数 # 绑 定 w o r k e r 进 程 到 特 定 C P U 核 心 w o r k e r _ c p u _ a f f i n i t y a u t o ; # 单 个 w o r k e r 的 最 大 连 接 数 e v e n t s # 文 件 句 柄 限 制 w o r k e r _ r l i m i t _ n o f i l e 1 0 0 0 0 0 ; 连 接 处 理 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 h t t p 反 向 代 理 优 化 u p s t r e a m 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 # 后 端 服 务 器 池 配 置 u p s t r e a m b a c k e n d _ p o o l s e r v e r } 实 战 案 例 : A P I 网 关 优 化 问 题 现 象 : 高 峰 期 A P I 响 应 时 间 P 9 9 超 过 3 秒 , N g i n x e r r o r l o g 出 现 大 量 u p s t r e a m t i m e o u t 分 析 过 程 : 1 2 3 4 5 6 7 8 9 # 1 . 查 看 N g i n x 状 态 c u r l h t t p : / / l o c a l h o s t / n g i n x _ s t a t u s # A c t i v e c o n n e c t i o n s : 1 5 0 0 0 # s e r v e r a c c e p t s h a n d l e d r e q u e s t s : 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 # R e a d i n g : 1 0 0 W r i t i n g : 2 0 0 W a i t i n g : 1 4 7 0 0 # 2 . 分 析 e r r o r l o g t a i l f / v a r / l o g / n g i n x / e r r o r . l o g | g r e p t i m e o u t # u p s t r e a m t i m e d o u t ( 1 1 0 : C o n n e c t i o n t i m e d o u t ) w h i l e c o n n e c t i n g t o u p s t r e a m 优 化 方 案 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 # 优 化 u p s t r e a m 配 置 u p s t r e a m a p i _ s e r v e r s # 优 化 p r o x y 配 置 l o c a t i o n / a p i / 效 果 : P 9 9 延 迟 降 到 5 0 0 m s , 错 误 率 从 5 % 降 到 0 . 1 % 缓 存 策 略 优 化 静 态 文 件 缓 存 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 # 静 态 资 源 缓 存 配 置 l o c a t i o n ~ * \ \ . ( j p g | j p e g | p n g | g i f | i c o | c s s | j s ) $ A P I 响 应 缓 存 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 # 设 置 缓 存 路 径 和 参 数 p r o x y _ c a c h e _ p a t h / v a r / c a c h e / n g i n x / a p i l e v e l s = 1 : 2 k e y s _ z o n e = a p i _ c a c h e : 1 0 0 m m a x _ s i z e = 1 0 g i n a c t i v e = 6 0 m u s e _ t e m p _ p a t h = o f f ; s e r v e r } 限 流 和 安 全 优 化 请 求 限 制 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 h t t p } } 安 全 头 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 s e r v e r # 过 滤 恶 意 请 求 l o c a t i o n ~ / \ \ . } 监 控 和 日 志 优 化 访 问 日 志 格 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # 自 定 义 日 志 格 式 l o g _ f o r m a t m a i n _ e x t $ r e m o t e _ a d d r $ r e m o t e _ u s e r [ $ t i m e _ l o c a l ] $ r e q u e s t $ s t a t u s $ b o d y _ b y t e s _ s e n t $ h t t p _ r e f e r e r $ h t t p _ u s e r _ a g e n t $ r e q u e s t _ t i m e $ u p s t r e a m _ r e s p o n s e _ t i m e $ u p s t r e a m _ a d d r $ u p s t r e a m _ s t a t u s ; # 应 用 日 志 格 式 a c c e s s _ l o g / v a r / l o g / n g i n x / a c c e s s . l o g m a i n _ e x t b u f f e r = 6 4 k f l u s h = 1 m ; # 错 误 日 志 e r r o r _ l o g / v a r / l o g / n g i n x / e r r o r . l o g w a r n ; 性 能 监 控 配 置 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 # 启 用 状 态 页 面 s e r v e r # 详 细 状 态 信 息 ( 需 要 n g i n x m o d u l e v t s ) l o c a t i o n / s t a t u s } 高 级 优 化 技 巧 S S L 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 s e r v e r 动 态 u p s t r e a m 1 2 3 4 5 6 7 8 9 1 0 1 1 # 使 用 n g i n x p l u s 或 第 三 方 模 块 实 现 动 态 u p s t r e a m u p s t r e a m d y n a m i c _ b a c k e n d 自 动 化 配 置 管 理 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 # ! / b i n / b a s h # n g i n x _ c o n f i g _ u p d a t e . s h 自 动 更 新 n g i n x 配 置 # 从 服 务 发 现 获 取 后 端 服 务 器 列 表 B A C K E N D _ S E R V E R S = $ ( c u r l s h t t p : / / c o n s u l : 8 5 0 0 / v 1 / h e a l t h / s e r v i c e / a p i s e r v e r | j q r . [ ] | s e l e c t ( . C h e c k s [ ] . S t a t u s = = p a s s i n g ) | . S e r v i c e . A d d r e s s + : + ( . S e r v i c e . P o r t | t o s t r i n g ) ) # 生 成 新 的 u p s t r e a m 配 置 c a t > / e t c / n g i n x / c o n f . d / u p s t r e a m . c o n f E O F u p s t r e a m b a c k e n d _ p o o l > > / e t c / n g i n x / c o n f . d / u p s t r e a m . c o n f # 测 试 配 置 并 重 载 i f n g i n x t ; t h e n n g i n x s r e l o a d e c h o N g i n x c o n f i g u r a t i o n u p d a t e d s u c c e s s f u l l y e l s e e c h o N g i n x c o n f i g u r a t i o n t e s t f a i l e d e x i t 1 f i 性 能 测 试 验 证 基 准 测 试 脚 本 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 # ! / b i n / b a s h # n g i n x _ b e n c h m a r k . s h U R L = h t t p : / / l o c a l h o s t / a p i / t e s t C O N C U R R E N C Y = 1 0 0 R E Q U E S T S = 1 0 0 0 0 e c h o T e s t i n g N g i n x p e r f o r m a n c e . . . # 使 用 a b 进 行 测 试 a b n $ R E Q U E S T S c $ C O N C U R R E N C Y k $ U R L # 使 用 w r k 进 行 测 试 w r k t 1 2 c 4 0 0 d 3 0 s l a t e n c y $ U R L # 监 控 N g i n x 状 态 w h i l e t r u e ; d o c u r l s h t t p : / / l o c a l h o s t / n g i n x _ s t a t u s s l e e p 5 d o n e 通 过 系 统 性 的 性 能 优 化 , N g i n x 反 向 代 理 可 以 轻 松 处 理 数 万 并 发 连 接 。 关 键 是 要 根 据 实 际 业 务 场 景 调 整 配 置 参 数 , 并 建 立 完 善 的 监 控 体 系 来 持 续 优 化 。 记 住 , 优 化 是 一 个 迭 代 的 过 程 , 需 要 不 断 测 试 和 调 整 。 N g i n x P e r f o r m a n c e R e v e r s e P r o x y W e b S e r v e r 2 0 2 4 0 9 1 8 P e r f o r m a n c e O p t i m i z a t i o n G o 程 序 的 性 能 P r o f i l i n g 实 践 G o 程 序 的 性 能 P r o f i l i n g 实 践 G o 语 言 内 置 了 强 大 的 性 能 分 析 工 具 p p r o f , 在 我 的 日 常 开 发 中 经 常 用 来 排 查 性 能 问 题 。 从 C P U 密 集 型 任 务 优 化 到 内 存 泄 漏 排 查 , p p r o f 都 能 提 供 有 价 值 的 洞 察 。 p p r o f 基 础 使 用 启 用 p p r o f 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 i m p o r t ( _ n e t / h t t p / p p r o f n e t / h t t p l o g ) f u n c m a i n ( ) ( ) / / 业 务 代 码 s t a r t A p p l i c a t i o n ( ) } 常 用 的 p r o f i l e 类 型 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 # C P U p r o f i l e 分 析 C P U 使 用 热 点 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / p r o f i l e ? s e c o n d s = 3 0 # H e a p p r o f i l e 分 析 内 存 分 配 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / h e a p # G o r o u t i n e p r o f i l e 分 析 g o r o u t i n e 状 态 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / g o r o u t i n e # M u t e x p r o f i l e 分 析 锁 竞 争 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / m u t e x # B l o c k p r o f i l e 分 析 阻 塞 操 作 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / b l o c k C P U 性 能 分 析 实 战 案 例 : J S O N 序 列 化 性 能 优 化 问 题 现 象 : A P I 响 应 时 间 P 9 9 超 过 2 秒 , C P U 使 用 率 7 0 % 分 析 过 程 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 # 1 . 收 集 C P U p r o f i l e g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / p r o f i l e ? s e c o n d s = 6 0 # 2 . 查 看 t o p 消 耗 函 数 ( p p r o f ) t o p 1 0 S h o w i n g n o d e s a c c o u n t i n g f o r 8 . 4 2 s , 8 4 . 2 0 % o f 1 0 . 0 0 s t o t a l D r o p p e d 4 5 n o d e s ( c u m f l a t f l a t % s u m % c u m c u m % 2 . 1 s 2 1 . 0 0 % 2 1 . 0 0 % 2 . 1 s 2 1 . 0 0 % e n c o d i n g / j s o n . ( * e n c o d e S t a t e ) . s t r i n g 1 . 8 s 1 8 . 0 0 % 3 9 . 0 0 % 3 . 9 s 3 9 . 0 0 % e n c o d i n g / j s o n . v a l u e E n c o d e r 1 . 2 s 1 2 . 0 0 % 5 1 . 0 0 % 1 . 2 s 1 2 . 0 0 % r u n t i m e . m a l l o c g c # 3 . 查 看 函 数 调 用 关 系 ( p p r o f ) l i s t e n c o d i n g / j s o n . v a l u e E n c o d e r 优 化 方 案 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 / / 原 始 代 码 每 次 都 序 列 化 f u n c ( h * H a n d l e r ) G e t U s e r L i s t ( w h t t p . R e s p o n s e W r i t e r , r * h t t p . R e q u e s t ) j s o n . N e w E n c o d e r ( w ) . E n c o d e ( u s e r s ) } / / 优 化 后 使 用 结 构 化 序 列 化 f u n c ( h * H a n d l e r ) G e t U s e r L i s t ( w h t t p . R e s p o n s e W r i t e r , r * h t t p . R e q u e s t ) } j s o n . N e w E n c o d e r ( w ) . E n c o d e ( r e s p o n s e ) } 性 能 提 升 : P 9 9 延 迟 从 2 秒 降 到 3 0 0 m s , C P U 使 用 率 降 到 2 0 % 内 存 分 析 实 践 内 存 分 配 热 点 分 析 1 2 3 4 5 6 7 8 9 # 收 集 h e a p p r o f i l e g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / h e a p # 查 看 内 存 分 配 热 点 ( p p r o f ) t o p 1 0 c u m ( p p r o f ) l i s t f u n c t i o n N a m e # 分 析 内 存 增 长 趋 势 ( p p r o f ) g r o w t h 实 战 案 例 : 字 符 串 拼 接 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 / / 问 题 代 码 大 量 字 符 串 拼 接 f u n c b u i l d S Q L ( c o n d i t i o n s [ ] s t r i n g ) s t r i n g s q l + = c o n d i t i o n } r e t u r n s q l } / / 优 化 方 案 1 使 用 s t r i n g s . B u i l d e r f u n c b u i l d S Q L O p t i m i z e d ( c o n d i t i o n s [ ] s t r i n g ) s t r i n g b u i l d e r . W r i t e S t r i n g ( c o n d i t i o n ) } r e t u r n b u i l d e r . S t r i n g ( ) } / / 优 化 方 案 2 预 分 配 容 量 f u n c b u i l d S Q L O p t i m i z e d 2 ( c o n d i t i o n s [ ] s t r i n g ) s t r i n g v a r b u i l d e r s t r i n g s . B u i l d e r b u i l d e r . G r o w ( e s t i m a t e d L e n ) / / 预 分 配 内 存 b u i l d e r . W r i t e S t r i n g ( S E L E C T * F R O M u s e r s W H E R E ) f o r i , c o n d i t i o n : = r a n g e c o n d i t i o n s b u i l d e r . W r i t e S t r i n g ( c o n d i t i o n ) } r e t u r n b u i l d e r . S t r i n g ( ) } G o r o u t i n e 泄 漏 排 查 监 控 g o r o u t i n e 数 量 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 f u n c m o n i t o r G o r o u t i n e s ( ) } } } 分 析 g o r o u t i n e 堆 栈 1 2 3 4 5 6 7 # 查 看 g o r o u t i n e 状 态 c u r l h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / g o r o u t i n e ? d e b u g = 1 # 或 使 用 p p r o f 分 析 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / g o r o u t i n e ( p p r o f ) t o p 1 0 ( p p r o f ) t r a c e s 常 见 g o r o u t i n e 泄 漏 模 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 / / 1 . C h a n n e l 未 关 闭 导 致 g o r o u t i n e 阻 塞 f u n c b a d E x a m p l e ( ) } ( ) / / 忘 记 关 闭 c h a n n e l / / c l o s e ( c h ) } / / 2 . T i m e r 未 停 止 f u n c t i m e r L e a k ( ) ( ) / / 如 果 提 前 返 回 , 忘 记 停 止 t i m e r / / t i m e r . S t o p ( ) } / / 3 . 正 确 的 模 式 f u n c c o r r e c t P a t t e r n ( ) ) g o f u n c ( ) } } ( ) / / 业 务 逻 辑 . . . / / 清 理 资 源 c l o s e ( c h ) / / 等 待 g o r o u t i n e 退 出 } 锁 竞 争 分 析 启 用 m u t e x p r o f i l i n g 1 2 3 4 5 6 i m p o r t r u n t i m e f u n c i n i t ( ) 分 析 锁 竞 争 热 点 1 2 3 4 5 # 分 析 m u t e x 竞 争 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / m u t e x # 分 析 阻 塞 操 作 g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / b l o c k 实 战 案 例 : 缓 存 锁 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 / / 问 题 代 码 单 一 大 锁 t y p e C a c h e s t r u c t } f u n c ( c * C a c h e ) G e t ( k e y s t r i n g ) i n t e r f a c e f u n c ( c * C a c h e ) S e t ( k e y s t r i n g , v a l u e i n t e r f a c e ) / / 优 化 方 案 分 段 锁 c o n s t N u m S h a r d s = 2 5 6 t y p e S h a r d e d C a c h e s t r u c t t y p e C a c h e S h a r d s t r u c t } f u n c ( s c * S h a r d e d C a c h e ) g e t S h a r d ( k e y s t r i n g ) * C a c h e S h a r d f u n c ( s c * S h a r d e d C a c h e ) G e t ( k e y s t r i n g ) i n t e r f a c e 自 动 化 性 能 测 试 基 准 测 试 集 成 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 f u n c B e n c h m a r k S t r i n g C o n c a t e n a t i o n ( b * t e s t i n g . B ) b . R u n ( O r i g i n a l , f u n c ( b * t e s t i n g . B ) } ) b . R u n ( O p t i m i z e d , f u n c ( b * t e s t i n g . B ) } ) } / / 运 行 基 准 测 试 / / g o t e s t b e n c h = . b e n c h m e m c p u p r o f i l e = c p u . p r o f m e m p r o f i l e = m e m . p r o f C I / C D 集 成 性 能 回 归 检 测 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 # ! / b i n / b a s h # p e r f o r m a n c e _ c h e c k . s h # 运 行 基 准 测 试 g o t e s t b e n c h = . b e n c h m e m c o u n t = 3 > c u r r e n t _ b e n c h . t x t # 与 基 线 对 比 b e n c h c m p b a s e l i n e _ b e n c h . t x t c u r r e n t _ b e n c h . t x t # 如 果 性 能 回 归 超 过 阈 值 , 失 败 构 建 i f [ $ ? n e 0 ] ; t h e n e c h o P e r f o r m a n c e r e g r e s s i o n d e t e c t e d ! e x i t 1 f i 生 产 环 境 监 控 业 务 指 标 监 控 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 v a r ( g o r o u t i n e C o u n t = p r o m e t h e u s . N e w G a u g e ( p r o m e t h e u s . G a u g e O p t s ) g c D u r a t i o n = p r o m e t h e u s . N e w H i s t o g r a m ( p r o m e t h e u s . H i s t o g r a m O p t s ) ) f u n c c o l l e c t R u n t i m e M e t r i c s ( ) } } 性 能 分 析 是 一 个 持 续 的 过 程 , 需 要 在 开 发 、 测 试 、 生 产 各 个 环 节 建 立 完 善 的 性 能 监 控 和 分 析 体 系 。 G o 的 p p r o f 工 具 为 我 们 提 供 了 强 大 的 分 析 能 力 , 关 键 是 要 善 用 这 些 工 具 , 建 立 数 据 驱 动 的 性 能 优 化 文 化 。 G o P e r f o r m a n c e P r o f i l i n g p p r o f 2 0 2 4 0 6 2 5 C a c h e S t r a t e g y R e d i s 缓 存 穿 透 的 几 种 解 决 方 案 R e d i s 缓 存 穿 透 的 几 种 解 决 方 案 缓 存 穿 透 是 R e d i s 使 用 中 的 经 典 问 题 。 当 大 量 请 求 查 询 不 存 在 的 数 据 时 , 缓 存 无 法 命 中 , 请 求 直 接 打 到 数 据 库 , 可 能 导 致 数 据 库 崩 溃 。 我 在 生 产 环 境 中 实 施 过 多 种 解 决 方 案 , 这 里 分 享 一 些 实 战 经 验 。 问 题 分 析 缓 存 穿 透 的 典 型 场 景 恶 意 攻 击 : 故 意 查 询 不 存 在 的 数 据 业 务 逻 辑 缺 陷 : 代 码 b u g 导 致 查 询 无 效 k e y 数 据 不 一 致 : 缓 存 与 数 据 库 数 据 不 同 步 影 响 评 估 1 2 3 4 5 6 7 # 监 控 缓 存 命 中 率 r e d i s c l i i n f o s t a t s | g r e p k e y s p a c e _ h i t s # k e y s p a c e _ h i t s : 1 0 0 0 0 0 0 # k e y s p a c e _ m i s s e s : 5 0 0 0 0 0 # 命 中 率 = h i t s / ( h i t s + m i s s e s ) = 6 6 . 7 % # 正 常 情 况 下 命 中 率 应 该 在 9 0 % 以 上 解 决 方 案 对 比 方 案 实 现 难 度 内 存 开 销 误 判 率 适 用 场 景 缓 存 空 值 低 中 无 小 规 模 、 明 确 的 n u l l 值 布 隆 过 滤 器 中 低 有 大 规 模 、 只 读 场 景 缓 存 预 热 高 高 无 数 据 量 可 控 的 场 景 请 求 校 验 中 低 无 有 业 务 规 则 的 场 景 方 案 一 : 缓 存 空 值 实 现 方 式 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 @ S e r v i c e p u b l i c c l a s s U s e r S e r v i c e r e t u r n ( U s e r ) c a c h e d ; } / / 2 . 查 数 据 库 U s e r u s e r = u s e r M a p p e r . s e l e c t B y I d ( u s e r I d ) ; / / 3 . 写 入 缓 存 i f ( u s e r ! = n u l l ) e l s e r e t u r n u s e r ; } } 优 化 点 差 异 化 T T L : 空 值 缓 存 设 置 更 短 的 过 期 时 间 空 值 标 识 : 使 用 特 殊 标 识 而 不 是 n u l l , 避 免 序 列 化 问 题 内 存 控 制 : 定 期 清 理 过 期 的 空 值 缓 存 方 案 二 : 布 隆 过 滤 器 R e d i s + L u a 实 现 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 b l o o m _ a d d . l u a l o c a l k e y = K E Y S [ 1 ] l o c a l v a l u e = A R G V [ 1 ] l o c a l h a s h _ c o u n t = t o n u m b e r ( A R G V [ 2 ] ) l o c a l b i t _ s i z e = t o n u m b e r ( A R G V [ 3 ] ) f o r i = 1 , h a s h _ c o u n t d o l o c a l h a s h = r e d i s . c a l l ( E V A L , r e t u r n r e d i s . s h a 1 h e x ( A R G V [ 1 ] . . A R G V [ 2 ] ) , 0 , v a l u e , i ) l o c a l b i t _ p o s = t o n u m b e r ( s t r i n g . s u b ( h a s h , 1 , 8 ) , 1 6 ) % b i t _ s i z e r e d i s . c a l l ( S E T B I T , k e y , b i t _ p o s , 1 ) e n d r e t u r n 1 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 b l o o m _ e x i s t s . l u a l o c a l k e y = K E Y S [ 1 ] l o c a l v a l u e = A R G V [ 1 ] l o c a l h a s h _ c o u n t = t o n u m b e r ( A R G V [ 2 ] ) l o c a l b i t _ s i z e = t o n u m b e r ( A R G V [ 3 ] ) f o r i = 1 , h a s h _ c o u n t d o l o c a l h a s h = r e d i s . c a l l ( E V A L , r e t u r n r e d i s . s h a 1 h e x ( A R G V [ 1 ] . . A R G V [ 2 ] ) , 0 , v a l u e , i ) l o c a l b i t _ p o s = t o n u m b e r ( s t r i n g . s u b ( h a s h , 1 , 8 ) , 1 6 ) % b i t _ s i z e i f r e d i s . c a l l ( G E T B I T , k e y , b i t _ p o s ) = = 0 t h e n r e t u r n 0 肯 定 不 存 在 e n d e n d r e t u r n 1 可 能 存 在 J a v a 客 户 端 封 装 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 @ C o m p o n e n t p u b l i c c l a s s B l o o m F i l t e r ) ; } p u b l i c b o o l e a n m i g h t C o n t a i n ( S t r i n g k e y , S t r i n g v a l u e ) ) ; r e t u r n r e s u l t ! = n u l l } } 布 隆 过 滤 器 应 用 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 @ S e r v i c e p u b l i c c l a s s P r o d u c t S e r v i c e / / 2 . 查 缓 存 S t r i n g c a c h e K e y = p r o d u c t : + p r o d u c t I d ; O b j e c t c a c h e d = r e d i s T e m p l a t e . o p s F o r V a l u e ( ) . g e t ( c a c h e K e y ) ; i f ( c a c h e d ! = n u l l ) / / 3 . 查 数 据 库 P r o d u c t p r o d u c t = p r o d u c t M a p p e r . s e l e c t B y I d ( p r o d u c t I d ) ; i f ( p r o d u c t ! = n u l l ) r e t u r n p r o d u c t ; } @ P o s t C o n s t r u c t p u b l i c v o i d i n i t B l o o m F i l t e r ( ) } } 方 案 三 : 分 布 式 锁 + 双 重 检 查 防 止 缓 存 击 穿 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 @ S e r v i c e p u b l i c c l a s s O r d e r S e r v i c e / / 2 . 获 取 分 布 式 锁 S t r i n g l o c k K e y = l o c k : o r d e r : + o r d e r I d ; R L o c k l o c k = r e d i s s o n C l i e n t . g e t L o c k ( l o c k K e y ) ; t r y / / 4 . 查 数 据 库 O r d e r o r d e r = o r d e r M a p p e r . s e l e c t B y I d ( o r d e r I d ) ; / / 5 . 写 缓 存 i f ( o r d e r ! = n u l l ) e l s e r e t u r n o r d e r ; } } c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) f i n a l l y } / / 获 取 锁 失 败 , 直 接 查 数 据 库 ( 降 级 策 略 ) r e t u r n o r d e r M a p p e r . s e l e c t B y I d ( o r d e r I d ) ; } } 方 案 四 : 参 数 校 验 业 务 层 拦 截 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 @ C o m p o n e n t p u b l i c c l a s s R e q u e s t V a l i d a t o r / / 商 品 I D 校 验 规 则 p u b l i c b o o l e a n i s V a l i d P r o d u c t I d ( S t r i n g p r o d u c t I d ) $ ) ; } / / 订 单 号 校 验 规 则 p u b l i c b o o l e a n i s V a l i d O r d e r N o ( S t r i n g o r d e r N o ) [ A Z ] [ 0 9 ] $ ) ; } } @ R e s t C o n t r o l l e r p u b l i c c l a s s U s e r C o n t r o l l e r ) p u b l i c R e s p o n s e E n t i t y g e t U s e r ( @ P a t h V a r i a b l e L o n g u s e r I d ) U s e r u s e r = u s e r S e r v i c e . g e t U s e r ( u s e r I d ) ; r e t u r n R e s p o n s e E n t i t y . o k ( u s e r ) ; } } 监 控 和 告 警 缓 存 穿 透 监 控 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 @ C o m p o n e n t p u b l i c c l a s s C a c h e M e t r i c s p u b l i c v o i d r e c o r d C a c h e P e n e t r a t i o n ( S t r i n g c a c h e N a m e ) } 告 警 规 则 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # P r o m e t h e u s 告 警 规 则 a l e r t : H i g h C a c h e M i s s R a t e e x p r : r a t e ( c a c h e _ m i s s _ t o t a l [ 5 m ] ) / r a t e ( c a c h e _ r e q u e s t s _ t o t a l [ 5 m ] ) > 0 . 3 f o r : 2 m a n n o t a t i o n s : s u m m a r y : C a c h e m i s s r a t e > 3 0 % a l e r t : C a c h e P e n e t r a t i o n A t t a c k e x p r : r a t e ( c a c h e _ p e n e t r a t i o n _ t o t a l [ 1 m ] ) > 1 0 0 f o r : 1 m a n n o t a t i o n s : s u m m a r y : P o s s i b l e c a c h e p e n e t r a t i o n a t t a c k 最 佳 实 践 总 结 多 层 防 护 : 结 合 多 种 方 案 , 建 立 纵 深 防 御 体 系 监 控 先 行 : 先 建 监 控 , 再 优 化 性 能 渐 进 演 化 : 从 简 单 方 案 开 始 , 根 据 业 务 发 展 逐 步 优 化 成 本 平 衡 : 在 防 护 效 果 和 系 统 成 本 间 找 到 平 衡 点 缓 存 穿 透 的 解 决 需 要 结 合 具 体 业 务 场 景 选 择 合 适 的 方 案 。 记 住 , 没 有 银 弹 , 只 有 最 适 合 的 解 决 方 案 。 C a c h e D i s t r i b u t e d S y s t e m s P e r f o r m a n c e R e d i s 2 0 2 4 0 4 1 2 S y s t e m E n g i n e e r i n g 分 布 式 系 统 故 障 排 查 与 监 控 体 系 建 设 分 布 式 系 统 故 障 排 查 与 监 控 体 系 建 设 “ 系 统 不 会 在 你 方 便 的 时 候 出 故 障 。 ” 这 是 我 在 分 布 式 系 统 运 维 过 程 中 最 深 刻 的 体 会 。 凌 晨 3 点 被 告 警 叫 醒 , 面 对 复 杂 的 调 用 链 和 海 量 日 志 , 如 何 快 速 定 位 和 解 决 问 题 ? 这 需 要 建 立 一 套 完 整 的 可 观 测 性 体 系 。 经 过 多 年 的 实 践 , 我 总 结 了 一 套 相 对 完 整 的 分 布 式 系 统 故 障 排 查 方 法 论 和 监 控 体 系 建 设 经 验 。 这 篇 文 章 将 从 实 战 角 度 分 享 如 何 构 建 高 效 的 监 控 告 警 体 系 , 以 及 面 对 复 杂 故 障 时 的 系 统 化 排 查 思 路 。 分 布 式 系 统 故 障 的 特 点 与 单 体 应 用 相 比 , 分 布 式 系 统 的 故 障 具 有 以 下 特 点 : 1 . 故 障 传 播 的 复 杂 性 一 个 看 似 简 单 的 请 求 , 可 能 涉 及 十 几 个 微 服 务 : 1 用 户 请 求 → A P I G a t e w a y → 用 户 服 务 → 订 单 服 务 → 库 存 服 务 → 支 付 服 务 → 消 息 队 列 → 通 知 服 务 任 何 一 个 环 节 出 问 题 , 都 可 能 导 致 整 个 流 程 失 败 。 更 糟 糕 的 是 , 故 障 会 沿 着 依 赖 链 传 播 和 放 大 。 2 . 状 态 不 一 致 的 挑 战 分 布 式 事 务 失 败 可 能 导 致 各 种 奇 怪 的 状 态 : 订 单 创 建 成 功 , 但 库 存 扣 减 失 败 支 付 完 成 , 但 订 单 状 态 未 更 新 用 户 收 到 成 功 通 知 , 但 实 际 交 易 回 滚 3 . 网 络 分 区 的 不 确 定 性 网 络 是 不 可 靠 的 , 这 导 致 : 请 求 超 时 不 代 表 操 作 失 败 重 试 可 能 导 致 重 复 执 行 时 钟 偏 差 影 响 分 布 式 协 调 可 观 测 性 三 大 支 柱 现 代 分 布 式 系 统 监 控 基 于 三 大 支 柱 : M e t r i c s 、 L o g s 、 T r a c e s 。 1 . M e t r i c s 指 标 监 控 系 统 级 指 标 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 / / P r o m e t h e u s 指 标 定 义 示 例 v a r ( / / 请 求 总 数 h t t p R e q u e s t s T o t a l = p r o m e t h e u s . N e w C o u n t e r V e c ( p r o m e t h e u s . C o u n t e r O p t s , [ ] s t r i n g , ) / / 请 求 延 迟 分 布 h t t p R e q u e s t D u r a t i o n = p r o m e t h e u s . N e w H i s t o g r a m V e c ( p r o m e t h e u s . H i s t o g r a m O p t s , [ ] s t r i n g , ) / / 当 前 活 跃 连 接 数 a c t i v e C o n n e c t i o n s = p r o m e t h e u s . N e w G a u g e ( p r o m e t h e u s . G a u g e O p t s , ) ) 业 务 指 标 对 于 电 商 系 统 , 我 通 常 监 控 这 些 关 键 业 务 指 标 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 # 业 务 指 标 配 置 b u s i n e s s _ m e t r i c s : n a m e : o r d e r _ s u c c e s s _ r a t e q u e r y : r a t e ( o r d e r s _ t o t a l [ 5 m ] ) / r a t e ( o r d e r s _ t o t a l [ 5 m ] ) t h r e s h o l d : 0 . 9 5 n a m e : p a y m e n t _ t i m e o u t _ r a t e q u e r y : r a t e ( p a y m e n t _ r e q u e s t s _ t o t a l [ 5 m ] ) / r a t e ( p a y m e n t _ r e q u e s t s _ t o t a l [ 5 m ] ) t h r e s h o l d : 0 . 0 1 n a m e : i n v e n t o r y _ s y n c _ d e l a y q u e r y : t i m e ( ) i n v e n t o r y _ l a s t _ s y n c _ t i m e s t a m p t h r e s h o l d : 3 0 0 # 5 分 钟 2 . L o g s 日 志 系 统 结 构 化 日 志 设 计 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 , c o n t e x t : } 日 志 采 集 和 处 理 我 在 生 产 环 境 使 用 的 E L K S t a c k 配 置 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 # F i l e b e a t 配 置 f i l e b e a t . i n p u t s : t y p e : l o g p a t h s : / v a r / l o g / a p p / * . l o g f i e l d s : s e r v i c e : o r d e r s e r v i c e e n v i r o n m e n t : p r o d u c t i o n m u l t i l i n e . p a t t e r n : ^ [ 0 9 ] [ 0 9 ] [ 0 9 ] m u l t i l i n e . n e g a t e : t r u e m u l t i l i n e . m a t c h : a f t e r # L o g s t a s h 过 滤 配 置 f i l t e r % \ \ [ % \ \ ] % } } d a t e } } 3 . T r a c e s 分 布 式 链 路 追 踪 O p e n T e l e m e t r y 集 成 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 f u n c ( h * O r d e r H a n d l e r ) C r e a t e O r d e r ( w h t t p . R e s p o n s e W r i t e r , r * h t t p . R e q u e s t ) s p a n . S e t A t t r i b u t e s ( a t t r i b u t e . S t r i n g ( o r d e r . i d , o r d e r . I D ) ) w r i t e R e s p o n s e ( w , o r d e r ) } f u n c ( s * O r d e r S e r v i c e ) C r e a t e O r d e r ( c t x c o n t e x t . C o n t e x t , r e q * O r d e r R e q u e s t ) ( * O r d e r , e r r o r ) / / 数 据 库 操 作 也 创 建 s p a n c t x , d b S p a n : = o t e l . T r a c e r ( o r d e r s e r v i c e ) . S t a r t ( c t x , d b i n s e r t o r d e r ) o r d e r , e r r : = s . r e p o s i t o r y . C r e a t e O r d e r ( c t x , r e q ) d b S p a n . E n d ( ) r e t u r n o r d e r , e r r } 监 控 告 警 体 系 设 计 1 . 告 警 规 则 设 计 分 级 告 警 策 略 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 # P r o m e t h e u s 告 警 规 则 g r o u p s : n a m e : c r i t i c a l _ a l e r t s r u l e s : # P 0 影 响 核 心 业 务 流 程 a l e r t : O r d e r S e r v i c e D o w n e x p r : u p = = 0 f o r : 1 m l a b e l s : s e v e r i t y : c r i t i c a l o n c a l l : p r i m a r y a n n o t a t i o n s : s u m m a r y : O r d e r s e r v i c e i s d o w n r u n b o o k : h t t p s : / / w i k i . c o m p a n y . c o m / r u n b o o k s / o r d e r s e r v i c e d o w n # P 1 性 能 显 著 下 降 a l e r t : H i g h E r r o r R a t e e x p r : r a t e ( h t t p _ r e q u e s t s _ t o t a l [ 5 m ] ) / r a t e ( h t t p _ r e q u e s t s _ t o t a l [ 5 m ] ) > 0 . 0 5 f o r : 3 m l a b e l s : s e v e r i t y : h i g h o n c a l l : s e c o n d a r y a n n o t a t i o n s : s u m m a r y : H i g h e r r o r r a t e : } % # P 2 性 能 预 警 a l e r t : H i g h L a t e n c y e x p r : h i s t o g r a m _ q u a n t i l e ( 0 . 9 5 , h t t p _ r e q u e s t _ d u r a t i o n _ s e c o n d s ) > 1 . 0 f o r : 5 m l a b e l s : s e v e r i t y : w a r n i n g a n n o t a t i o n s : s u m m a r y : H i g h l a t e n c y : } s 告 警 收 敛 和 降 噪 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 / / 告 警 管 理 器 t y p e A l e r t M a n a g e r s t r u c t t y p e A l e r t R u l e s t r u c t f u n c ( a m * A l e r t M a n a g e r ) P r o c e s s A l e r t ( a l e r t * A l e r t ) / / 2 . 告 警 聚 合 i n c i d e n t K e y : = a m . g e n e r a t e I n c i d e n t K e y ( a l e r t ) i f i n c i d e n t , e x i s t s : = a m . i n c i d e n t s [ i n c i d e n t K e y ] ; e x i s t s e l s e } / / 3 . 根 据 严 重 程 度 选 择 通 知 渠 道 a m . n o t i f y ( a l e r t ) } 2 . 监 控 大 盘 设 计 服 务 概 览 大 盘 我 在 G r a f a n a 中 设 计 的 监 控 大 盘 包 含 以 下 关 键 信 息 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 } } ] } , [ 5 m ] ) / r a t e ( h t t p _ r e q u e s t s _ t o t a l [ 5 m ] ) * 1 0 0 , l e g e n d F o r m a t : E r r o r R a t e % } ] , t h r e s h o l d s : [ , , ] } , ] } ] } } 业 务 监 控 大 盘 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 b u s i n e s s _ d a s h b o a r d : p a n e l : 订 单 转 化 漏 斗 m e t r i c s : 访 问 商 品 页 面 用 户 数 添 加 购 物 车 用 户 数 提 交 订 单 用 户 数 支 付 成 功 用 户 数 p a n e l : 实 时 G M V q u e r y : s u m ( r a t e ( o r d e r _ a m o u n t _ t o t a l [ 1 m ] ) ) * 6 0 p a n e l : 库 存 告 警 q u e r y : i n v e n t o r y _ s t o c k _ l e v e l 故 障 排 查 方 法 论 1 . U S E 方 法 论 对 于 每 个 资 源 , 监 控 以 下 三 个 维 度 : U t i l i z a t i o n ( 使 用 率 ) : 资 源 繁 忙 程 度 S a t u r a t i o n ( 饱 和 度 ) : 资 源 排 队 情 况 E r r o r s ( 错 误 数 ) : 资 源 错 误 次 数 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 # C P U 使 用 率 分 析 # U t i l i z a t i o n m p s t a t P A L L 1 # S a t u r a t i o n v m s t a t 1 # 关 注 r 列 ( 运 行 队 列 长 度 ) # E r r o r s d m e s g | g r e p i e r r o r # 内 存 分 析 # U t i l i z a t i o n f r e e h # S a t u r a t i o n v m s t a t 1 # 关 注 s i / s o 列 ( s w a p i n / o u t ) # E r r o r s d m e s g | g r e p i o u t o f m e m o r y 2 . R E D 方 法 论 对 于 每 个 服 务 , 监 控 : R a t e ( 请 求 速 率 ) : 每 秒 请 求 数 E r r o r s ( 错 误 率 ) : 失 败 请 求 比 例 D u r a t i o n ( 响 应 时 间 ) : 请 求 处 理 时 长 3 . 分 布 式 追 踪 排 查 实 战 案 例 : 订 单 创 建 超 时 某 天 收 到 大 量 订 单 创 建 超 时 告 警 , P 9 9 延 迟 从 2 0 0 m s 飙 升 到 5 秒 。 排 查 步 骤 : 查 看 监 控 大 盘 , 初 步 定 位 1 2 3 4 5 # 检 查 各 服 务 状 态 c u r l s h t t p : / / p r o m e t h e u s : 9 0 9 0 / a p i / v 1 / q u e r y ? q u e r y = u p | j q . d a t a . r e s u l t # 发 现 订 单 服 务 错 误 率 异 常 c u r l s h t t p : / / p r o m e t h e u s : 9 0 9 0 / a p i / v 1 / q u e r y ? q u e r y = r a t e ( h t t p _ r e q u e s t s _ t o t a l [ 5 m ] ) 通 过 链 路 追 踪 深 入 分 析 1 2 # 在 J a e g e r 中 查 询 异 常 t r a c e # 发 现 9 0 % 的 慢 请 求 卡 在 库 存 服 务 调 用 上 分 析 库 存 服 务 1 2 3 4 5 6 # 检 查 库 存 服 务 数 据 库 连 接 S H O W P R O C E S S L I S T ; # 发 现 大 量 慢 查 询 # 查 看 慢 查 询 日 志 t a i l f / v a r / l o g / m y s q l / s l o w . l o g 根 因 分 析 1 2 3 4 5 6 7 8 9 1 0 发 现 库 存 查 询 缺 少 索 引 E X P L A I N S E L E C T s t o c k F R O M i n v e n t o r y W H E R E p r o d u c t _ i d = 1 2 3 4 5 A N D w a r e h o u s e _ i d = 1 ; r o w s e x a m i n e d : 2 , 0 0 0 , 0 0 0 添 加 复 合 索 引 C R E A T E I N D E X i d x _ p r o d u c t _ w a r e h o u s e O N i n v e n t o r y ( p r o d u c t _ i d , w a r e h o u s e _ i d ) ; 验 证 优 化 效 果 E X P L A I N S E L E C T s t o c k F R O M i n v e n t o r y W H E R E p r o d u c t _ i d = 1 2 3 4 5 A N D w a r e h o u s e _ i d = 1 ; r o w s e x a m i n e d : 1 故 障 时 间 线 记 录 : 时 间 事 件 操 作 1 4 : 2 5 告 警 触 发 开 始 排 查 1 4 : 3 0 定 位 到 库 存 服 务 检 查 数 据 库 1 4 : 3 5 发 现 慢 查 询 分 析 执 行 计 划 1 4 : 4 0 添 加 索 引 优 化 查 询 1 4 : 4 5 服 务 恢 复 正 常 关 闭 告 警 4 . 常 见 故 障 排 查 清 单 服 务 无 响 应 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 # 1 . 检 查 进 程 状 态 p s a u x | g r e p s e r v i c e n a m e s y s t e m c t l s t a t u s s e r v i c e n a m e # 2 . 检 查 端 口 监 听 s s t l n p | g r e p : 8 0 8 0 n e t s t a t t l n p | g r e p : 8 0 8 0 # 3 . 检 查 资 源 使 用 t o p p l s o f p | w c l # 文 件 描 述 符 数 量 # 4 . 检 查 网 络 连 通 性 t e l n e t s e r v i c e h o s t 8 0 8 0 c u r l v h t t p : / / s e r v i c e h o s t : 8 0 8 0 / h e a l t h 数 据 库 连 接 异 常 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 检 查 连 接 数 S H O W S T A T U S L I K E T h r e a d s _ c o n n e c t e d ; S H O W V A R I A B L E S L I K E m a x _ c o n n e c t i o n s ; 检 查 慢 查 询 S H O W S T A T U S L I K E S l o w _ q u e r i e s ; S E L E C T * F R O M p e r f o r m a n c e _ s c h e m a . e v e n t s _ s t a t e m e n t s _ s u m m a r y _ b y _ d i g e s t O R D E R B Y s u m _ t i m e r _ w a i t D E S C L I M I T 1 0 ; 检 查 锁 等 待 S E L E C T * F R O M p e r f o r m a n c e _ s c h e m a . d a t a _ l o c k s ; S H O W E N G I N E I N N O D B S T A T U S \ \ G 监 控 体 系 建 设 实 践 1 . 监 控 平 台 架 构 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 # 监 控 基 础 设 施 m o n i t o r i n g _ s t a c k : m e t r i c s : p r o m e t h e u s : 指 标 采 集 和 存 储 g r a f a n a : 可 视 化 展 示 a l e r t m a n a g e r : 告 警 管 理 l o g s : e l a s t i c s e a r c h : 日 志 存 储 和 搜 索 l o g s t a s h : 日 志 处 理 k i b a n a : 日 志 查 询 界 面 f i l e b e a t : 日 志 采 集 t r a c e s : j a e g e r : 链 路 追 踪 存 储 o p e n t e l e m e t r y : 追 踪 数 据 采 集 i n f r a s t r u c t u r e : c o n s u l : 服 务 发 现 n g i n x : 负 载 均 衡 和 接 入 层 k a f k a : 消 息 队 列 2 . 监 控 数 据 生 命 周 期 数 据 保 留 策 略 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 d a t a _ r e t e n t i o n : p r o m e t h e u s : r a w _ d a t a : 1 5 d # 原 始 数 据 保 留 1 5 天 d o w n s a m p l i n g : r e s o l u t i o n : 5 m r e t e n t i o n : 6 0 d # 5 分 钟 聚 合 保 留 6 0 天 r e s o l u t i o n : 1 h r e t e n t i o n : 1 y # 1 小 时 聚 合 保 留 1 年 e l a s t i c s e a r c h : h o t _ n o d e s : 7 d # 热 数 据 7 天 w a r m _ n o d e s : 3 0 d # 温 数 据 3 0 天 c o l d _ n o d e s : 1 y # 冷 数 据 1 年 j a e g e r : t r a c e s : 7 d # 链 路 追 踪 数 据 7 天 3 . 成 本 优 化 监 控 成 本 控 制 策 略 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 / / 智 能 采 样 策 略 t y p e S a m p l i n g S t r a t e g y s t r u c t t y p e S a m p l i n g R u l e s t r u c t f u n c ( s * S a m p l i n g S t r a t e g y ) S h o u l d S a m p l e ( s p a n * S p a n ) b o o l / / 慢 请 求 1 0 0 % 采 样 i f s p a n . D u r a t i o n > t i m e . S e c o n d / / 正 常 请 求 按 比 例 采 样 r e t u r n r a n d . F l o a t 6 4 ( ) } 4 . 监 控 即 代 码 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 # m o n i t o r i n g c o n f i g . y a m l a p i V e r s i o n : v 1 k i n d : C o n f i g M a p m e t a d a t a : n a m e : p r o m e t h e u s r u l e s d a t a : r u l e s . y m l : | g r o u p s : n a m e : a p p l i c a t i o n . r u l e s r u l e s : a l e r t : H i g h M e m o r y U s a g e e x p r : p r o c e s s _ r e s i d e n t _ m e m o r y _ b y t e s / 1 0 2 4 / 1 0 2 4 > 1 0 0 0 f o r : 5 m l a b e l s : s e v e r i t y : w a r n i n g a n n o t a t i o n s : s u m m a r y : H i g h m e m o r y u s a g e : } M B a p i V e r s i o n : a p p s / v 1 k i n d : D e p l o y m e n t m e t a d a t a : n a m e : p r o m e t h e u s s p e c : t e m p l a t e : s p e c : c o n t a i n e r s : n a m e : p r o m e t h e u s i m a g e : p r o m / p r o m e t h e u s : l a t e s t v o l u m e M o u n t s : n a m e : c o n f i g m o u n t P a t h : / e t c / p r o m e t h e u s / r u l e s v o l u m e s : n a m e : c o n f i g c o n f i g M a p : n a m e : p r o m e t h e u s r u l e s 未 来 发 展 方 向 1 . A I O p s 智 能 运 维 异 常 检 测 算 法 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 f r o m s k l e a r n . e n s e m b l e i m p o r t I s o l a t i o n F o r e s t i m p o r t p a n d a s a s p d c l a s s A n o m a l y D e t e c t o r : d e f _ _ i n i t _ _ ( s e l f ) : s e l f . m o d e l = I s o l a t i o n F o r e s t ( c o n t a m i n a t i o n = 0 . 1 ) s e l f . t r a i n e d = F a l s e d e f t r a i n ( s e l f , m e t r i c s _ d a t a ) : # 训 练 异 常 检 测 模 型 d f = p d . D a t a F r a m e ( m e t r i c s _ d a t a ) f e a t u r e s = [ c p u _ u s a g e , m e m o r y _ u s a g e , r e q u e s t _ r a t e , e r r o r _ r a t e ] s e l f . m o d e l . f i t ( d f [ f e a t u r e s ] ) s e l f . t r a i n e d = T r u e d e f d e t e c t _ a n o m a l y ( s e l f , c u r r e n t _ m e t r i c s ) : i f n o t s e l f . t r a i n e d : r e t u r n F a l s e p r e d i c t i o n = s e l f . m o d e l . p r e d i c t ( [ c u r r e n t _ m e t r i c s ] ) r e t u r n p r e d i c t i o n [ 0 ] = = 1 # 1 表 示 异 常 2 . 自 动 化 故 障 恢 复 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 t y p e A u t o H e a l e r s t r u c t t y p e H e a l i n g R u l e s t r u c t } f u n c ( a h * A u t o H e a l e r ) P r o c e s s A l e r t ( a l e r t * A l e r t ) } } 总 结 与 最 佳 实 践 建 设 完 善 的 监 控 体 系 是 一 个 长 期 过 程 , 我 总 结 的 最 佳 实 践 : 1 . 分 阶 段 建 设 第 一 阶 段 : 基 础 设 施 监 控 ( C P U 、 内 存 、 网 络 、 磁 盘 ) 第 二 阶 段 : 应 用 监 控 ( Q P S 、 延 迟 、 错 误 率 ) 第 三 阶 段 : 业 务 监 控 ( 转 化 率 、 G M V 、 用 户 行 为 ) 第 四 阶 段 : 智 能 监 控 ( 异 常 检 测 、 自 动 恢 复 ) 2 . 可 观 测 性 文 化 D e s i g n f o r O b s e r v a b i l i t y : 在 设 计 阶 段 就 考 虑 监 控 需 求 B l a m e l e s s P o s t m o r t e m : 无 责 备 的 故 障 复 盘 文 化 R u n b o o k D r i v e n : 每 个 告 警 都 要 有 对 应 的 处 理 手 册 C o n t i n u o u s I m p r o v e m e n t : 持 续 改 进 监 控 质 量 3 . 技 术 选 型 原 则 标 准 化 : 优 先 选 择 符 合 O p e n T e l e m e t r y 等 标 准 的 工 具 开 源 优 先 : 避 免 厂 商 锁 定 , 便 于 定 制 和 扩 展 渐 进 式 演 进 : 从 简 单 开 始 , 根 据 需 求 逐 步 增 强 分 布 式 系 统 的 复 杂 性 决 定 了 我 们 必 须 建 立 完 善 的 可 观 测 性 体 系 。 只 有 做 到 ” 先 知 先 觉 ” , 才 能 在 故 障 发 生 时 快 速 响 应 , 最 小 化 对 业 务 的 影 响 。 希 望 这 篇 文 章 的 实 战 经 验 能 够 帮 助 大 家 建 设 更 加 健 壮 的 分 布 式 系 统 。 D e v O p s D i s t r i b u t e d S y s t e m s M o n i t o r i n g O b s e r v a b i l i t y T r o u b l e s h o o t i n g 2 0 2 4 0 1 2 0 A r c h i t e c t u r e D e s i g n 高 并 发 架 构 设 计 与 实 践 从 理 论 到 落 地 高 并 发 架 构 设 计 与 实 践 从 理 论 到 落 地 在 过 去 几 年 的 工 作 中 , 我 先 后 参 与 了 多 个 千 万 级 用 户 系 统 的 架 构 设 计 和 性 能 优 化 。 从 最 初 的 单 机 应 用 到 后 来 的 分 布 式 集 群 , 从 传 统 的 L A M P 架 构 到 现 在 的 云 原 生 架 构 , 这 个 过 程 让 我 对 高 并 发 系 统 设 计 有 了 更 深 入 的 理 解 。 这 篇 文 章 将 系 统 性 地 分 享 我 在 高 并 发 架 构 设 计 方 面 的 实 践 经 验 。 高 并 发 系 统 的 挑 战 高 并 发 系 统 设 计 绝 不 仅 仅 是 提 升 T P S 和 Q P S 那 么 简 单 。 在 我 看 来 , 真 正 的 挑 战 在 于 : 1 . 多 维 度 的 性 能 要 求 吞 吐 量 ( T h r o u g h p u t ) : 系 统 每 秒 能 处 理 多 少 请 求 响 应 时 间 ( L a t e n c y ) : 用 户 感 受 到 的 延 迟 并 发 用 户 数 : 系 统 能 同 时 支 持 多 少 在 线 用 户 可 用 性 ( A v a i l a b i l i t y ) : 系 统 的 稳 定 运 行 时 间 2 . 复 杂 的 技 术 权 衡 在 实 际 项 目 中 , 我 们 经 常 面 临 C A P 定 理 的 权 衡 选 择 : 一 致 性 v s 可 用 性 : 金 融 支 付 系 统 选 择 强 一 致 性 , 社 交 媒 体 选 择 最 终 一 致 性 性 能 v s 成 本 : 缓 存 能 提 升 性 能 但 增 加 复 杂 性 和 成 本 功 能 v s 稳 定 性 : 新 功 能 可 能 引 入 未 知 风 险 分 层 架 构 设 计 理 念 基 于 多 年 的 实 践 , 我 总 结 出 了 一 套 相 对 完 整 的 分 层 架 构 模 式 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐ │ C D N e r r ! = n i l / / 2 . 异 步 处 理 后 续 流 程 e v e n t s : = [ ] E v e n t , , , } f o r _ , e v e n t : = r a n g e e v e n t s r e t u r n n i l } 数 据 架 构 设 计 1 . 数 据 库 选 型 和 分 层 读 写 分 离 + 主 从 同 步 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 d a t a b a s e _ c l u s t e r : m a s t e r : h o s t : d b m a s t e r . i n t e r n a l p o r t : 3 3 0 6 m a x _ c o n n e c t i o n s : 2 0 0 0 s l a v e s : h o s t : d b s l a v e 1 . i n t e r n a l p o r t : 3 3 0 6 w e i g h t : 1 h o s t : d b s l a v e 2 . i n t e r n a l p o r t : 3 3 0 6 w e i g h t : 1 s h a r d i n g : s t r a t e g y : h a s h k e y : u s e r _ i d s h a r d s : 8 实 战 案 例 : 千 万 用 户 的 分 库 分 表 方 案 用 户 表 分 表 策 略 : 1 2 3 4 5 6 7 8 9 按 用 户 I D 取 模 分 表 C R E A T E T A B L E u s e r _ i n f o _ 0 0 L I K E u s e r _ i n f o ; C R E A T E T A B L E u s e r _ i n f o _ 0 1 L I K E u s e r _ i n f o ; . . . 创 建 6 4 张 分 表 路 由 算 法 d e f g e t _ t a b l e _ n a m e ( u s e r _ i d ) : s u f f i x = s t r ( u s e r _ i d % 6 4 ) . z f i l l ( 2 ) r e t u r n f u s e r _ i n f o _ 2 . 缓 存 架 构 设 计 多 级 缓 存 体 系 1 2 3 4 5 6 7 8 9 1 0 1 1 B r o w s e r C a c h e ( 1 m i n ) ↓ C D N C a c h e ( 1 0 m i n ) ↓ A P I G a t e w a y C a c h e ( 5 m i n ) ↓ A p p l i c a t i o n C a c h e ( 3 0 m i n ) ↓ R e d i s C l u s t e r ( 2 h o u r ) ↓ D a t a b a s e 缓 存 一 致 性 策 略 我 在 生 产 中 使 用 的 C a c h e A s i d e 模 式 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 f u n c ( s * U s e r S e r v i c e ) G e t U s e r ( u s e r I D i n t 6 4 ) ( * U s e r , e r r o r ) / / 2 . 缓 存 未 命 中 , 查 数 据 库 u s e r , e r r : = s . s t o r a g e . G e t U s e r ( u s e r I D ) i f e r r ! = n i l / / 3 . 写 入 缓 存 u s e r D a t a , _ : = j s o n . M a r s h a l ( u s e r ) s . c a c h e . S e t ( c a c h e K e y , s t r i n g ( u s e r D a t a ) , 3 0 * t i m e . M i n u t e ) r e t u r n u s e r , n i l } f u n c ( s * U s e r S e r v i c e ) U p d a t e U s e r ( u s e r I D i n t 6 4 , u p d a t e s m a p [ s t r i n g ] i n t e r f a c e ) e r r o r / / 2 . 删 除 缓 存 c a c h e K e y : = f m t . S p r i n t f ( u s e r : % d , u s e r I D ) s . c a c h e . D e l e t e ( c a c h e K e y ) r e t u r n n i l } 性 能 优 化 实 践 1 . 数 据 库 优 化 慢 查 询 优 化 案 例 某 次 线 上 故 障 , 订 单 查 询 接 口 P 9 9 延 迟 超 过 2 秒 , 通 过 慢 查 询 日 志 定 位 问 题 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 原 始 查 询 ( 耗 时 1 . 8 s ) S E L E C T * F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s I N ( p a i d , s h i p p e d ) O R D E R B Y c r e a t e d _ a t D E S C L I M I T 2 0 ; 优 化 后 的 索 引 设 计 C R E A T E I N D E X i d x _ u s e r _ s t a t u s _ t i m e O N o r d e r s ( u s e r _ i d , s t a t u s , c r e a t e d _ a t D E S C ) ; 查 询 优 化 ( 耗 时 1 5 m s ) S E L E C T o r d e r _ i d , a m o u n t , s t a t u s , c r e a t e d _ a t F R O M o r d e r s W H E R E u s e r _ i d = 1 2 3 4 5 A N D s t a t u s I N ( p a i d , s h i p p e d ) O R D E R B Y c r e a t e d _ a t D E S C L I M I T 2 0 ; 2 . 应 用 层 优 化 连 接 池 优 化 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 / / 数 据 库 连 接 池 配 置 d b C o n f i g : = e r r ! = n i l r e t u r n t r u e } 连 接 重 试 机 制 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 f u n c ( p * P o o l ) G e t C o n n e c t i o n W i t h R e t r y ( ) ( * C o n n e c t i o n , e r r o r ) / / 指 数 退 避 重 试 d e l a y : = b a s e D e l a y * t i m e . D u r a t i o n ( 1 t i m e . S l e e p ( d e l a y ) } r e t u r n n i l , e r r o r s . N e w ( f a i l e d t o g e t c o n n e c t i o n a f t e r r e t r i e s ) } 连 接 池 泄 漏 预 防 自 动 化 连 接 回 收 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 t y p e M a n a g e d C o n n e c t i o n s t r u c t f u n c ( m c * M a n a g e d C o n n e c t i o n ) Q u e r y ( q u e r y s t r i n g , a r g s . . . i n t e r f a c e ) ( * s q l . R o w s , e r r o r ) r e t u r n m c . D B . Q u e r y ( q u e r y , a r g s . . . ) } 连 接 泄 漏 监 控 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 / / 定 期 检 查 连 接 泄 漏 f u n c ( p * P o o l ) s t a r t L e a k D e t e c t i o n ( ) } ( ) } f u n c ( p * P o o l ) c h e c k C o n n e c t i o n L e a k s ( ) } i f l e a k e d > 0 } 通 过 合 理 配 置 连 接 池 参 数 、 建 立 监 控 告 警 、 实 现 自 动 故 障 处 理 , 可 以 显 著 提 升 系 统 的 稳 定 性 和 性 能 。 记 住 : 连 接 池 不 是 设 置 完 就 可 以 不 管 的 , 需 要 根 据 业 务 流 量 和 下 游 服 务 的 变 化 持 续 优 化 。 C o n n e c t i o n P o o l N e t w o r k P e r f o r m a n c e T C P 2 0 2 3 0 7 2 0 P e r f o r m a n c e O p t i m i z a t i o n 内 存 泄 漏 的 快 速 定 位 技 巧 内 存 泄 漏 的 快 速 定 位 技 巧 内 存 泄 漏 是 后 台 服 务 最 常 见 的 问 题 之 一 。 我 在 生 产 环 境 中 遇 到 过 各 种 内 存 泄 漏 场 景 : J a v a 堆 外 内 存 泄 漏 、 G o 的 g o r o u t i n e 泄 漏 、 C + + 的 野 指 针 问 题 等 。 经 过 多 次 实 战 , 我 总 结 了 一 套 快 速 定 位 内 存 泄 漏 的 方 法 。 J a v a 应 用 内 存 泄 漏 排 查 堆 内 存 泄 漏 1 2 3 4 5 6 7 8 9 1 0 # 1 . 生 成 h e a p d u m p j m a p d u m p : f o r m a t = b , f i l e = h e a p . d u m p # 2 . 使 用 M A T 分 析 # 关 注 D o m i n a t o r T r e e 中 的 大 对 象 # 查 看 L e a k S u s p e c t s 自 动 分 析 结 果 # 3 . 常 见 泄 漏 点 检 查 j m a p h i s t o | h e a d 2 0 # 重 点 关 注 实 例 数 量 异 常 的 类 堆 外 内 存 泄 漏 1 2 3 4 5 6 # 使 用 p m a p 查 看 进 程 内 存 映 射 p m a p d | s o r t k 2 n r | h e a d 2 0 # 如 果 发 现 大 量 匿 名 映 射 , 可 能 是 D i r e c t B y t e B u f f e r 泄 漏 # 启 动 参 数 添 加 : X X : M a x D i r e c t M e m o r y S i z e = 1 G # 监 控 指 标 : j a v a . n i o : t y p e = B u f f e r P o o l , n a m e = d i r e c t 实 战 案 例 : 某 微 服 务 运 行 3 天 后 O O M , 堆 内 存 正 常 但 R S S 持 续 增 长 。 通 过 p m a p 发 现 大 量 6 4 M B 的 匿 名 映 射 , 最 终 定 位 到 N e t t y 的 D i r e c t B u f f e r 未 及 时 释 放 , 通 过 调 整 X X : M a x D i r e c t M e m o r y S i z e 和 优 化 连 接 池 解 决 。 G o 程 序 内 存 泄 漏 排 查 G o r o u t i n e 泄 漏 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 / / 监 控 g o r o u t i n e 数 量 f u n c m o n i t o r G o r o u t i n e s ( ) } } / / 使 用 p p r o f 分 析 i m p o r t _ n e t / h t t p / p p r o f / / 访 问 h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / g o r o u t i n e ? d e b u g = 1 / / 查 看 g o r o u t i n e 调 用 栈 内 存 分 配 分 析 1 2 3 4 5 6 7 8 9 1 0 1 1 # 1 . 生 成 内 存 p r o f i l e g o t o o l p p r o f h t t p : / / l o c a l h o s t : 6 0 6 0 / d e b u g / p p r o f / h e a p # 2 . 查 看 t o p 消 耗 ( p p r o f ) t o p 1 0 # 3 . 查 看 调 用 图 ( p p r o f ) w e b # 4 . 分 析 具 体 函 数 ( p p r o f ) l i s t f u n c N a m e 常 见 G o 内 存 泄 漏 模 式 : C h a n n e l 未 关 闭 导 致 g o r o u t i n e 阻 塞 T i m e r 未 s t o p 导 致 资 源 未 释 放 全 局 m a p 持 续 增 长 未 清 理 快 速 排 查 工 具 集 系 统 级 内 存 分 析 1 2 3 4 5 6 7 8 9 1 0 # 1 . 查 看 系 统 内 存 使 用 f r e e h c a t / p r o c / m e m i n f o # 2 . 查 看 进 程 内 存 详 情 c a t / p r o c / / s t a t u s | g r e p E ( V m R S S | V m S i z e ) c a t / p r o c / / s m a p s | g r e p E ( S i z e | R s s ) | a w k E N D # 3 . 实 时 监 控 内 存 变 化 w a t c h n 1 p s a u x s o r t = % m e m | h e a d 1 0 V a l g r i n d 检 测 C / C + + 内 存 泄 漏 1 2 3 4 5 6 7 # 编 译 时 添 加 调 试 信 息 g c c g o m y a p p m y a p p . c # 使 用 v a l g r i n d 检 测 v a l g r i n d t o o l = m e m c h e c k l e a k c h e c k = f u l l . / m y a p p # 关 注 输 出 中 的 d e f i n i t e l y l o s t 和 p o s s i b l y l o s t 预 防 措 施 代 码 审 查 要 点 资 源 管 理 : 确 保 每 个 n e w / m a l l o c 都 有 对 应 的 d e l e t e / f r e e 智 能 指 针 : C + + 优 先 使 用 s h a r e d _ p t r / u n i q u e _ p t r d e f e r 语 句 : G o 中 及 时 释 放 资 源 t r y w i t h r e s o u r c e s : J a v a 中 自 动 管 理 资 源 监 控 告 警 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # P r o m e t h e u s 告 警 规 则 a l e r t : H i g h M e m o r y U s a g e e x p r : ( p r o c e s s _ r e s i d e n t _ m e m o r y _ b y t e s / 1 0 2 4 / 1 0 2 4 ) > 2 0 0 0 f o r : 5 m a n n o t a t i o n s : s u m m a r y : P r o c e s s m e m o r y u s a g e > 2 G B a l e r t : M e m o r y G r o w t h R a t e e x p r : i n c r e a s e ( p r o c e s s _ r e s i d e n t _ m e m o r y _ b y t e s [ 1 h ] ) / 1 0 2 4 / 1 0 2 4 > 5 0 0 f o r : 1 0 m a n n o t a t i o n s : s u m m a r y : M e m o r y g r o w t h r a t e > 5 0 0 M B / h o u r 内 存 泄 漏 问 题 往 往 隐 蔽 性 强 , 影 响 面 广 。 建 立 完 善 的 监 控 和 快 速 定 位 能 力 , 是 保 障 服 务 稳 定 性 的 关 键 。 D e b u g g i n g G o J a v a M e m o r y L e a k P e r f o r m a n c e 2 0 2 3 0 3 1 5 S y s t e m A d m i n i s t r a t i o n L i n u x 系 统 性 能 调 优 实 战 指 南 L i n u x 系 统 性 能 调 优 实 战 指 南 作 为 一 名 后 台 开 发 工 程 师 , 我 在 生 产 环 境 中 经 常 需 要 面 对 各 种 性 能 问 题 。 经 过 多 年 的 实 践 , 我 总 结 了 一 套 相 对 完 整 的 L i n u x 系 统 性 能 调 优 方 法 论 。 这 篇 文 章 将 从 C P U 、 内 存 、 网 络 、 磁 盘 I O 四 个 维 度 , 结 合 实 际 案 例 来 分 享 我 的 调 优 经 验 。 前 言 : 性 能 调 优 的 思 维 模 式 性 能 调 优 不 是 玄 学 , 而 是 基 于 数 据 的 科 学 分 析 过 程 。 我 的 调 优 原 则 是 : 先 测 量 , 再 优 化 没 有 测 量 数 据 支 撑 的 优 化 都 是 空 谈 找 瓶 颈 , 抓 主 要 矛 盾 系 统 总 有 最 短 的 那 块 板 小 步 快 跑 , 验 证 效 果 每 次 只 改 一 个 变 量 持 续 监 控 , 防 止 回 归 优 化 不 是 一 锤 子 买 卖 C P U 性 能 调 优 1 . C P U 使 用 率 分 析 C P U 问 题 通 常 分 为 两 类 : 计 算 密 集 型 ( C P U b o u n d ) 和 上 下 文 切 换 过 多 。 1 2 3 4 5 6 7 8 9 1 0 # 查 看 整 体 C P U 使 用 情 况 t o p p 1 h t o p # 查 看 每 个 C P U 核 心 的 使 用 情 况 m p s t a t P A L L 1 # 分 析 上 下 文 切 换 v m s t a t 1 # 重 点 关 注 c s ( c o n t e x t s w i t c h ) 和 i n ( i n t e r r u p t ) 指 标 实 战 案 例 1 : 高 上 下 文 切 换 问 题 某 次 线 上 故 障 , 发 现 服 务 响 应 变 慢 , C P U 使 用 率 并 不 高 ( 3 0 % ) , 但 l o a d a v e r a g e 很 高 ( 8 . 0 ) 。 通 过 v m s t a t 发 现 c s 值 异 常 高 , 达 到 5 0 0 0 0 + / s 。 定 位 过 程 : 1 2 3 4 5 6 # 查 看 进 程 上 下 文 切 换 详 情 p i d s t a t w p 1 # 发 现 某 个 进 程 的 v o l u n t a r y c o n t e x t s w i t c h e s 过 高 # 进 一 步 用 s t r a c e 跟 踪 系 统 调 用 s t r a c e c p 最 终 发 现 是 因 为 线 程 池 配 置 不 当 , 线 程 数 设 置 过 高 ( 2 0 0 个 线 程 ) , 在 高 并 发 下 频 繁 争 抢 锁 资 源 导 致 。 调 整 线 程 池 大 小 到 C P U 核 心 数 的 2 倍 后 , 上 下 文 切 换 降 到 正 常 水 平 。 2 . C P U 亲 和 性 优 化 对 于 关 键 进 程 , 可 以 通 过 C P U 亲 和 性 来 提 升 缓 存 命 中 率 : 1 2 3 4 5 # 将 进 程 绑 定 到 特 定 C P U 核 心 t a s k s e t c p 0 , 1 , 2 , 3 # 对 于 网 络 密 集 型 应 用 , 配 合 网 卡 中 断 绑 定 e c h o 2 > / p r o c / i r q / 2 4 / s m p _ a f f i n i t y 内 存 性 能 调 优 1 . 内 存 使 用 分 析 L i n u x 内 存 管 理 相 对 复 杂 , 需 要 理 解 b u f f e r / c a c h e 的 概 念 : 1 2 3 4 5 6 7 8 9 1 0 1 1 # 查 看 内 存 整 体 使 用 情 况 f r e e h c a t / p r o c / m e m i n f o # 查 看 进 程 内 存 使 用 详 情 p m a p d s m e m P # 分 析 内 存 分 配 情 况 c a t / p r o c / b u d d y i n f o c a t / p r o c / p a g e t y p e i n f o 实 战 案 例 2 : 内 存 泄 漏 排 查 某 J a v a 应 用 运 行 一 段 时 间 后 O O M , 通 过 监 控 发 现 R S S 内 存 持 续 增 长 。 排 查 步 骤 : 1 2 3 4 5 6 7 8 9 1 0 # 1 . 先 确 认 是 否 为 J a v a 堆 内 存 问 题 j m a p h i s t o j m a p d u m p : f o r m a t = b , f i l e = h e a p . d u m p # 2 . 如 果 堆 内 存 正 常 , 检 查 堆 外 内 存 p m a p d | s o r t k 2 n r | h e a d 2 0 # 3 . 发 现 大 量 6 4 M B 的 匿 名 映 射 , 怀 疑 是 直 接 内 存 # 通 过 J a v a 启 动 参 数 限 制 直 接 内 存 X X : M a x D i r e c t M e m o r y S i z e = 1 G 2 . S w a p 优 化 生 产 环 境 需 要 合 理 配 置 s w a p 策 略 : 1 2 3 4 5 6 7 8 9 # 查 看 s w a p 使 用 情 况 s w a p o n s c a t / p r o c / s w a p s # 调 整 s w a p p i n e s s 参 数 ( 推 荐 值 : 1 1 0 ) e c h o 5 > / p r o c / s y s / v m / s w a p p i n e s s # 对 于 数 据 库 服 务 器 , 建 议 完 全 禁 用 s w a p s w a p o f f a 网 络 性 能 调 优 1 . 网 络 连 接 分 析 1 2 3 4 5 6 7 8 # 查 看 网 络 连 接 状 态 s s t u l n n e t s t a t a n t p | a w k | s o r t | u n i q c # 查 看 网 络 流 量 i f t o p n e t h o g s n l o a d 2 . 内 核 网 络 参 数 优 化 针 对 高 并 发 服 务 的 典 型 优 化 配 置 : 1 2 3 4 5 6 7 8 9 1 0 1 1 # / e t c / s y s c t l . c o n f 核 心 参 数 n e t . c o r e . s o m a x c o n n = 6 5 5 3 5 n e t . c o r e . n e t d e v _ m a x _ b a c k l o g = 5 0 0 0 n e t . i p v 4 . t c p _ m a x _ s y n _ b a c k l o g = 6 5 5 3 5 n e t . i p v 4 . t c p _ f i n _ t i m e o u t = 1 0 n e t . i p v 4 . t c p _ t w _ r e u s e = 1 n e t . i p v 4 . t c p _ k e e p a l i v e _ t i m e = 6 0 0 n e t . i p v 4 . i p _ l o c a l _ p o r t _ r a n g e = 1 0 0 0 0 6 5 5 3 5 # 应 用 配 置 s y s c t l p 实 战 案 例 3 : C 1 0 K 问 题 解 决 某 A P I 服 务 在 并 发 连 接 数 超 过 5 0 0 0 时 性 能 急 剧 下 降 。 优 化 过 程 : 调 整 文 件 描 述 符 限 制 : u l i m i t n 6 5 5 3 5 优 化 T C P 参 数 : 重 点 调 整 s o m a x c o n n 和 t c p _ m a x _ s y n _ b a c k l o g 应 用 层 采 用 e p o l l 模 式 , 避 免 s e l e c t 的 f d 数 量 限 制 连 接 池 优 化 : 合 理 设 置 连 接 超 时 和 k e e p a l i v e 参 数 磁 盘 I O 性 能 调 优 1 . I O 性 能 分 析 1 2 3 4 5 6 7 8 9 # 查 看 I O 使 用 情 况 i o s t a t x 1 i o t o p # 分 析 进 程 I O 行 为 p i d s t a t d 1 p # 查 看 磁 盘 队 列 深 度 和 响 应 时 间 c a t / p r o c / d i s k s t a t s 2 . 文 件 系 统 优 化 不 同 的 文 件 系 统 适 用 于 不 同 场 景 : e x t 4 : 通 用 选 择 , 成 熟 稳 定 x f s : 大 文 件 性 能 好 , 适 合 日 志 存 储 b t r f s : 支 持 快 照 , 适 合 开 发 环 境 挂 载 参 数 优 化 : 1 2 3 4 5 # 针 对 高 I O 应 用 的 e x t 4 优 化 m o u n t o n o a t i m e , d a t a = w r i t e b a c k , b a r r i e r = 0 , n o b h / d e v / s d b 1 / d a t a # S S D 优 化 m o u n t o n o a t i m e , d i s c a r d , b a r r i e r = 0 / d e v / s s d 1 / s s d _ d a t a 系 统 级 调 优 策 略 1 . 内 核 参 数 调 优 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # 进 程 和 线 程 限 制 k e r n e l . p i d _ m a x = 4 1 9 4 3 0 4 k e r n e l . t h r e a d s m a x = 4 1 9 4 3 0 4 # 内 存 管 理 v m . d i r t y _ b a c k g r o u n d _ r a t i o = 5 v m . d i r t y _ r a t i o = 1 0 v m . v f s _ c a c h e _ p r e s s u r e = 1 5 0 # 网 络 缓 冲 区 n e t . c o r e . r m e m _ m a x = 2 6 8 4 3 5 4 5 6 n e t . c o r e . w m e m _ m a x = 2 6 8 4 3 5 4 5 6 2 . 进 程 调 度 优 化 对 于 关 键 进 程 , 可 以 调 整 调 度 优 先 级 : 1 2 3 4 5 # 提 高 进 程 优 先 级 ( n i c e 值 越 小 优 先 级 越 高 ) r e n i c e 1 0 # 使 用 实 时 调 度 策 略 ( 需 谨 慎 使 用 ) c h r t f p 5 0 监 控 和 告 警 体 系 性 能 调 优 不 是 一 次 性 工 作 , 需 要 建 立 完 善 的 监 控 体 系 : 1 . 核 心 指 标 监 控 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 # 系 统 整 体 负 载 u p t i m e c a t / p r o c / l o a d a v g # C P U 使 用 率 趋 势 s a r u 1 3 6 0 0 # 内 存 使 用 趋 势 s a r r 1 3 6 0 0 # I O 性 能 趋 势 s a r d 1 3 6 0 0 2 . 自 动 化 监 控 脚 本 我 常 用 的 监 控 脚 本 示 例 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 # ! / b i n / b a s h # s y s t e m _ m o n i t o r . s h T H R E S H O L D _ C P U = 8 0 T H R E S H O L D _ M E M = 8 5 T H R E S H O L D _ L O A D = 4 . 0 # C P U 检 查 C P U _ U S A G E = $ ( t o p b n 1 | g r e p C p u ( s ) | a w k | s e d s / % u s , / / ) i f ( ( $ ( e c h o $ C P U _ U S A G E > $ T H R E S H O L D _ C P U | b c l ) ) ) ; t h e n e c h o W A R N I N G : C P U u s a g e i s $ % f i # 内 存 检 查 M E M _ U S A G E = $ ( f r e e | g r e p M e m | a w k ) i f ( ( $ ( e c h o $ M E M _ U S A G E > $ T H R E S H O L D _ M E M | b c l ) ) ) ; t h e n e c h o W A R N I N G : M e m o r y u s a g e i s $ % f i # L o a d A v e r a g e 检 查 L O A D _ A V G = $ ( u p t i m e | a w k F l o a d a v e r a g e : | a w k F , | s e d s / ^ * / / ) i f ( ( $ ( e c h o $ L O A D _ A V G > $ T H R E S H O L D _ L O A D | b c l ) ) ) ; t h e n e c h o W A R N I N G : L o a d a v e r a g e i s $ f i 总 结 与 最 佳 实 践 经 过 多 年 的 实 践 , 我 总 结 的 性 能 调 优 最 佳 实 践 : 建 立 基 线 : 在 优 化 前 先 收 集 基 准 数 据 , 包 括 吞 吐 量 、 延 迟 、 资 源 使 用 率 等 逐 步 优 化 : 每 次 只 调 整 一 个 参 数 , 避 免 多 变 量 干 扰 压 力 测 试 : 在 测 试 环 境 复 现 生 产 负 载 , 验 证 优 化 效 果 文 档 记 录 : 记 录 每 次 调 优 的 参 数 、 效 果 和 回 滚 方 案 持 续 监 控 : 优 化 后 持 续 观 察 , 防 止 性 能 回 归 性 能 调 优 是 一 个 持 续 的 过 程 , 需 要 结 合 具 体 业 务 场 景 和 硬 件 条 件 。 希 望 这 篇 实 战 指 南 能 够 帮 助 到 正 在 进 行 性 能 优 化 的 同 行 们 。 在 后 续 的 文 章 中 , 我 会 继 续 分 享 更 多 关 于 高 并 发 架 构 设 计 和 分 布 式 系 统 优 化 的 经 验 。 参 考 资 料 : 《 性 能 之 巅 》 B r e n d a n G r e g g L i n u x 内 核 官 方 文 档 《 L i n u x 性 能 优 化 实 战 》 倪 朋 飞 L i n u x P e r f o r m a n c e S y s t e m s T u n i n g 1 2 N e x t C a t e g o r i e s A r c h i t e c t u r e D e s i g n C a c h e S t r a t e g y C o n t a i n e r T e c h n o l o g y D a t a b a s e O p t i m i z a t i o n N e t w o r k P r o g r a m m i n g P e r f o r m a n c e O p t i m i z a t i o n S y s t e m A d m i n i s t r a t i o n S y s t e m E n g i n e e r i n g W e b P e r f o r m a n c e T a g s A r c h i t e c t u r e C a c h e C o n n e c t i o n P o o l C o n t a i n e r D a t a b a s e D e b u g g i n g D e v O p s D i s t r i b u t e d S y s t e m s D o c k e r G o H i g h C o n c u r r e n c y I n d e x J a v a L i n u x M e m o r y L e a k M o n i t o r i n g M y S Q L N e t w o r k N g i n x O b s e r v a b i l i t y P e r f o r m a n c e P r o f i l i n g R e d i s R e s o u r c e M a n a g e m e n t R e v e r s e P r o x y S Q L O p t i m i z a t i o n S c a l a b i l i t y S y s t e m s T C P T r o u b l e s h o o t i n g T u n i n g W e b S e r v e r p p r o f T a g C l o u d A r c h i t e c t u r e C a c h e C o n n e c t i o n P o o l C o n t a i n e r D a t a b a s e D e b u g g i n g D e v O p s D i s t r i b u t e d S y s t e m s D o c k e r G o H i g h C o n c u r r e n c y I n d e x J a v a L i n u x M e m o r y L e a k M o n i t o r i n g M y S Q L N e t w o r k N g i n x O b s e r v a b i l i t y P e r f o r m a n c e P r o f i l i n g R e d i s R e s o u r c e M a n a g e m e n t R e v e r s e P r o x y S Q L O p t i m i z a t i o n S c a l a b i l i t y S y s t e m s T C P T r o u b l e s h o o t i n g T u n i n g W e b S e r v e r p p r o f A r c h i v e s M a y 2 0 2 5 F e b r u a r y 2 0 2 5 D e c e m b e r 2 0 2 4 S e p t e m b e r 2 0 2 4 J u n e 2 0 2 4 A p r i l 2 0 2 4 J a n u a r y 2 0 2 4 N o v e m b e r 2 0 2 3 J u l y 2 0 2 3 M a r c h 2 0 2 3 N o v e m b e r 2 0 1 7 R e c e n t P o s t s 数 据 库 索 引 设 计 的 几 个 误 区 D o c k e r 容 器 资 源 限 制 最 佳 实 践 N g i n x 反 向 代 理 的 性 能 优 化 G o 程 序 的 性 能 P r o f i l i n g 实 践 R e d i s 缓 存 穿 透 的 几 种 解 决 方 案 © 2 0 2 5 J i n P o w e r e d b y H e x o 粤 I C P 备 1 9 1 5 5 0 7 5 号 H o m e A r c h i v e s

网站说明:

www.841220.xyz由网友主动性提交被名站导航整理收录的,名站导航仅提供网站的基础信息并免费向大众网友展示,www.841220.xyz的IP地址:- 地址:-,百度PC权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、www.841220.xyz的备案号是-、备案主体是-、被百度收录的关键词有0个、手机端关键词有0个、该站点迄今为止已经创建未知。

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:https://www.hornyrob.com/bianchengdh/4317eb8d461c77f7b239.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
您可能还喜欢

TOP