博客pprof分析

给blog程序做了个pprof分析。

先是安装  工具库

go get github.com/pkg/profile

然后再引入

import "github.com/pkg/profile"

再在入口中加入代码

defer profile.Start(profile.CPUProfile).Stop()

然后go build,ab跑需要的值。

再go tool pprof ./app pprfo文件位置,输入web指令,看到全图,能按时间占用来分析网站的问题点在哪了。


就我这次分析,一共是151s/238s。

其中

http请求头解析 13s

http相应写入 26.8s

属于硬消耗,除非不使用net/http,否则基本无法避免和优化。

fd操作:

accept fd_unix 6.07s

destory fd_unix 9.76应该也是避不过。

msgpack的反序列化是27s,比我一直预期的其实要更好。

然后大头就是redis连接使用的70s了。

直接就占了总cpu消耗的1/3了。

看来只要用了 redis库,这个数量级就逃不掉了。

唯一能优化的地方是,为了能按分类优化,我加如了一个临时前缀。

这部分走的也是redis,占用了大概占用了一般的redis消耗,这是个很大的问题。


发布于
2017-12-13

博客负优化中

最近终于有了一点时间,开始完善自己的go框架,拿博客作为方向。

重做用户系统,加入评论功能。

在修改/调整缓存模块的时候,再跑了一下ab,发现网站访问的愈发的慢了。

同一台2014 rmbp

在使用freecache做程序内缓存的时候,从之前有记录可查的首页18k rps/内页22k rps下降到了 13k /18k

驱动切换为redis的话,低到令人发指的,8k.12k

连c10k都实现不了了。

充分暴露我了我只是一个喜欢写代码的渣渣票友的本质……

真担心等真的调整完功能都实现后rps连php都不如了。

只能催眠自己这是因为电脑Cpu老化了,终于有理由可以换新电脑了-_____-

发布于
2017-12-13

后台简易版本制作完成

总的来说,blog的整个骨架都出来了。

用msgpack代替了gob做序列话。gob无论效率和使用方法实在有些蛋疼。

用ngadmin做了后台的前端部分。不得不说,还是个很好用的组件。

还有很多架构要调整,细节要处理。

但勉强一个网站还是可以用了

总比在mysql中直接更新靠谱多了

发布于
2017-02-27

用golang重做了blog

在熟悉golang的时候,练手做了一套middleware

链接:herb-go

顺手把网站重做了一下,作为测试。

总体来说,golang的模板系统在熟悉后还是很棒的,很容易就把php模板转了过来。一开始准备用mustache做模板倒显得有些无聊了

数据库这块没用orm,用sql模块还是有些手累新累的

序列化比较蛋疼,gob的序列化不能包裹在函数里,只能传writer,让人无语。相对而言JSON的序列化就好用很多了。可惜我要做页面的缓存,直接缓存[]byte,不适合JSON

http模块的responsewriter的包装也有点麻烦

但看Header里2xxxxx ns的执行时间,还是很爽的

尽管基本都用freecache缓存在内存了

下一步要把后台做出来。现在这样直接更新数据库太恶搞了些

发布于
2017-02-22

2016最后一次网站更新

修正裸域名https错误。不知道为什么百度收录的都是https://jarln.net的网站。

自适应加入简单的手机版本。

发布于
2016-12-28