SF
胖胖的深夜食堂
胖胖的深夜食堂
注册登录
关注博客
注册登录
主页
关于
RSS
Go Exec 僵尸与孤儿进程
WilburXu
2022-02-26
阅读 5 分钟
5.5k
原文地址:Go Exec 僵尸与孤儿进程最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下。场景一我们来看看下面两个脚本会产生什么问题:创建两个 shell 脚本start.sh {代码...} sub.sh {代码...} 执行脚本输出结果 {代码...} 进程关系查看进程信息 {代码...} sub.sh 的 父进程(PPID)为 s...
Go Errors 详解
WilburXu
2022-01-17
阅读 4 分钟
4.6k
Golang 中的错误处理和 PHP、JAVA 有很大不同,没有 try...catch 语句来处理错误。因此,Golang 中的错误处理是一个比较有争议的点,如何更好的 理解 和 处理 错误信息是值得去深入研究的。
难受,nginx worker进程内存持续飘升!
WilburXu
2021-06-15
阅读 5 分钟
8.9k
但是,好景不长。灰度没多久,使用top pod查看时,发现内存满了,最开始怀疑k8s的resources limit memory(2024Mi)分配小了,放大后(4096Mi),重启pod,没多久又满了。
Nginx Mirror 流量复制的心路历程
WilburXu
2021-04-21
阅读 3 分钟
8.3k
原文地址:Nginx Mirror 流量复制的心路历程背景上篇文章写到 Lua OpenResty的容器化,项目完成了上云,但是有面临了几个新的问题:旧业务跑了这么多年,如何保证上云后的稳定性呢?如何确保接口都能正常访问呢?如何确保两边api请求的幂等呢?为了保证服务的质量,我们决定借助 nginx mirror(流量复制)来统计服务的幂...
Lua OpenResty容器化
WilburXu
2021-04-21
阅读 6 分钟
5.4k
公司有几个“远古时期”的项目,一直都相对较为稳定,但是项目每天总会在一些时段,请求每分钟QPS到达峰值800K左右,导致机器的性能出现了一些瓶颈,每到峰值时期,总会出现一个告警,实在是令人头疼。更糟糕的是这只是远古时期项目中的其中一个而且都是部署在物理机器上,所有机器加起来接近100台。
lua远程调试 Remote Debug
WilburXu
2021-04-20
阅读 2 分钟
6k
原文地址:lua远程调试 Remote Debug日常的debug当把一个本地项目部署到远程测试服务器后有可能出现意想不到错误,为了排查问题可能会变成:这样:然后这样:最后就:最可怕的是,由于堆栈的关系,很难在一次debug日志中拿到想要的信息,往往是一层层往下打日志,才能拿到想要的debug信息。remote debug本地服务器开放端...
dockerfile多阶段构建
WilburXu
2021-04-06
阅读 2 分钟
1.2k
{代码...}
Kafka基本架构和命令
WilburXu
2020-12-30
阅读 7 分钟
2.5k
服务代理节点。对于Kafka而言,Broker可以简单地看作一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看作一台Kafka服务器,前提是这台服务器上只部署了一个Kafka实例,一个或多个Broker组成了一个Kafka集群。
Go 平滑重启(优雅重启)
WilburXu
2020-12-12
阅读 4 分钟
9.2k
问题背景生产环境重要且复杂,许多的操作需要在任何场景都要保证正常运行。如果我们对线上服务进行更新的步骤如下:kill -9服务再启动服务那么将不可避免的出现以下两个问题:未处理完的请求,被迫中断,数据一致性被破坏新服务启动期间,请求无法进来,导致一段时间的服务不可用现象一般有三种方案处理以上问题:生产环...
MySQL ERROR 1040: Too many connections
WilburXu
2020-12-05
阅读 4 分钟
6.2k
如题,本章主要讲下当服务器出现 ERROR 1040: Too many connections错误时的一些处理心得。max_connections查看 {代码...} 处理方案这个问题一般有两种处理方案,解决方案非常容易,我们只需要增加max_connections连接数即可。增加当前会话的mysql最大连接数 {代码...} 上面mysql连接值临时增加到1000,但仅适用于当前会...
Python+Scrapy+Selenium数据采集
WilburXu
2020-03-27
阅读 4 分钟
7.1k
我是好人,一个大大的良民。 好与坏,关键在于使用者噢! Scrapy是一个常用的数据采集工具; Selenium是一个浏览器自动化测试工具; 结合Scrapy对数据的处理机制和Selenium模拟真实浏览器去获取数据(如:自动化登录,自动化翻页等)。可以更好的完成采集。 About Scrapy Scrapy是开发者在网络上用于常用的数据采集工具...
令牌桶限频(Token Bucket)
WilburXu
2020-03-23
阅读 3 分钟
4.1k
高可用对于一个应用和API接口是至关重要的。如果我们提供一个接口,突然面临流量爆发式增长,对于这种情况,不仅会影响网站的访问速度,甚至可能会导致服务器崩溃,使得所有用户都无法正常访问。
MySQL 你好,死锁
WilburXu
2019-08-19
阅读 6 分钟
4.4k
在日常的生活中,相信大家曾或多或少有这么一种体验:"每到下班高峰期的时候,原本宽坦的交通干道,一时间变得水泄不通,司机和乘客都烦躁不安,喇叭声响成一片,当车卡在十字路口中间,会很尴尬的发现,此时无论想走哪都…..."。对于这样的体验,大家都是十分的害怕接触和体验,交通部门也无时无刻为解决交通拥堵问题而...
Go 逃逸分析
WilburXu
2019-07-14
阅读 5 分钟
3.1k
堆(Heap):一般来讲是人为手动进行管理,手动申请、分配、释放。堆适合不可预知大小的内存分配,这也意味着为此付出的代价是分配速度较慢,而且会形成内存碎片。
ElasticSearch 连载二 中文分词
WilburXu
2019-07-04
阅读 6 分钟
2.1k
上一章ElasticSearch 连载一 基础入门 对Elastic的概念、安装以及基础操作进行了介绍。 那是不是有童鞋会有以下几个问题呢? 什么是中文分词器? 分词器怎么安装? 如何使用中文分词器? 那么接下来就为大家细细道来。 什么是中文分词器 搜索引擎的核心是 倒排索引 而倒排索引的基础就是分词。所谓分词可以简单理解为将...
ElasticSearch 连载一 基础入门
WilburXu
2019-06-28
阅读 7 分钟
3.1k
ElasticSearch简写ES,ES是一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。 应用场景 我们常见的商城商品的搜索 日志分析系统(ELK) 基于大量数据(数千万的数据)需要快速调查、分析并且并将结果可视化的业务需求 安装并运行ES Java环境安装 Elastic 需要 Java 8 环境。如果你...
基于GitLab CI搭建Golang自动构建环境
WilburXu
2019-06-19
阅读 6 分钟
7k
Golang发布遇到的问题 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 开发者本地环境需要将环境变量文件改为正式环境配置 编译成可执行文件 发送给运维 (运维)将文件覆盖为线上 (运维)重启进程 (可谓“又臭又长”) 方案二 开发者将代码commit到gitlab上交给运维同学 (运维)pull...
Go 性能分析之案例一
WilburXu
2019-06-15
阅读 8 分钟
2.7k
相信大家在实际的项目开发中会遇到这么一个事,有的程序员写的代码不仅bug少,而且性能高;而有的程序员写的代码能否流畅的跑起来,都是一个很大问题。而我们今天要讨论的就是一个关于性能优化的案例分析。
PHP设计模式(八)桥接模式(Bridge For PHP)
WilburXu
2019-06-10
阅读 2 分钟
2.1k
如果使用蜡笔,我们需要准备3*5=15支蜡笔,也就是说必须准备15个具体的蜡笔类。而如果使用毛笔的话,只需要3种型号的毛笔,外加5个颜料盒,用3+5=8个类就可以实现15支蜡笔的功能。
PHP设计模式(七)适配器模式(Adapter For PHP)
WilburXu
2018-10-17
阅读 2 分钟
2k
适配器模式:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 先来看一个案例: 设置书的接口 {代码...} {代码...} 客户端测试: {代码...} 输出结果: {代码...} 这时候,你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可...
PHP设计模式(六)原型模式(Prototype For PHP)
WilburXu
2018-10-16
阅读 1 分钟
2k
原型设计模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型设计模式简单的来说,就是不去创建新的对象进而保留原型的一种设计模式。 案例 原型类: {代码...} {代码...} 客户类: {代码...} {代码...} 输出结果: {代码...}
PHP设计模式(五)建造者模式(Builder)
WilburXu
2018-10-14
阅读 3 分钟
2k
什么是建造者设计模式 建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用户具体的信息结果。如: 这是一个用户类: {代码...} 这时候我们要获取一个用户的信息,过程...
PHP设计模式(四)单例模式(Singleton)
WilburXu
2018-10-13
阅读 2 分钟
2.6k
一、什么是单例设计模式 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。 二、单例模式的技巧 利用$_instance私有变量来保存类的唯一实例化对象; 设计一个getInstance对外公开的函数,可以获取类唯一实例; 防止用户用new实例化,和克隆,构造两个__cons...
PHP设计模式(三)抽象工厂模式(Abstract Factory)
WilburXu
2018-10-12
阅读 3 分钟
6.7k
产品族:位于不同产品等级结构中,功能相关联的产品组成的家族。下面例子的 汽车和空调就是两个产品树, 奔驰C200+格力某型号空调就是一个产品族, 同理, 奥迪A4+海尔某型号空调也是一个产品族。
PHP设计模式(二)工厂方法模式(Factory Method)
WilburXu
2018-10-11
阅读 2 分钟
4.2k
简单工厂模式实现了产品类的代码跟客户端代码分离,但会有一个问题,优秀的代码是符合“开闭原则”如果你要加一个C类产品,你就要修改工厂类里面的代码,也就是说要增加条件语句如:switch---case。对于这个问题,接下来的工厂方法模式可以解决这个问题。
PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)
WilburXu
2018-10-10
阅读 2 分钟
6.1k
一、什么是简单工厂模式 简单工厂 (Simple Factory)又称静态工厂方法模式(Static Factory Method Pattern) 使用的频率可以说是非常之高,它的官方解释为:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类。 这个模式本身很简单而且使用在业务较简单的情况下。...
PHP 设计模式概述
WilburXu
2018-10-09
阅读 2 分钟
3.7k
设计模式是一套被反复使用、多数人知晓、经过分类编目的代码设计的经验总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。