容器打印日志到控制台阻塞的排障

2019-02-21
阅读 4 分钟
5k
今日生产环境发现有些容器停止响应了,但是容器没有死,docker exec -it <container-name> /bin/bash也能正常使用。

算法 - 数组和链表

2019-02-21
阅读 2 分钟
1.9k
注:本文仅为笔记。 原文 极客时间 - 数据结构与算法之美 - 05 | 数组 极客时间 - 数据结构与算法之美 - 06 | 链表(上) 极客时间 - 数据结构与算法之美 - 07 | 链表(下) 数组 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 随机访问高效,O(1),见下面一维数组内存寻...

JVM执行方法调用(一)- 重载与重写

2019-02-21
阅读 4 分钟
2.4k
原文 回顾Java语言中的重载与重写,并且看看JVM是怎么处理它们的。 重载Overload 定义: 在同一个类中有多个方法,它们的名字相同,但是参数类型不同。 或者,父子类中,子类有一个方法与父类非私有方法名字相同,但是参数类型不同。那么子类的这个方法对父类方法构成重载。 JVM是怎么处理重载的?其实是编译阶段编译器...

Docker Swarm部署应用的总结

2019-02-21
阅读 4 分钟
5.1k
原文 大纲 本文只是一种实际部署方案的例子,涉及到的技术有(除Docker/Docker Swarm外): Docker overlay network Fluentd Prometheus stack vegasbrianc的Prometheus监控方案 步骤大纲: 部署Docker machine 基本配置 配置网络 启动Fluentd日志服务 部署Docker swarm集群 配置网络 添加Node 部署Prometheus stack 给N...

ClassLoader(二)- 加载过程

2019-02-20
阅读 9 分钟
2.6k
在前一篇文章初步了解ClassLoader里提到了委托模型(又称双亲委派模型),解释了ClassLoader hierarchy(层级)处理类加载的过程。那么class文件是如何变成Class对象的呢?

ClassLoader(一)- 介绍

2019-02-20
阅读 9 分钟
2.5k
本文源代码在Github。 本文仅为个人笔记,不应作为权威参考。 原文 什么是ClassLoader javadoc ClassLoader: A class loader is an object that is responsible for loading classes. ...Given the binary name of a class, a class loader should attempt to locate or generate data that constitutes a definition f...

使用Fluentd收集Docker容器日志

2019-01-24
阅读 2 分钟
7.3k
Docker提供了很多logging driver,默认情况下使用的json-file,它会把容器打到stdout/stderr的日志收集起来存到json文件中,docker logs所看到的日志就是来自于这些json文件。

Docker Overlay网络的MTU

2019-01-11
阅读 4 分钟
6.5k
Docker Daemon生产环境配置提到了MTU设置,但是这只是针对于名为bridge的docker bridge network,对于overlay network是无效的。

Docker Daemon生产环境关键的几个参数

2019-01-11
阅读 3 分钟
8.4k
本文介绍一些生产环境中dockerd要特别注意的参数,这些参数可以通过在dockerd命令行参数形式给,也可以通过在/etc/docker/daemon.json里配置。本文介绍的就是daemon.json配置方式。

Prometehus自动发现Docker Swarm Overlay网络中的容器

2019-01-09
阅读 3 分钟
3.8k
介绍如何使用Prometheus的dns service discovery机制,自动发现并抓取Docker swarm overlay网络中的容器所提供的指标。

一种生产环境Docker Overlay Network的配置方案

2019-01-09
阅读 4 分钟
10k
原文地址 介绍一种生产环境Docker overlay network的配置方案。 概要 先讲一下生产环境中的问题: 有多个Docker host,希望能够通过Docker swarm连接起来。 Docker swarm只适合于无状态应用,不适合有状态应用。 因此生产环境中会同时存在 无状态应用:利用docker service create/docker stack deploy创建的。 有状态应...

给Prometheus造假数据的方法

2018-12-28
阅读 1 分钟
4.4k
学习Prometheus各种函数的时候最好能够造一些我们想要的数据来测试,但是Prometheus没有提供直接操作其数据库的功能,所以在这里安利一个工具。

详解Prometheus range query中的step参数

2018-12-28
阅读 3 分钟
20.1k
GH Page地址 Prometheus有两种query:instant query、range query。本文要讲的就是range query中的step参数。 range query是非常常见的一种query,看看它有哪些参数: query=<string>: PromQL表达式。 start=<rfc3339 | unix_timestamp>: 时间范围的开始。 end=<rfc3339 | unix_timestamp>: 时间范围...

Spring、Spring Boot和TestNG测试指南 - 集成测试中用Docker创建数据库

2018-12-28
阅读 5 分钟
4k
原文地址 在测试关系型数据库一篇里我们使用的是H2数据库,这是为了让你免去你去安装/配置一个数据库的工作,能够尽快的了解到集成测试的过程。 在文章里也说了: 在真实的开发环境中,集成测试用数据库应该和最终的生产数据库保持一致 那么很容易就能想到两种解决方案: 开发团队使用共用同一个数据库。这样做的问题在...

Coding集成Jenkins流水账

2018-12-04
阅读 4 分钟
4.4k
本文有以下假设和要求: 你的项目源代码的根目录已经存在Jenkinsfile 你的项目是一个Maven项目 你的Jenkins能够从公网访问 本文参考自官方文档使用Jenkins构建Coding项目 【Jenkins】新建文件夹 【Jenkins】配置SSH key pair 运行下列命令生成SSH key pair,生成两个文件deploykey和deploykey.pub: {代码...} 进入刚刚...

创建Jenkins Pipeline流水账

2018-12-03
阅读 3 分钟
3.9k
注:本文的例子基于搭建Jenkins集群流水账搭建的集群所写。 注:本文是一个Maven项目流水线的例子。 创建流水线 利用Blueocean创建流水线。 填写GIT仓库信息。 将Blueocean生成的SSH key添加到GIT server里。 点击创建流水线后Jenkins会拉取GIT仓库,并且尝试寻找存在Jenkinsfile的分支,然后构建。不过不管构建是否成功...

搭建Jenkins集群流水账

2018-11-30
阅读 3 分钟
1.6k
硬件要求 不论是master还是slave,都要安装: 操作系统:Ubuntu 16.04 Server LTS Docker-CE Docker安装方法: 根据文档:[链接] 安装docker-ce curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun sudo usermod -aG docker $USER 我在安装的时候碰到Jenkins无法从Update center下载metadata的问题,...

使用Prometheus+Alertmanager告警JVM异常情况

2018-10-26
阅读 9 分钟
8.5k
在前一篇文章中提到了如何使用Prometheus+Grafana来监控JVM。本文介绍如何使用Prometheus+Alertmanager来对JVM的某些情况作出告警。

使用Prometheus+Grafana监控JVM

2018-10-24
阅读 3 分钟
21.6k
原文地址 本文所提到的脚本可以在这里下载。 摘要 用到的工具: Docker,本文大量使用了Docker来启动各个应用。 Prometheus,负责抓取/存储指标信息,并提供查询功能。 Grafana,负责数据可视化。 JMX exporter,提供JMX中和JVM相关的metrics。 Tomcat,用来模拟一个Java应用。 先讲一下大致步骤: 利用JMX exporter,在...

K8S如何限制资源使用

2018-10-22
阅读 2 分钟
8.6k
本文介绍几种在K8S中限制资源使用的几种方法。 资源类型 在K8S中可以对两类资源进行限制:cpu和内存。 CPU的单位有: 正实数,代表分配几颗CPU,可以是小数点,比如0.5代表0.5颗CPU,意思是一颗CPU的一半时间。2代表两颗CPU。 正整数m,也代表1000m=1,所以500m等价于0.5。 内存的单位: 正整数,直接的数字代表Byte k、...

使用diskbenchmark测试硬盘性能

2018-10-19
阅读 1 分钟
2.2k
原文地址 介绍使用diskbenchmark测试硬盘性能。 本文使用的是Ubuntu服务器 无法在虚拟机上运行此工具 第1步:下载项目 {代码...} 第2步:安装必要的软件包 {代码...} 第3步:编译项目 {代码...} 第4步:benchmark配置文件 在machines目录下新建配置文件,比如machine-a: {代码...} 比如下面这样: {代码...} <硬盘在...

利用VisualVm和JMX远程监控K8S里的Java进程

2018-10-15
阅读 3 分钟
8.5k
在利用VisualVm和JMX远程监控Java进程和VisualVm利用SSL连接JMX的方法里介绍了如何使用VisualVm+JMX监控远程Java进程的方法。那么如何监控一个运行在K8S集群中的Java进程呢?其实大致方法也是类似的。

VisualVm利用SSL连接JMX的方法

2018-10-12
阅读 4 分钟
4.6k
Java client程序在做SSL连接的时候,会拉取server的证书,利用truststore去验证这个证书,如果不存在 or 证书过期 or 不是由可信CA签发,就意味着服务端不被信任,就不能连接。

利用VisualVm和JMX远程监控Java进程

2018-10-10
阅读 3 分钟
10.5k
自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建的MBean)注册到它里面,然后暴露给JMX client管理。简单来说就是每个Java程序都可以通过JMX来被JMX client管理,而且这一切都是自动发生的。而VisualVm就是一个JMX Clie...

利用VisualVm远程监控Java进程

2018-10-10
阅读 2 分钟
10.1k
要实现远程监控Java进程,必须在远程主机(运行Java程序的主机)上跑一个jstatd进程,这个进程相当于一个agent,用来收集远程主机上的JVM运行情况,然后用VisualVm连接到这个jstatd,从而实现远程监控的目的。

远程Debug Java进程的方法

2018-10-09
阅读 4 分钟
9.5k
事实上目前所有的IDE的debug功能都是通过远程debug方式来实现的,它们都利用了一个叫做JDPA(Java Platform Debugger Architecture)的技术。

Java程序制作Docker Image推荐方案

2018-09-19
阅读 3 分钟
18.2k
原文地址 本文源代码是一个spring-boot应用(在 [链接] ),不过本例子适用于所有Java应用。 要求 这里先给出一些Docker Image制作的要求,之后我们再看怎么做。 制作过程要融合在项目构建过程中 使用官方Image作为基础Image 设定正确的时区 Container内的程序以非root用户启动 指定Web程序的端口 能够传递JVM参数、Java...

数据库时区那些事儿 - Oracle的时区处理

2018-09-18
阅读 4 分钟
10.5k
当JVM时区和数据库时区不一致的时候,会发生什么?这个问题也许你从来没有注意过,但是当把Java程序容器化的时候,问题就浮现出来了,因为目前几乎所有的Docker Image的时区都是UTC。本文探究了Oracle及其JDBC驱动对于时区的处理方式,并尝试给出最佳实践。

数据库时区那些事儿 - MySQL的时区处理

2018-09-17
阅读 4 分钟
27.5k
当JVM时区和数据库时区不一致的时候,会发生什么?这个问题也许你从来没有注意过,但是当把Java程序容器化的时候,问题就浮现出来了,因为目前几乎所有的Docker Image的时区都是UTC。本文探究了MySQL及其JDBC驱动对于时区的处理方式,并尝试给出最佳实践。

Spring Cloud Config配置文件最佳实践

2018-09-11
阅读 3 分钟
6.4k
大多数Spring Cloud项目都会使用Spring Cloud Config来管理应用启动时的配置文件,同时开发人员面临着多样化的程序启动方式:操作系统进程启动、docker启动、k8s启动。那么如何规划这些配置文件以适应多种启动方式呢?本文尝试给出一些建议