一、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流量整形功能 流量整形示例代碼 流量整形功能測試 流量整形工作原理和源碼分析 并發程式設計在流量整形中的應用 使用流量整形的一些注意事項