K8S system OOM 和资源配置实践

背景

我们目前服务是托管在 Aws K8S 的,近期出现了一次由于生产环境流量增大而导致的 system OOM 问题,进而导致了部分核心业务受损。在此之前,团队并没有思考过关于 K8S 资源配置上存在的一些问题,也没有按照业务自身情况使用对应的 QoS 类,从而导致了故障的产生。

本文将从这个角度切入,对 K8s 中的资源属性以及 QoS 进行介绍,最后给出生产环境使用的一些建议。

阅读更多

New Features Of JDK - JDK9 Modular System

Modular System 是 JAVA9 中提供的新特性,它从一个独立的开源项目而来,名为 Jigsaw Project。在此之前,我们对于 Java 技术栈中模块化的认知是基于 OSGI 的,实际上 OSGI 也确实形成了它自己独有的体系,并且是一定程度上的行业标准。

阅读更多

Mysql - 从一个小 case 理解 MVCC

原文链接: https://juejin.cn/post/7163934829984088095

从 innoDB 的一致性非锁定读说起

非锁定读和行快照数据

一致性的非锁定读(consistent nonlocking read)是指 InnoDB 存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果读取的行正在执行 DELETE 或 UPDATE 操作,这时读取操作不会因此去等待行上锁的释放。相反地,InnoDB 存储引擎会去读取行的一个快照数据,下图是关于快照数据的一个简单示图:

阅读更多

RocketMQ Push 消费模型

Push 模式是指由 Server 端来控制消息的推送,即当有消息到 Server 之后,会将消息主动投递给 client(Consumer 端)。

使用 DefaultMQPushConsumer 消费消息

下面是使用 DefaultMQPushConsumer 消费消息的官方示例代码:

阅读更多

RocketMQ 本地部署问题总结

本篇分为 RocketMQ 部署和 RocketMQ-dashboard 部署两部分,主要是 RocketMQ 部署问题较多,汇总了下网上各路大神以及官方 issue 的讨论汇总而来。

RocketMQ 部署

根据官方的快速开始 尝试在本地部署 RocketMQ;如果你是按照官方文档直接来搞,可能 90% 是不可能成功的。

阅读更多

ab 测试

Apache Benchmark Tool

ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.

ab 是 apache http server 基准测试工具,它可以帮助我们去了解当前服务的表现,如每秒请求数等。下面是 ab 对应的所有 options 摘要信息:

阅读更多

你知道 @Async 是怎么让方法异步执行的吗?

在阅读本文之前,你可以通过 Creating Asynchronous Methods 指导来体验下创建异步方法的使用方式。

为什么要写这篇文章,本质上对于这些 Spring 已经封装好的能力,并不需要去关注它底层到底是怎么玩的,比如 @Async,你肯定可以猜到对于打了这个注解的方法(或者类),在执行这个方法(或者类下所有方法)时,Spring 框架会将当前方法丢进到一个单独的线程池中去执行,以达到方法异步执行的目的。

阅读更多

聊 一聊 maven 测试相关的插件

在之前的 聊一聊 maven 生命周期和 maven 插件编写 这篇文章中,简单聊了点maven 构建生命周期和如何编写一个 maven 插件。本篇文章从插件入手,来探讨下 maven 中那些于测试相关的插件,这些插件与工程师日常开发是密切相关的,可能很多情况下你不需要关注,因为已经有前辈帮你搞完了;“事不关己高高挂起” 与 “知其然知其所以然” 是两种不同的态度,对待技术,我建议是后者!

阅读更多