通过golang goroutine stack分析死锁问题

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

通过golang goroutine stack分析死锁问题

04-16 95 views

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

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

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

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

04-09 313 views

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

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

Golang 112 views
前言:        什么是monkey ? 英语里面试猴子,但程序里面我们称之为 补丁.  用过python gevent的朋友应该很熟悉这个monkey补丁字眼吧。 对的,这里golang的monkey实现的功能跟gevent monkey是一样的,都是为了粗暴直接的替换标准库。...
阅读全文 0

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

04-02 112 views

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

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

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

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

03-28 214 views

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

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

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

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

03-18 172 views

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

扩展golang的sync mutex的trylock及islocked

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

扩展golang的sync mutex的trylock及islocked

02-27 267 views

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

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

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

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

02-10 399 views

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

golang channel提前close丢失数据?

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

golang channel提前close丢失数据?

01-25 637 views

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

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

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

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

01-21 567 views

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

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

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

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

01-19 886 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模...
阅读全文 0

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

01-11 1,086 views

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

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

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

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

01-03 1,098 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

Golang使用redis protocol实现pubsub通信

Golang,redis 1,774 views
前言:        闲来无事,加工作不饱和,饱思淫欲的状态下,用golang实现了一个基于redis通信协议的pubsub通信服务端.  这个轮子实现的还很粗暴,内部实现主要用的是golang channel ,不仅可以高效的控制并发读写,而且可以跟tcp连接关...
阅读全文 0

Golang使用redis protocol实现pubsub通信

11-15 1,774 views

前言:        闲来无事,加工作不饱和,饱思淫欲的状态下,用golang实现了一个基于redis通信协议的pubsub通信服务端.  这个轮...
阅读全文 0

golang基于redis lua封装的优先级去重队列

Golang,redis 1,522 views
前言:      前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的重复任务。这时候我们要临时解决两个事情,一件事情,让一些高质量的任务优先执行; 另一件事情, 要有去重。 ...
阅读全文 0

golang基于redis lua封装的优先级去重队列

10-22 1,522 views

前言:      前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的...
阅读全文 0

Golang基于redis实现的分布式信号量(semaphore)

Golang,redis 1,707 views
前言:     Semaphore是信号量,作用? 我想大家都知道。semaphore跟mutex的区别我想大家也知道了,我这里就不老生常谈,重复讲解了,有兴趣的朋友可以自行google相关的同步锁文章。 该文章后续会有更新, 原文地址, http://xiaorui.cc/?p=482...
阅读全文 0

Golang基于redis实现的分布式信号量(semaphore)

10-17 1,707 views

前言:     Semaphore是信号量,作用? 我想大家都知道。semaphore跟mutex的区别我想大家也知道了,我这里就不老生常谈,重复讲解了,有兴趣的...
阅读全文 0

golang双端链表list remove nil问题

Golang 1,513 views
我这个场景是做优先级的任务派发的,因为有几十个厂商,每个厂商还有不同的业务,每个业务也有10个优先级,这样算来整个任务缓冲池里最少又要几百个队列。 这里没用channel,因为channel通道太多,没法很好的做输出。  优先级肯定是有调度器主动去pop数据,这...
阅读全文 0

golang双端链表list remove nil问题

09-27 1,513 views

我这个场景是做优先级的任务派发的,因为有几十个厂商,每个厂商还有不同的业务,每个业务也有10个优先级,这样算来整个任务缓冲池里最少又要几百个队列。 ...
阅读全文 0

golang redigo lua解决性能问题

Golang,redis 2,356 views
前言:     我们知道使用redis计数可以使用incrby, hincrby 等计数指令,因为redis的工作线程只有一个,所以保证了并发原子的控制。  由于我们的业务的特殊性,有增有减,有各类状态值的判断,尤其在异常情况下,计数会减到0以下,负数是不能忍的...
阅读全文 0

golang redigo lua解决性能问题

08-16 2,356 views

前言:     我们知道使用redis计数可以使用incrby, hincrby 等计数指令,因为redis的工作线程只有一个,所以保证了并发原子的控制。  由...
阅读全文 0

探讨可持久化高并发队列的实现

Golang,架构设计 2,141 views
探讨可持久化高并发队列的实现 … …  为什么会有这样的想法 ? 主流的持久化方案分两类: 实时持久化… 异步持久化…  Redis 的队列持久化是怎么实现的? Gola...
阅读全文 0

探讨可持久化高并发队列的实现

07-14 2,141 views

探讨可持久化高并发队列的实现 … …  为什么会有这样的想法 ? 主流的持久化方案分两类: 实时持久化… ...
阅读全文 0

golang实现封装trycatch异常处理

Golang 1,933 views
社区不少人在谈论 golang 为毛不用trycatch模式,而采用苛刻的recovery、panic、defer组合….    从老外那整了一个trycatch包,感觉不错,拿出来分享下…  Python package main import ( "...
阅读全文 0

golang实现封装trycatch异常处理

07-06 1,933 views

社区不少人在谈论 golang 为毛不用trycatch模式,而采用苛刻的recovery、panic、defer组合….    从老外那整了一个trycatch包,感觉不错,...
阅读全文 0