天天看點

Netty性能優化

一、netty線程模型

1、傳統阻塞 I/O 網絡模型

2、Reactor網絡模型

3、單Reactor單線程

4、單Reactor多線程

5、主從Reactor多線程

二、netty意外退出及優化

1、netty服務端意外退出問題重演

2、Java Daemon線程(守護線程)

3、netty服務端啟動原理

4、NioEventLoop線程詳解

5、Netty的ChannelFuture機制

6、如何防止Netty服務意外退出

7、實際項目中的優化政策

8、kill -9 pid強殺netty程序可能引發的問題

9、Java優雅退出機制

10、Java優雅退出注意點

11、Netty優雅退出機制

12、Netty優雅退出原理和源碼分析

三、netty用戶端連接配接池洩露及優化

1、Netty連接配接池資源洩漏問題重演

2、Netty連接配接池錯誤代碼示範

3、Netty用戶端運作之後抛出異常詳解

4、異常原因:錯用了NIO程式設計模式(本質上是BIO模型)

5、Netty連接配接池正确的建立方式代碼示範

6、修改代碼之後的線程模型詳解

7、Bootstrap工具類的工作原理

8、并發安全和資源釋放錯誤代碼示範

9、java NIO用戶端建立原理分析

10、Netty用戶端建立原理分析

11、Bootstrap連接配接伺服器原理

四、netty記憶體池洩露及優化

Netty記憶體池洩露故障複現

Netty記憶體池洩露錯誤代碼片段詳解

采集堆記憶體快照分析

問題排查詳細過程

Netty記憶體釋放深層解析(writeAndFlush方法)

Netty記憶體釋放深層解析(read方法)

ByteBuf申請和釋放場景分析

Netty記憶體池的性能壓測對比

五、ByteBuf故障排查及優化

HTTP協定棧ByteBuf使用不當問題

HTTP協定棧ByteBuf正确使用解決方案

ByteBuf使用注意事項

java原生ByteBuffer的局限性

Netty ByteBuf工作原理分析

ByteBuf引用計數器工作原理和源碼分析

六、netty發送隊列積壓及優化

Netty發送隊列積壓故障

Netty高并發故障複現

Netty高并發故障示例代碼

Netty高并發故障異常資訊分析

統計GC,老年代已滿,發生多次Full GC分析

CPU被大量GC線程占用分析

dump記憶體,mat工具檢視洩漏點(NioEventLoop)分析

大量WriteAndFlushTask及用戶端發送資訊積壓分析

WriteAndFlashTask源碼分析

如何防止隊列積壓?

Netty高水位機制原理

Netty消息積壓其他因素

Netty消息發送機制

分析結論

ChannelOutboundBuffer原理和源碼分析

Netty消息發送原理

七、api網關高并發性能波動及優化

Netty高并發性能波動故障

故障示例代碼分析

故障異常資訊分析

dump記憶體,mat工具檢視洩漏點(ThreadPoolExecutor)分析

LinkedBlockingQueue中積壓大量的char數組分析

故障原因猜測

故障根本原因

圖解故障根本原因

故障解決優化方案

主動記憶體洩漏定位法

優化建議

八、netty Channelhandler并發安全陷阱

這樣的代碼安全嗎?

串行執行的ChannelHandler

測試不同線程執行同一個ChannelHandler

跨鍊路共享ChannelHandler

共享ChannelHandler中變量的安全性

ChannelHandler并發陷阱的場景1

ChannelHandler并發陷阱的場景2

消息在ChannelPipeline中流轉的原理圖分析

ChannelPipeline通過連結清單管理ChannelHandler

九、netty ChannelHandler并發失效及優化

配置了線程池,但是業務ChannelHandler無法并發執行分析

設定用戶端以100QPS的速度壓測服務端,吞吐量個位數分析

原因排查,檢查線程數,隻有1個defaultEventExecutorGroup線程

DefaultEventExecutor源碼解析

為什麼無法并行執行?

并行執行優化政策1:使用EventExecutorGroup

并行執行優化政策2:使用ExecutorService

如何選擇優化政策:圖解優化政策1

如何選擇優化政策:圖解優化政策2

十、netty NioEventLoop線程夯住及優化

故障複現示範

故障排查:cpu,記憶體等名額都正常

故障排查:GC分析,正常

故障排查:dump線程,檢視線程堆棧資訊

故障原因分析

故障示範

NioEventLoop線程防夯死政策

Netty多線程最佳實踐

十一、netty性能統計誤區

時延毛刺問題

性能統計不一緻分析

同步思維惹的禍

writeAndFlush處理流程分析

分析writeAndFlush方法,忽略的幾個耗時

正确的消息發送速度性能統計政策

常見的消息發送性能統計誤區

代碼示範Netty關鍵性能名額采集政策

十二、netty事件觸發政策使用不當案例

ChannelHandler調用問題

生産環境問題模拟重制

channelReadComplete方法調用

ChannelHandler職責鍊調用

十三、netty流量整形案例

通用流量整形功能

netty流量整形功能

流量整形示例代碼

流量整形功能測試

流量整形工作原理和源碼分析

并發程式設計在流量整形中的應用

使用流量整形的一些注意事項

繼續閱讀