跳至主要內容
基础

基础

一、ElasticSearch基础

1、什么是Elasticsearch:
Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。
全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置。当查询时,根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

2、Elasticsearch 的基本概念:

(1)index 索引:索引类似于mysql 中的数据库,Elasticesearch 中的索引是存在数据的地方,包含了一堆有相似结构的文档数据。


Zephery大约 15 分钟
一些不常用但很实用的命令

一些不常用但很实用的命令

https连接耗时检测

curl -w "TCP handshake: %{time_connect}, SSL handshake: %{time_appconnect}\n" -so /dev/null https://zhls.qq.com/test-nginx

Zephery小于 1 分钟
Jenkins的一些笔记

Jenkins的一些笔记

公司主要要开发自己的paas平台,集成了Jenkins,真的是遇到了很多很多困难,特别是在api调用的权限这一块,这里,把自己遇到的一些坑的解决方法做一下笔记吧。当然,首先要讲的,就是如何在开启安全的情况下进行API调用。

一、在全局安全配置中

1.1 启用安全

如果勾选不对,那么Jenkins有可能崩溃掉,亲身经历,之前一直没有勾选安全域,然后授权策略为登录用户可以做任何事,之后权限这一块就彻底崩溃了,重装了又重装,才知道,需要勾选安全域。


Zephery大约 4 分钟
Kubernetes容器日志收集

Kubernetes容器日志收集

日志采集方式

日志从传统方式演进到容器方式的过程就不详细讲了,可以参考一下这篇文章Docker日志收集最佳实践,由于容器的漂移、自动伸缩等特性,日志收集也就必须使用新的方式来实现,Kubernetes官方给出的方式基本是这三种:原生方式、DaemonSet方式和Sidecar方式。

1.原生方式 使用 kubectl logs 直接在查看本地保留的日志,或者通过docker engine的 log driver 把日志重定向到文件、syslog、fluentd等系统中。
2.DaemonSet方式 在K8S的每个node上部署日志agent,由agent采集所有容器的日志到服务端。
3.Sidecar方式 一个POD中运行一个sidecar的日志agent容器,用于采集该POD主容器产生的日志。
三种方式都有利有弊,没有哪种方式能够完美的解决100%问题的,所以要根据场景来贴合。


Zephery大约 11 分钟
Kubernetes之request 和 limit详解

Kubernetes之request 和 limit详解

我们都知道 Kubernetes 中最小的原子调度单位是Pod,那么就意味着资源管理和资源调度相关的属性都应该Pod对象的字段,其中我们最常见的就是 Pod 的 CPU 和内存配置,而为了实现 Kubernetes 集群中资源的有效调度和充分利用,Kubernetes采用 requests 和 limits 两种限制类型来对CPU和内存资源进行容器粒度的分配。

resources:  
    limits:    
        cpu: "1"
        memory: "500Mi"
    requests:    
        cpu: "100m"
        memory: "1000Mi"

Zephery大约 2 分钟
JVM调优思路

JVM调优思路

在项目开发过程中、生产环境中,任何问题的解决、性能的调优总结下来都是三个步骤,即发现问题、定位问题、解决问题,本文将从这个步骤入手,详细阐述内存溢出(OOM、OutOfMemeory)、CPU飙高、GC频繁等JVM问题的排查、定位,以及调优。

1.监控发现问题
2.工具分析问题
3.性能调优
下面开始一步步讲解

一、监控发现问题

通过监控工具例如Prometheus+Grafana,监控服务器有没有以下情况,有的话需要调优:

GC频繁
CPU负载过高
OOM
内存泄露
死锁
程序响应时间较长


Zephery小于 1 分钟
主流GC收集器采用的算法

主流GC收集器采用的算法

垃圾回收器 采用的GC算法 代次
Serial 复制 新生代
Parallel 复制 新生代
ParNew 复制 新生代
CMS (Concurrent Mark-Sweep) 标记-清除 老年代
G1 (Garbage-First) 标记-整理 老年代
ZGC (Z Garbage Collector) 标记-整理 老年代
Shenandoah 标记-复制(独立的全局复制阶段) 老年代

Zephery大约 3 分钟
一次jvm调优过程

一次jvm调优过程

前端时间把公司的一个分布式定时调度的系统弄上了容器云,部署在kubernetes,在容器运行的动不动就出现问题,特别容易jvm溢出,导致程序不可用,终端无法进入,日志一直在刷错误,kubernetes也没有将该容器自动重启。业务方基本每天都在反馈task不稳定,后续就协助接手看了下,先主要讲下该程序的架构吧。
该程序task主要分为三个模块:
console进行一些cron的配置(表达式、任务名称、任务组等);
schedule主要从数据库中读取配置然后装载到quartz再然后进行命令下发;
client接收任务执行,然后向schedule返回运行的信息(成功、失败原因等)。
整体架构跟github上开源的xxl-job类似,也可以参考一下。


Zephery大约 6 分钟
引用计数和根可达算法

引用计数和根可达算法

本文从JVM是如何寻找垃圾的?——引用计数和根可达算法转载

硬件角度来看什么叫做垃圾?

计算机的内存也叫做**DRAM(Dynamic Random Access Memory, 动态随机访问内存)**,底层是由一个电容和一个晶体管组成,电容充电表示该bit位数据为1,电容放电表示该bit位数据为0,整个内存就是无数个这样的bit位构成的。同时,内存需要在通电状态保持按周期频率的刷新,才能够维持数据的状态。


Zephery大约 12 分钟