golang pprof记录

mud 客户端有内存泄露,调试了一把,记录一下。

首先,引入 profile库

import "net/http/pprof"


然后合适的地方引入

runtime.SetBlockProfileRate(int(10 * time.Second))
runtime.SetMutexProfileFraction(int(10 * time.Second))
Router.Handle("/debug/pprof/").HandleFunc(pprof.Index)
Router.Handle("/debug/pprof/cmdline").HandleFunc(pprof.Cmdline)
Router.Handle("/debug/pprof/profile").HandleFunc(pprof.Profile)
Router.Handle("/debug/pprof/symbol").HandleFunc(pprof.Symbol)
Router.Handle("/debug/pprof/trace").HandleFunc(pprof.Trace)


SetBlockProfileRate是设置记录block的代码的值,单位是纳秒

SetMutexProfileFraction是设置记录锁起效代码的值。

然后打开debug/pprof页面



allocs
4	block
0	cmdline
17	goroutine
232	heap
0	mutex
0	profile
21	threadcreate
0	trace

其中重点关注的是 goroutine,heap,block几块

goroutine是看实时的goroutine数量和发起位置。如果不停增长,可能是泄露

heap是堆,数值是一直增长的。点入后看到的数据,建议加上gc=1参数强制gc一次

第一行的数字大概是

2: 58368 [2474: 8919408] @ heap/1048576


第二个数字58368是当前堆内存大小,最后一个数字1048576是最大使用的堆内存

然后是按当前使用内存大小的堆信息,大概是

1: 57344 [1: 57344]

第一个57344是当前使用的堆内存

方括号内的57344是最大使用过的堆内存。


发布于
2021-07-07

[记录]aliyun vpc的坑

今天给一台阿里云服务器换了vpc,踩了点坑

表现为网站无法打开,vnc链接后服务器无网络

总结如下

  1. 切换vpc需要改ecs的网络配置
  2. ecs的网络配置,用dhcp未必起效
  3. 手工设置ecs的网络配置时,可能需要设置网关
  4. 网关地址没找到说明,我是把网段最后几个保留ip按个ping,再倒数第三个能ping同,然后设为网关,通了。

另外吐槽下,阿里云的工单改版。

不能直接提交工单,出来个伪对话框,普通工单120分钟内回复,紧急工单90分钟内回复,付钱10分钟内回复。

很好,很强大。

发布于
2021-02-25

腾讯企业邮箱开始不干人事了

收到了腾讯企业邮箱的邮件

贵公司正在使用基础版的企业邮箱,目前有 5 个成员使用容量已超过普通帐号的 2G 上限,当前为超容使用中。建议将贵公司的企业邮箱升级到专业版,并把这些成员账号升级为VIP账号,即可不受容量限制。同时,专业版提供更多便捷管理功能,让工作更高效。了解专业版及VIP账号 注意:5天后,若邮箱账号未及时升级到VIP账号,2月24日起,这些账号容量将降级为标准容量。超出容量限制的邮箱账号将无法收到新的邮件,请提醒成员及时清理历史邮件,以免影响邮箱的正常使用。

无力吐槽。

啥玩意?

你要收费正常,之前的用户你觉得给的容量太多也正常。

但提前一周不到给个这个邮件?

这是准备做商业客户的态度?

你微盘送的免费空间吃了吐也就算了。

做对公业务的,早点提醒会死么?

但凡遇到个付款要审批的,怎么搞?

发布于
2021-02-19

[记录]踩了golang的defer/recover的坑

今天写代码的时候完了个花活,想复用recover,结果炸了……

体现在recover没起效,直接panic出来了。

查了下,defer里一旦再调用函数,原有上下文就变了,recover就失效了。

想想也有道理。

改了个骚气代码,解决了

q.Recover = func() {
defer n.Recover()
if r := recover(); r != nil {
panic(r)
}
}
发布于
2021-01-18

阿里云cdn全站加速无法缓存图片的解决

部分php生成的图片无法缓存,响应头永远是 x-cache: MISS TCP_MISS dirn:-2:-2

x-cache:

MISS TCP_MISS dirn:-2:-2
x-cache:

MISS TCP_MISS dirn:-2:-2

经过测试,需要设置缓存过期时间,并移除掉 Pragma 响应头


apache为例

Header unset Pragma

为什么这种特性在文档没有……

奇葩……


发布于
2020-12-31

[备份] 国家广播电视总局发布规定「网络直播不得为劣迹艺人提供公开出镜发声机会」,你支持吗?

https://www.zhihu.com/question/431922368


支持。

看着那些口口声声不支持的笑笑。

得了吧,上层建筑之所以是上层建筑,是因为付出了血与火的代价的,不管是谁的代价。

能够让别人付出代价本来就是一种最珍惜的能力。

老百姓哪管你这种有的没的,能让老百姓过上好日子的就是好上层建筑。

什么叫群众,不是人多就叫群众,还是能带领最多的人才叫群众。

“最广大人民群众根本利益”

先能理解这句话再说吧。

说句大点的话,这个才是所谓的“普世价值”,只不过不同的国家因为实际的管辖区域/人员分布/民俗习惯等,采用了不同的形式去控制而已,粗暴直接一点或者文明清柔一点罢了。

再回到原题。

整治直播是为什么。

是为了放开直播的口子。

为什么要放开直播?

因为直播能吸引劳动力。

为什么需要吸引劳动力?

因为……

老大立下规矩,让大家一起喝汤。

你还在问谁是老大……

不知道这个回答能或多久,很久没7天了,稍微放纵一点……

发布于
2020-11-30

选择Golang的json schema库蛋疼了

最近在整理数据验证这一块,看了下json schema下的3款golang 实现,十分蛋疼。

我对于json schema 验证库的要求比较简单,要求就是以下几点

  • 能自定义错误信息模板
  • 能获取错误类型,进行分类处理
  • 能得到错误发生的数据的JSON Pointer
  • 能获得错误发生的数据位置的Shcema信息,比如title,描述

这点,php的库

https://docs.opis.io/json-schema/1.x/php-validation-result.html

都能很好的满足。

换成go的库,各有各的问题 

https://github.com/xeipuuv/gojsonschema

这个库相对而言最靠谱点,问题是没有JSON Pointer,也没有相关的Schema信息

https://github.com/santhosh-tekuri/jsonschema

这个库有JSON Pointer,但是错误信息只有 数据的pointer,schema的pointer,mesage,非常蛋疼

https://github.com/qri-io/jsonschema

这个库有数据Pointer,但没有schema的数据,只有message。

考虑要拉个库下来改一下了……

发布于
2020-11-02

放弃节食

疫情体重反弹后,由于减少了运动量,体重迟迟降不下来,开始减少中午的食量。

从原先的馄饨或者寿司,降低到鸡胸肉+玉米+苹果,再到苹果+番茄,辅以跑代走,体重依然无法下降。

每周必然有1到2次暴食。

痛定思痛。

放弃长期的节食

可以偶尔节制下,长期节食除了折磨自己的意志以外,毫无用途。

上一波控制饮食,同样的体重能保持每周1公斤的减重。

这一拨完全压不下来,必然是策略错了。

发布于
2020-09-11

配置了下scrcpy,基本能正常使用的状态

配置了一下scrcpy,大体如下:

1.还是使用usb连接,无线链接方式看起来太蛋疼,突然觉得自己的无线充电器白买了。

2.由于我使用的是gnome3环境,在设置里添加了一个快捷键 scrcpy -w -S --always-on-top

3.手机输入法对比了QQ,迅飞,搜狗后,用了搜狗。QQ在知乎评论时不稳定,迅飞没办法按Shift+6输入省略号,这明显影响本阴阳大师发挥。至于百度,不管系统自带的华为版还是新安装的,都不支持键盘输入中文,真是废物……

继续使用,看看感觉。

总体来说。似乎不如华为自己的多屏联动方案省心强大。

发布于
2020-09-03

mate 30 第一天 体验

mate 30 入手了。

总的来说,体验不错。

除了google服务不好安装,想了先日常也不用什么国外应用,准备光速虚拟机解决了。

信号是真的比mix 2 强多了。

人脸识别,屏下指纹的组合也不错。

多开只能多开微信和qq也是缺点。

其他的,基本上是越用越喜欢了。

发布于
2020-08-10