请注意,Zanblog并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome

通过golang goroutine stack分析死锁问题

Golang 97 views
前言:       碰到死锁是一个很让人糟心的事情 ! 更让人无语的事,在测试环境中压力测试了好久都是ok的, 一点毛病都没有。但一到线上的正式环境居然出现死锁了。 主要现象是 队列中的任务不再被消费了,也没有相关的日志输出。 通过我们业务stats接口是可以看到进程内的状态, 队列确实没人消费。 ...
阅读全文 0

通过golang goroutine stack分析死锁问题

4-16 97 views

前言:       碰到死锁是一个很让人糟心的事情 ! 更让人无语的事,在测试环境中压力测试了好久都是ok的, 一点毛病都没有。但一到线上的正...
阅读全文 0

记一次隐式转换引起的sql慢查询

DB 61 views
前言:         实在很无语呀,遇到一个mysql隐式转换问题,问了周边的dba大拿该问题,他们居然反问我,你连这个也不知道?白白跟他们混了那么长   尼玛,我还真不知道。罪过罪过….          该文章后续仍在不断的更新修改中, 请移步到...
阅读全文 0

记一次隐式转换引起的sql慢查询

4-13 61 views

前言:         实在很无语呀,遇到一个mysql隐式转换问题,问了周边的dba大拿该问题,他们居然反问我,你连这个也不知道?白白跟他...
阅读全文 0

技术分享之《Golang高性能实战》

Golang,技术分享 316 views
前言:       2018年后就一直计划在公司做一次技术分享,但迟迟没有确定好主题。正好公司好多同事都开始学习golang,  正好到了由入门到晋级的阶段。 我这边golang也有一两年的经验了,对于golang在高并发场景上的设计有一定的理解,所以 有了这次的分享。 分享的主题是 golang高性能实战, 偏高...
阅读全文 0

技术分享之《Golang高性能实战》

4-09 316 views

前言:       2018年后就一直计划在公司做一次技术分享,但迟迟没有确定好主题。正好公司好多同事都开始学习golang,  正好到了由入...
阅读全文 0

使用monkey补丁替换golang的标准库

Golang 114 views
前言:        什么是monkey ? 英语里面试猴子,但程序里面我们称之为 补丁.  用过python gevent的朋友应该很熟悉这个monkey补丁字眼吧。 对的,这里golang的monkey实现的功能跟gevent monkey是一样的,都是为了粗暴直接的替换标准库。 该文章后续仍在不断更新中, 请移步到原文地址&nb...
阅读全文 0

使用monkey补丁替换golang的标准库

4-02 114 views

前言:        什么是monkey ? 英语里面试猴子,但程序里面我们称之为 补丁.  用过python gevent的朋友应该很熟悉这个monkey补...
阅读全文 0

分析golang定时器cpu使用率高的现象

Golang 215 views
前言:       废话少说,上线一个用golang写的高频的任务派发系统,上线跑着很稳定,但有个缺点就是当没有任务的时候,cpu的消耗也在几个百分点。 平均值在3%左右的cpu使用率。你没有任务的时候,cpu还跑到3%,这个说不过去呀。通过查看进程pidstat捕获得知,system系统的cpu消耗也不少。 sys的cpu占...
阅读全文 0

分析golang定时器cpu使用率高的现象

3-28 215 views

前言:       废话少说,上线一个用golang写的高频的任务派发系统,上线跑着很稳定,但有个缺点就是当没有任务的时候,cpu的消耗也在几个...
阅读全文 0

通过火焰图排查golang json的性能问题

Golang 173 views
前言:       最近要上线一个golang写的高频服务端,上线前理所当然要压测一把。 在压力源足够的情况下,发现golang服务的cpu相对有些高,怎么办? 直接上golang的神器pprof来排查问题, 通过pprof可以分析heap对象,协程的stack调用栈,当前的协程数,还可以构建火焰图等等。 该文章后续仍在...
阅读全文 0

通过火焰图排查golang json的性能问题

3-18 173 views

前言:       最近要上线一个golang写的高频服务端,上线前理所当然要压测一把。 在压力源足够的情况下,发现golang服务的cpu相对有些高...
阅读全文 0

wrk用lua脚本构建复杂的http压力测试

运维,运维基础,高性能 207 views
前言:       以前一说到http的压力测试工具,多数人会说 ab、webbench、siege。 但这些工具不管是性能还是复杂度已经不能满足我们的需求了。 其实我从16年就开始接触wrk压力测试工具,先前使用的方法比较简单粗暴,那你可以想象的出来,用wrk只是为了更好的获取吞吐。      ...
阅读全文 0

wrk用lua脚本构建复杂的http压力测试

3-14 207 views

前言:       以前一说到http的压力测试工具,多数人会说 ab、webbench、siege。 但这些工具不管是性能还是复杂度已经不能满足我们...
阅读全文 0

技术分享之《Mysql快速讲义》

技术分享 250 views
前言:       前两天在望京一朋友公司做了一次技术分享,算是有点收获吧。 先前我在16, 17年就在那边做过几次分享,因为是互相交流,所以大家彼此也都能学到些东西。这次过来捧场的还是那几个韩国人和老乡。韩国人能听懂?他们在中国很多年了,中国通.       长话短说,...
阅读全文 0

技术分享之《Mysql快速讲义》

3-07 250 views

前言:       前两天在望京一朋友公司做了一次技术分享,算是有点收获吧。 先前我在16, 17年就在那边做过几次分享,因为是互相交流,...
阅读全文 0

扩展golang的sync mutex的trylock及islocked

Golang 267 views
前言:       golang sync mutex本身是很好好用,但我的业务逻辑里面需要 非阻塞模式的拿锁 及 非阻塞得知锁的状态。那么说这么复杂,简单说是什么个意思? trylock, 我可以用非阻塞的模型进行拿锁,要么拿到锁,要么锁被别人拿到。 islocked, 就是判断锁的状态。 该文章后续仍在不断更新中,...
阅读全文 0

扩展golang的sync mutex的trylock及islocked

2-27 267 views

前言:       golang sync mutex本身是很好好用,但我的业务逻辑里面需要 非阻塞模式的拿锁 及 非阻塞得知锁的状态。那么说这么复杂...
阅读全文 0

分析nginx upstream权重为0和删除节点

运维 280 views
前言:         nginx upstream是大家经常使用的东西,通过upstream方法可以轻易的实现服务的负载均衡。 但往往很多人不理解nginx upstream删除主机跟权重配置为0有什么细节上的区别,从官方的介绍里也只能简单得知,weight = 0 不转发新请求,删除主机用来下线。 但你要明白这类操作对于长连...
阅读全文 0

分析nginx upstream权重为0和删除节点

2-23 280 views

前言:         nginx upstream是大家经常使用的东西,通过upstream方法可以轻易的实现服务的负载均衡。 但往往很多人不理解nginx ...
阅读全文 0

深入研究golang net/http连接池可用性

Golang 401 views
前言:     又要重构一个高频的http访问服务了,前人留下的老代码实现过程太过诡异,调用链太长,不能达到高内聚低耦合的特性。总的来说,老代码不可触碰,对的,不可触碰 !!! 我想这种感觉大家都知道…  那么这跟我们的标题有什么关系?项目关键的维度就是高频的http访问,这里必然要涉及到...
阅读全文 0

深入研究golang net/http连接池可用性

2-10 401 views

前言:     又要重构一个高频的http访问服务了,前人留下的老代码实现过程太过诡异,调用链太长,不能达到高内聚低耦合的特性。总的来说,老代...
阅读全文 0

分析高并发下tcp连接数暴涨的原因

python 498 views
前言:         这节主要是聊聊怎么快速定位到问题,并解决问题的。 这次问题更多的是由于造了一个连接池轮子,然后自己坑自己。 事情是这样,一堆Ops找我,说我的任务派发系统连接数高达2w, 还都是established已经建立连接的,其他time-wait, close-wait 这类中间状态很少。 另外该系统是分布...
阅读全文 0

分析高并发下tcp连接数暴涨的原因

2-02 498 views

前言:         这节主要是聊聊怎么快速定位到问题,并解决问题的。 这次问题更多的是由于造了一个连接池轮子,然后自己坑自己。 事...
阅读全文 0

解决peewee的异步非阻塞和多进程问题

python 439 views
前言:        熟悉我的朋友大多是知道我喜欢python的peewee orm,因为他的源码简单,api使用简单,可扩展性强。可能这事都传出去,所以这段时间连续有两个老铁问我peewee的问题。我想这两个问题还有些代表性,所以干脆简单总结下发个文章。 该文章后续仍在不断更新中, 请移步到原文地...
阅读全文 0

解决peewee的异步非阻塞和多进程问题

1-29 439 views

前言:        熟悉我的朋友大多是知道我喜欢python的peewee orm,因为他的源码简单,api使用简单,可扩展性强。可能这事都传出去,...
阅读全文 0

golang channel提前close丢失数据?

Golang 638 views
前言:        很无聊,闲来无事看golang一些开源代码,发现有些人作为生产者把消息扔到channel就直接顺手给close掉了,也不等消费者消费完。有些惊奇,这不会丢数据么?按照字面上的意思,我既然close了,呢么消费者应该被唤醒退出。 但经过我的测试发了大量 ch <- data 之后,立马clo...
阅读全文 0

golang channel提前close丢失数据?

1-25 638 views

前言:        很无聊,闲来无事看golang一些开源代码,发现有些人作为生产者把消息扔到channel就直接顺手给close掉了,也不等消费...
阅读全文 0

探讨tcp服务端代码热更新的问题[上]

Golang 569 views
前言:        对于代码的热更新我想大家都感兴趣,这也确实显得更加的高大上。 那么问题来了,你真的需求代码热更新么?  真的有必要设计这么复杂么?  强制更新代码会扣你工资?  more ?   我想大家心里都有自己的答案。  作为一个技术及其时尚的coder,是有追求的,...
阅读全文 0

探讨tcp服务端代码热更新的问题[上]

1-21 569 views

前言:        对于代码的热更新我想大家都感兴趣,这也确实显得更加的高大上。 那么问题来了,你真的需求代码热更新么?  真的有...
阅读全文 0

扩展go sync.map的length和delete方法

Golang 887 views
前言:        记得在sync.map出来之前,都是自己用map和rwlock读写锁实现的并发map。 后来,Golang官方在 1.9 加入了协程安全的 sync.map , 性能和安全得以保证,就是没有Length、Size 方法.   至于官方为什么不加Length方法原因,有兴趣的可以看看issue. 简单说官方认为 map这...
阅读全文 0

扩展go sync.map的length和delete方法

1-19 887 views

前言:        记得在sync.map出来之前,都是自己用map和rwlock读写锁实现的并发map。 后来,Golang官方在 1.9 加入了协程安全的&nb...
阅读全文 0

Golang logrus的高级配置(hook, logrotate)

Golang 1,086 views
前言:         这次聊下最近使用logrus的心得,没有高深的源码,只是一些相对高级的配置吧。golang默认的log模块略显简陋,连基本的info, warn, error 打印方法都没有,不是太适用。 在使用logrus模块之前,我先前都在使用自己封装的log模块,虽然比不上logrus那么多功能,够用是没问题的。&nb...
阅读全文 0

Golang logrus的高级配置(hook, logrotate)

1-11 1,086 views

前言:         这次聊下最近使用logrus的心得,没有高深的源码,只是一些相对高级的配置吧。golang默认的log模块略显简陋,连基本...
阅读全文 0

使用rpm打包上线部署golang代码

Golang,运维 1,099 views
前言:       经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用virtualenv + py code的方式来上线,Lua 是直接打包,Golang 是先编译生成二进制之后,联合配置文件直接打包。 但由于我们开发的Golang的代码很多是基础组件,需...
阅读全文 0

使用rpm打包上线部署golang代码

1-03 1,099 views

前言:       经过一段时间的测试验证,决定使用RPM来做Golang服务的部署方式. 我们组关于代码的部署方式主要有这么几种,Python直接使用...
阅读全文 0

基于golang rocksdb实现的高性能队列

Golang 1,455 views
前言:        高性能队列?  golang channel 可以理解为一个高性能的队列。但他毕竟是基于内存的,如果因各种情况堆积任务,可能会被oom,怎么办?  除去业务上的优化,看看是否有别的选择?  什么redis ?  redis3.x之后倒是有个虚拟磁盘技术,除去内存外,还可以使用磁...
阅读全文 0

基于golang rocksdb实现的高性能队列

12-08 1,455 views

前言:        高性能队列?  golang channel 可以理解为一个高性能的队列。但他毕竟是基于内存的,如果因各种情况堆积任务...
阅读全文 0

技术分享之redis高级讲义

python,redis,技术分享 1,289 views
前言:     有段时间没做技术分享了,这次抽时间给大家分享下redis的高级技巧。  记得两年前在公司做过一场redis的源码实现及设计。 这次想继续这个话题,讲下redis集群的具体实现。 但周边人对这个不敢兴趣,毕竟大家是开发人员,反而对redis应用层的使用更敢兴趣。      我...
阅读全文 0

技术分享之redis高级讲义

12-02 1,289 views

前言:     有段时间没做技术分享了,这次抽时间给大家分享下redis的高级技巧。  记得两年前在公司做过一场redis的源码实现及设计。 这次...
阅读全文 0