14.2ゴーパフォーマンスの最適化
最適化の方法
1.减少HTTP请求数,合并CSS、JS、图片 2.使用CDN,就近访问 3.启用nginx gzip压缩,降低传输内容大小 4.优化后端api性能
APIサービスのパフォーマンスの最適化の目標
1.线上程序是黑盒状态 2.通过性能分析,可知程序占用多少资源 3.找到系统瓶颈
パフォーマンスの最適化の方向に行きます
1.Cpu维度优化 2.Mem维度优化 3.锁竞争维度的优化
1.1パフォーマンスの最適化の原則
1.知道程序占用了多少资源,如cpu,内存量 2.知道程序的函数占用资源比例 3.如有A,B两个数据就可以快速定位到系统瓶颈 4.通过pprof,每隔一段时间10ms采集当前堆栈信息,获取各个函数占用的cpu以及内存资源 pprof完毕后,通过对数据进行分析,形成分析报告。
CPUのパフォーマンスの最適化
import ("runtime/pprof")//采集性能分析的数据 开始cpu性能分析,pprof.StartCPUProfile(w io.Writer) 停止CPU性能分析 pprof.StopCPUProfile()
1.1.1。PProf
パフォーマンスの最適化は、それ自体が分析の基礎として提供GOツールチェーンのすべての注目の最初、したい、この記事では、庭園を戻る使用、学ぶために行くことができます、それは以下が含まれます。
- ランタイム/ pprof:取得プログラム(非サーバ)分析のために動作するデータ
- ネット/ HTTP / pprof:分析のためのHTTP Serverランタイムデータ収集
データのパフォーマンスを分析するための可視化および分析ツールpprof
するpprof profile.proto サンプルセットを分析読み、データを視覚化し、分析するのに役立つレポートを生成(テキストとグラフィックスがレポートをサポート)
profile.protoプロトコルバッファV3は呼び出しスタックおよび象徴情報のセットを記述する記述ファイルであり、コールスタック効果は、サンプルのセットの統計的分析は、非常に一般的なコンフィギュレーションファイルフォーマットスタックトレースであります
1.1.2。使用パターンをサポートしていますどのような
- レポート作成:レポート生成
- 対話型端末の使用:対話型端末を使用して
- Webインターフェイス:Webインターフェイス
1.1.3。何ができますか
- CPUプロファイリング:CPU分析は、特定の周波数の取得に応じて(レジスタを含む)、アプリケーションCPUは、アプリケーションが消費アクティブCPUサイクルに費やされる時間の位置を決定することができ、使用されるリッスン
- メモリプロファイリング:メモリの現在および過去のメモリ使用量を監視するためのアプリケーション・ヒープ割り当てスタックトレースの時に記録、分析、ならびにメモリリークチェック
- ブロックプロファイリング:分析閉塞、(タイマ・チャネルを含む)ゴルーチンを待っているシンクブロックの記録位置
- ミューテックスプロファイリング:ミューテックス分析、競合状況報告ミューテックス