记一次Go slice内存泄露踩坑

项目最近上了一个服务,内存占用一直会缓慢增加,为了不影响服务稳定,避免出现 OOM(Out of memory),目前临时的解决方式是启用两组服务,一组服务暴露给用户,一组作为备用,内存过大的时候手动切换到备用组上,原先那组服务等没有用户连接之后,重启释放内存,然后另一边使用各种方式查找 内存泄露(Memory Leak)的原因。
项目最近上了一个服务,内存占用一直会缓慢增加,为了不影响服务稳定,避免出现 OOM(Out of memory),目前临时的解决方式是启用两组服务,一组服务暴露给用户,一组作为备用,内存过大的时候手动切换到备用组上,原先那组服务等没有用户连接之后,重启释放内存,然后另一边使用各种方式查找 内存泄露(Memory Leak)的原因。
之前出过一期使用 Travis CI自动化部署hugo静态博客 ,好久没有更新博客了,今天发现 travis-ci 没有自动触发,查询之后发现 tranvis-ci 已经改变了收费规则 🙈 之前还能奏效的配置也都失效了,非付费用户需要寻找替代品了 前段时间也用过GitHub推出的Actions服务,引用其他开源的项目编译过路由器固件,感觉很方便,这次也研究下,用Actions来自动生成hugo博客静态网站
在linux下使用Go开发,或是做docker服务编排过程中,经常会用到 shell脚本,比如比较常见的管理程序启停重载配置这样的管理脚本,下面总结列出一些个人比较常用的语法和操作。
什么是粘包 TCP是字节流协议,数据传输像流水一样。数据发送者会存在一个发送缓冲区,每次可能会将多个数据包一次性发送出去,也可能是一个数据包拆分多次发出去;如果协议没有约定好分隔符或者不明确数据包大小边界,接收者就无法获取并正确解析数据包了,这就是常说的 粘包,下面结合swoole_server和自定义协议来详细说明。
什么是Hugo Hugo 是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。
今天来介绍一个PHP新的玩具:PsySH : http://psysh.org/
之前有写过ELK的介绍和安装 ELK初探-安装(一),在熟悉了Docker操作后,快速搭建了一个ELK日志分析环境,作用是由 logstash 读取 nginx 日志文件到 elasticsearch 中,通过 kibana 展示查询,下面来用两种格式的日志来说明:
Swoole —— 重新定义PHP 作为一个使用C语言底层实现的PHP扩展,弥补了PHP在多线程、常驻内存相关领域的短处,为广大phper打开了眼界。 swoole 的进程之间有两种通信方式,一种是消息队列(queue),另一种是管道(pipe),对swoole_process 的研究在swoole中显得尤为重要。
在开发过程中,我们一般都是使用 ssh 登录linux,在命令行下直接使用 php-cli 模式运行 swoole,一旦退出ssh 或者使用 ctrl+c,终端会收到 HUP(hangup)信号从而关闭其所有子进程 ,swoole 进程会自动关闭。 那有问题来了,没有靠谱的、可以让脚本在后台长期运行呢,答案是有的 :)
近年来,Linux 系统的 init 进程经历了两次重大的演进,传统的 sysvinit 已经逐渐淡出历史舞台,新的 UpStart 和 systemd 各有特点,越来越多的 Linux 发行版采纳了 systemd (Ubuntu15.04+/CentOS7+)。
Docker作为一项最流行的虚拟化技术,从2013年发展至今,已经发展的如火如荼。Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 在接触了 Redis、Memcache、MySQL这些数据库之后,由于工作需要,最近在学习另外一个常见的 NoSQL数据库 : MongoDB,下面是整理的资料和笔记。
IOC( inversion of controller )叫做控制反转模式,也可以称为(dependency injection ) 依赖注入模式。这也是Laravel框架的核心“容器IOC”概念。
每次编译安装PHP的时候都会有一堆扩展参数,有些看名字就知道其中的作用,有些不甚了解,有时间查看了下官方文档。
前段时间有几台MySQL服务器内容警告,已经超过了80%,达到了40G/50G,这些数据库主要是记录用户的一些操作日志,查看表大小后锁定三个数据量比较大的表。
Composer 作为php的包管理工具,今天在运行composer命令的时候,遇到了 Do not run Composer as root/super user! 权限提示问题,才知道是不能在root用户下运行的。 为了统一php-fpm、nginx、web目录三者权限,今天有空查了一些资料,实际操作了一遍。
微软已经在北京时间8月3日开始推送Win10一周年更新正式版,版本号为1607,增加了许多新的特性,包括Edge浏览器扩展和Linux子系统(ubuntu)。今天心血来潮,体验下一周年新特性 —— Bash on Ubuntu on Windows。 这是一项能让Ubuntu作为Windows子系统运行的黑科技,这个东西表面上看就像个模拟器,类似cygwin,也可能有人会想到虚拟机(之前用过vagrant,也不错),但是它实际上要更直接,它是在用 Windows 内核实现了对 Linux 系统调用的兼容支持,性能接近原生,看来微软对于Docker能在Windows上运行努力地铺路啊。。
在网上看到的PHP程序员的技术成长规划,觉得写的很好,对比自己的不足,也是现在和将来努力的目标!
Vim 几乎是每个程序员都知道的一款*nux下的开源的文本编辑器,虽然windows下也有gui版vim,最多的还是在linux下使用比较顺手。