在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ 14.6 pprof支持
7 文本處理
3 Web基礎(chǔ)
14 擴(kuò)展Web框架
10.4 小結(jié)
2.2 Go基礎(chǔ)
2.8 總結(jié)
6.1 session和cookie
5.5 使用beedb庫(kù)進(jìn)行ORM開(kāi)發(fā)
8.3 REST
13.6 小結(jié)
5.4 使用PostgreSQL數(shù)據(jù)庫(kù)
14.6 pprof支持
14.1 靜態(tài)文件支持
11.2 使用GDB調(diào)試
7.7 小結(jié)
1 GO環(huán)境配置
14.5 多語(yǔ)言支持
7.1 XML處理
1.5 總結(jié)
13 如何設(shè)計(jì)一個(gè)Web框架
14.3 表單及驗(yàn)證支持
12 部署與維護(hù)
10 國(guó)際化和本地化
1.1 Go 安裝
6.2 Go如何使用session
5.6 NOSQL數(shù)據(jù)庫(kù)操作
6.5 小結(jié)
9.4 避免SQL注入
12.1 應(yīng)用日志
4.2 驗(yàn)證表單的輸入
10.1 設(shè)置默認(rèn)地區(qū)
1.3 Go 命令
9.6 加密和解密數(shù)據(jù)
4.1 處理表單的輸入
4.4 防止多次遞交表單
11.3 Go怎么寫(xiě)測(cè)試用例
8 Web服務(wù)
12.3 應(yīng)用部署
5.7 小結(jié)
12.5 小結(jié)
11 錯(cuò)誤處理,調(diào)試和測(cè)試
9.2 確保輸入過(guò)濾
14.2 Session支持
6.4 預(yù)防session劫持
12.4 備份和恢復(fù)
8.1 Socket編程
13.1 項(xiàng)目規(guī)劃
13.4 日志和配置設(shè)計(jì)
7.6 字符串處理
13.2 自定義路由器設(shè)計(jì)
6.3 session存儲(chǔ)
3.4 Go的http包詳解
8.2 WebSocket
10.3 國(guó)際化站點(diǎn)
7.5 文件操作
7.4 模板處理
9.1 預(yù)防CSRF攻擊
13.3 controller設(shè)計(jì)
2.6 interface
14.4 用戶認(rèn)證
2.3 流程和函數(shù)
附錄A 參考資料
11.1 錯(cuò)誤處理
9.5 存儲(chǔ)密碼
9.3 避免XSS攻擊
12.2 網(wǎng)站錯(cuò)誤處理
6 session和數(shù)據(jù)存儲(chǔ)
2.4 struct類型
3.3 Go如何使得Web工作
2.5 面向?qū)ο?/span>
3.1 Web工作方式
1.2 GOPATH與工作空間
2.1 你好,Go
9.7 小結(jié)
13.5 實(shí)現(xiàn)博客的增刪改
7.2 JSON處理
10.2 本地化資源
7.3 正則處理
2 Go語(yǔ)言基礎(chǔ)
5.1 database/sql接口
4.5 處理文件上傳
8.5 小結(jié)
4.3 預(yù)防跨站腳本
5.3 使用SQLite數(shù)據(jù)庫(kù)
14.7 小結(jié)
3.2 Go搭建一個(gè)Web服務(wù)器
2.7 并發(fā)
5 訪問(wèn)數(shù)據(jù)庫(kù)
4 表單
3.5 小結(jié)
1.4 Go開(kāi)發(fā)工具
11.4 小結(jié)
9 安全與加密
5.2 使用MySQL數(shù)據(jù)庫(kù)
4.6 小結(jié)
8.4 RPC

14.6 pprof支持

Go語(yǔ)言有一個(gè)非常棒的設(shè)計(jì)就是標(biāo)準(zhǔn)庫(kù)里面帶有代碼的性能監(jiān)控工具,在兩個(gè)地方有包:

net/http/pprof

runtime/pprof

其實(shí)net/http/pprof中只是使用runtime/pprof包來(lái)進(jìn)行封裝了一下,并在http端口上暴露出來(lái)

beego支持pprof

目前beego框架新增了pprof,該特性默認(rèn)是不開(kāi)啟的,如果你需要測(cè)試性能,查看相應(yīng)的執(zhí)行g(shù)oroutine之類的信息,其實(shí)Go的默認(rèn)包"net/http/pprof"已經(jīng)具有該功能,如果按照Go默認(rèn)的方式執(zhí)行Web,默認(rèn)就可以使用,但是由于beego重新封裝了ServHTTP函數(shù),默認(rèn)的包是無(wú)法開(kāi)啟該功能的,所以需要對(duì)beego的內(nèi)部改造支持pprof。

  • 首先在beego.Run函數(shù)中根據(jù)變量是否自動(dòng)加載性能包

      if PprofOn {
          BeeApp.RegisterController(`/debug/pprof`, &ProfController{})
          BeeApp.RegisterController(`/debug/pprof/:pp([\w]+)`, &ProfController{})
      }
  • 設(shè)計(jì)ProfConterller

      package beego
    
      import (
          "net/http/pprof"
      )
    
      type ProfController struct {
          Controller
      }
    
      func (this *ProfController) Get() {
          switch this.Ctx.Params[":pp"] {
          default:
              pprof.Index(this.Ctx.ResponseWriter, this.Ctx.Request)
          case "":
              pprof.Index(this.Ctx.ResponseWriter, this.Ctx.Request)
          case "cmdline":
              pprof.Cmdline(this.Ctx.ResponseWriter, this.Ctx.Request)
          case "profile":
              pprof.Profile(this.Ctx.ResponseWriter, this.Ctx.Request)
          case "symbol":
              pprof.Symbol(this.Ctx.ResponseWriter, this.Ctx.Request)
          }
          this.Ctx.ResponseWriter.WriteHeader(200)
      }

使用入門(mén)

通過(guò)上面的設(shè)計(jì),你可以通過(guò)如下代碼開(kāi)啟pprof:

beego.PprofOn = true

然后你就可以在瀏覽器中打開(kāi)如下URL就看到如下界面: http://wiki.jikexueyuan.com/project/go-web-programming/images/14.6.pprof.png" alt="" />

圖14.7 系統(tǒng)當(dāng)前goroutine、heap、thread信息

點(diǎn)擊goroutine我們可以看到很多詳細(xì)的信息:

http://wiki.jikexueyuan.com/project/go-web-programming/images/14.6.pprof2.png" alt="" />

圖14.8 顯示當(dāng)前goroutine的詳細(xì)信息

我們還可以通過(guò)命令行獲取更多詳細(xì)的信息

go tool pprof http://localhost:8080/debug/pprof/profile

這時(shí)候程序就會(huì)進(jìn)入30秒的profile收集時(shí)間,在這段時(shí)間內(nèi)拼命刷新瀏覽器上的頁(yè)面,盡量讓cpu占用性能產(chǎn)生數(shù)據(jù)。

(pprof) top10

Total: 3 samples

   1 33.3% 33.3% 1 33.3% MHeap_AllocLocked

   1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors

   1 33.3% 100.0% 1 33.3% runtime.sigprocmask

   0 0.0% 100.0% 1 33.3% MCentral_Grow

   0 0.0% 100.0% 2 66.7% main.Compile

   0 0.0% 100.0% 2 66.7% main.compile

   0 0.0% 100.0% 2 66.7% main.run

   0 0.0% 100.0% 1 33.3% makeslice1

   0 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP

   0 0.0% 100.0% 2 66.7% net/http.(*conn).serve 

(pprof)web

http://wiki.jikexueyuan.com/project/go-web-programming/images/14.6.pprof3.png" alt="" />

圖14.9 展示的執(zhí)行流程信息