golang密集场景下协程调度饥饿问题

Golang 213 views
前言:        前段时间跟一个滴滴的小哥聊了关于golang饥饿调度的话题,似乎大家觉得golang不会出现太长时间饥饿。 虽然大家看过golang sysmon抢占的源码实现,但不确定实际运行的结果是否跟预想的一致。 什么是饥饿调度,就是长时间得不到...
阅读全文 0

golang密集场景下协程调度饥饿问题

06-04 213 views

前言:        前段时间跟一个滴滴的小哥聊了关于golang饥饿调度的话题,似乎大家觉得golang不会出现太长时间饥饿。 虽然大家看过go...
阅读全文 0

技术分享之《Golang高级讲义》

Golang 1,192 views
前言:       上次在公司分享了golang在高性能场景下的实战调优,看大家洋溢外露的表情来说(请大家吃完饭后),应该还受欢迎的。公司现在好多同学也都慢慢的转向了golang语言,上面的意思也是倾向于转golang。我司php同学全都在转,所以大家也要...
阅读全文 0

技术分享之《Golang高级讲义》

05-10 1,192 views

前言:       上次在公司分享了golang在高性能场景下的实战调优,看大家洋溢外露的表情来说(请大家吃完饭后),应该还受欢迎的。公司现...
阅读全文 0

golang log日志里为什么需要加锁?

Golang 198 views
前言:       有段时间没写博客了,这次写一篇水文,关于 golang log为什么加锁 ?  很水么? 对的…         有天同事跟我说,原来go log在写入的时候也有锁,我寻思不应该呀,为啥加锁呀。在我想来写个日...
阅读全文 0

golang log日志里为什么需要加锁?

05-07 198 views

前言:       有段时间没写博客了,这次写一篇水文,关于 golang log为什么加锁 ?  很水么? 对的…     &n...
阅读全文 0

disk io引起golang线程数暴涨的问题

Golang 1,901 views
前言:        我们知道golang对用户抽象了协程,协程要跑起来必然是需要系统线程来承载上下文,因为线程是最小的调度单元。golang的scheduler会帮你调度关联 PMG,这里的M是线程,G就是我们在golang里用go关键字spawn的协程。 对于用户来说...
阅读全文 0

disk io引起golang线程数暴涨的问题

04-23 1,901 views

前言:        我们知道golang对用户抽象了协程,协程要跑起来必然是需要系统线程来承载上下文,因为线程是最小的调度单元。golang...
阅读全文 0

通过golang goroutine stack分析死锁问题

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

通过golang goroutine stack分析死锁问题

04-16 1,191 views

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

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

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

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

04-09 2,062 views

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

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

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

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

04-02 322 views

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

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

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

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

03-28 494 views

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

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

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

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

03-18 380 views

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

扩展golang的sync mutex的trylock及islocked

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

扩展golang的sync mutex的trylock及islocked

02-27 523 views

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

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

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

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

02-10 669 views

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

golang channel提前close丢失数据?

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

golang channel提前close丢失数据?

01-25 862 views

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

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

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

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

01-21 751 views

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

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

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

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

01-19 1,185 views

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

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

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

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

01-11 1,369 views

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

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

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

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

01-03 1,313 views

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

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

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

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

12-08 1,717 views

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

Golang使用redis protocol实现pubsub通信

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

Golang使用redis protocol实现pubsub通信

11-15 2,005 views

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

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

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

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

10-22 1,698 views

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

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

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

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

10-17 1,849 views

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