Conn.File方式导致无法close对应旧fd,线程数泄漏

使用go编写server时,有时需要获取当前连接对应的connection属性。而Linux系统中,Connection本质为socket类型的file descriptor。go源码中多种网络类型(比如tcp/udp/unix)的conn均提供了File方法,用于获取连接对应的socket file descriptor。但使用该方法后,会导致close连接时阻塞,进而造成线程增加,引发系统panic。

Read full post gblog_arrow_right

使用socket takeover实现零停机时间发布

优雅退出(或者无损发布)是保证服务能力的重要手段。对于集群模式的服务,通常在服务进程前会前置一层代理(例如 nginx)来保证优雅退出过程中服务服务流量的切换。但对于单体服务,在不引入前置流量代理的前提下,实现优雅退出就会比较复杂,需要额外的技术手段进行辅助。本文将对单体服务的优雅退出方式进行讨论。

Read full post gblog_arrow_right