- 博客(72)
- 资源 (1)
- 收藏
- 关注
原创 Golang开发Prometheus的Exporter
我们知道zabbix在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了prometheus技术。prometheus号称是下一代监控。官方已经有很多的export了,本文就来打大家自己手写一个。
2020-08-30 15:29:36
2199
原创 TCP协议之四次挥手
TCP提供一种面向连接的、可靠的字节流服务在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCPTCP使用校验和,确认和重传机制来保证可靠传输TCP给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准确说 TCP 也不是 100%
2020-07-07 12:36:04
543
原创 TCP协议之三次握手
TCP 是一个可以双向传输的全双工协议,所以需要经过三次握手才能建立连接。三次握手在一个 HTTP 请求中的平均时间占比在 10% 以上,在网络状况不佳、高并发或者遭遇 SYN 泛洪攻击等场景中,如果不能正确地调整三次握手中的参数,就会对性能有很大的影响。TCP 协议是由操作系统实现的,调整 TCP 必须通过操作系统提供的接口和工具,这就需要理解 Linux 是怎样把三次握手中的状态暴露给我们,以及通过哪些工具可以找到优化依据,并通过哪些接口修改参数。
2020-07-07 07:39:06
536
原创 tcpdump 使用介绍
介绍tcpdump 是一款强大的网络抓包工具,运行在 linux 平台上。熟悉 tcpdump 的使用能够帮助你分析、调试网络数据。选项-n 表示不要解析域名,直接显示 ip。-nn** 不要解析域名和端口。-X 同时用 hex 和 ascii 显示报文的内容。-XX 同 -X,但同时显示以太网头部。-S 显示绝对的序列号(sequence number),而不是相对编号。-i 监听的网卡。-v, -vv, -vvv 显示更多的详细信息。-c number 截取 numb
2020-06-27 10:41:56
332
原创 mysql初窥sys库
sys数据库出现在5.6及以上的版本中,由快捷查询试图、辅助存储过程和函数组成的一组schema级别的集合,绝大部分的数据来至于performance_schema(如果未开启performance_schema,则sys系统库中的大多数试图将查无数据),少数来至于information_schema.sys中的试图大多数都是成对出现的,名称相同,其中一个带x$前缀(供程序访问),一个不带(人工查...
2019-06-25 17:07:39
461
原创 mysql通过trace分析优化器如何选择执行计划
在我们调优MySQL的SQL时候,通常使用explain进行查看sql的执行计划。至于优化器为什么会这样选择,就无从得知。如果你想了解为什么,那么可以通过trace文件能够进一步了解为什么优化器选择A执行计划而不选择B执行计划.帮助我们更好的理解优化器的行为.打开trace,并设置格式为JsonSET OPTIMIZER_TRACE=“enabled=on”,END_MARKERS_IN_J...
2019-06-25 14:28:23
863
原创 Linux性能分析工具之lsof
概念: 是list open files的简写,是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。...
2019-04-25 17:51:24
367
原创 Linux性能分析工具之pidstat
概念: 用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。参数: -u 默认的参数,显示各个进程的CPU使用统计 -r 显示各个进程的内存使用统计 -d 显示各个进程的IO使用情况 -p 指定进程号 -w 显示每个进程的上下文切换情况 -t 显示选择任务的线程的统计信息外的额外信息输出字段意义 ...
2019-04-25 15:41:09
454
原创 Linux性能分析工具之iostate
概念: I/O statistics 是输入/输出统计的缩写,主要用于监控系统设备的IO负载情况。特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。缺点就是它不能对某个进程进行深入分析,同vmstat一样,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat直接...
2019-04-25 14:42:13
1457
原创 Linux性能分析工具之vmstate
概念: vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO读写、CPU活动等进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。参数: -a:显示活跃和非活跃内存 -f:显示从系统启动至今的fork数量 。 -m:显示slabinfo -n:只在开始时显示一...
2019-04-24 16:26:54
2100
原创 etcd+confd生成配置文件
etcdetcd 是一个分布式键值对存储,设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(write barriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备。安装:a.wget https://github.com/coreos/etcd/releases/download/v3.1.4/etcd-v3.1.4-li...
2018-10-11 17:39:14
2801
1
原创 http原理浅析
一、HTTP协议基础以及发展历史1.五层网络模型介绍:物理层:定义物理设备如何传输数据数据链路层:在通信的实体间建立数据链路连接网络层:为数据在结点之间传输创建逻辑链路传输层:向用户提供可靠的端到端的服务,向高层屏蔽了下层数据通信的细节应用层:构建于TCP协议至上,屏蔽网络传输相关细节,为应用软件提供了很多服务 2.http协议的发展历史:a.HTTP/0.9: 就只...
2018-06-12 10:57:42
1332
原创 VBA基础知识整理
最近由于项目的需要,需要在Excel自定义一些函数,来完成特殊的处理,为了完成工作,就囫囵吞枣的写了一些代码,现在闲暇下来,就好好的学习一下,VBA的基础知识。1.变量 1.Dim <<variable_name>> As <<variable_type>> 2.规则 变量名称必须使用一个字母作为第一个字符。 变量名称不能使用空格,句点(.),感叹号(
2017-12-16 17:05:54
76032
20
原创 redis事务
redis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。
2017-11-24 16:40:26
358
原创 tarantool知识整理(1)
tarantool是一个高性能的key/value存储服务器,“Get your data in RAM. Get compute close to data. Enjoy the performance”这是官网的解释.
2017-09-23 15:47:46
1168
原创 lua基础知识整理
Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。轻量级和可扩展是他的优点。
2017-09-22 23:13:58
3492
原创 wrk调用lua测试性能
最近需要对项目进行性能测试,用了之前看的wrk。由于项目中的测试代码不能公开,就随便写了脚本代码如下,来记录一下,避免好久不用就忘记了:request = function () –可以自己写函数来实现不同的请求传递不同的参数,尽可能的模仿真实请求 wrk.body = ‘adfasdasdfasd’ –也可以设置hea
2017-09-19 18:27:51
3264
原创 Python虚拟环境
virtualenvPython的背后有着庞大的开源社区支持,但是有一个缺点就是每个包的质量都参差不齐,如果我们在工作服务器上去测试安装每个包,就会造成整个的服务器形成庞大复杂的第三方包依赖(所有第三方的包都会被pip安装到Python的site-packages目录下)。
2017-06-13 10:31:28
330
原创 python中的ORM
ORM 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。 ·
2017-05-31 22:54:20
575
原创 自动化运维工具之fabric
fabricFabric是一个基于Python(2.5-2.7)的库和命令行工具,用来提高基于SSH的应用部署和系统管理效率。稍微了解Python的人都知道,实际上它只节省了数行 if name == “main” 这样的惯例代码而已。Fabric 的设计目的更是为了使用它自己的 API,包括执行 Shell 命令、传送文件等函数(或操作)接口。
2017-05-30 14:29:22
1580
原创 glances – 系统监控工具
Glances是一个相对比较新的系统监控工具,用 Python 编写的,使用 psutil 库从系统获取信息。你可以用它来监控 CPU、平均负载、内存、网络接口、磁盘 I/O,文件系统空间利用率、挂载的设备、所有活动进程以及消耗资源最多的进程。Glances 有很多有趣的选项。它的主要特性之一是可以在配置文件中设置阀值(careful小心、warning警告、critical致命),然后它会用不同颜
2017-05-17 15:00:56
2340
原创 jq-Linux命令行下解析json的命令
JSON是前端编程经常用到的格式,对于PHP或者Python,解析JSON都不是什么大事,尤其是PHP的json_encode和json_decode,干的相当的漂亮。Linux下也有处理处理JSON的神器:jq
2017-04-21 15:42:35
698
转载 HTTP 压力测试工具 wrk和ab
wrk 是一个比较先进的 HTTP 压力测试工具。wrk负载测试时可以运行在一个或者多核CPU,wrk结合了可伸缩的事件通知系统epoll和kqueue等多线程设计思想。目前wrk可以安装在Linux系统和Mac系统。 只有一个命令行, 就能做很多基本的 http 性能测试. ab,全称是apache benchmark,是apache官方推出的工具。该工具是用来测试Apache服务器的性能的。查看安装的apac
2017-03-10 16:04:49
11702
原创 MySQL profiling的用法
MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。今天我们不讨论服务器硬件的性能瓶颈,只是谈谈MySQL系统本身,通常需要对
2015-07-07 11:27:47
2672
原创 shell常用的debug方法
shell脚本中输出调试信息常用的如下方式:1.trap命令 trap命令用于捕获指定的信号并执行预定义的命令。其基本的语法是:trap 'command' signal。其中,signal是要捕获的信号,command是捕获到指定的信号之后,要执行的命令。可以用kill -l命令查看系统中全部可用的信号名, 捕获后所执行的命令可以是任何一条或多条合法的shell语句,也可
2015-03-19 15:58:58
2269
原创 C语言内存浅谈
操作系统的内存分配问题与内存对齐问题对于地层程序设计来说是非常重要的,对内存分配的理解直接影响到代码质量、正确率、效率以及程序员对内存使用情况、溢出、泄露等的判断力。而内存对齐是常常被忽略的问题,理解内存对齐原理及方法则有助于帮助程序员判断访问非法内存。一般c/c++程序占用的内存主要分为以下五种: 1.栈区(stack):系统自动分配,由程序自动创建、自动释放。函数参数、局部变
2015-02-08 21:51:59
549
原创 GNU C __attribute__ 机制简介
GNU C __attribute__ 机制简介 GNU C的一大特色就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。其语法格式为:__attribute__ ((attribute-list))。放在声明的尾部和";"之间。
2015-02-02 17:20:40
1064
原创 c语言setjmp与longjmp函数
我们都知道在一个函数内进行跳转,可以使用goto语句,但是如果要在函数之间跳转goto是不能完成的。要想完成函数之间的跳转我们需要借助setjmp和longjmp这两个函数连实现,这都包含在头文件setjmp.h中函数原型: 1. int setjmp(jmp_buf env):此函数的功能是将函数在此处的上下文保存在jmp_buf结构体中,以供longjmp从此结构体中恢复
2015-01-27 15:37:05
900
原创 c语言可变参数列表处理
函数参数的传递原理 函数参数在内存中是以栈的形式存取,从右至左入栈。 参数在内存中存放格式: 在进程中,堆栈地址是从高到低分配的。当执行一个函数的时候,将参数列表入栈,压入堆栈的高地址部分,然后入栈函数的返回地址,接着入栈函数的执行代码,这个入栈过程,堆栈地址不断递减。总之,函数在堆栈中的分布情况是,地址从高到低,依次是:函数参数列表,函数返回地址,函数执
2015-01-21 14:32:13
746
原创 Shell编程之MySQL
有些时候需要用Shell操作MySQL数据库.#!/bin/bashHOSTNAME="192.168.66.66"PORT=3306USERNAME="root"PASSWORD="guanliyuan"DBNAME="db"MYSQLPATH="/usr/local/mysql/bin/mysql"TABLENAME="test"#连接mysqlmysql="${MYS
2015-01-15 12:02:08
606
原创 Shell编程之数组、字符串基本操作
数组 概念 一对括号表示是数组,数组元素用“空格”符号分割开,格式为:array=(value0 value1 value2 value3 ...),此时数组的下标默认是从0开始的 基本操作 1.arr=(1 2 3 4 5) 2.arr=( 1 2
2015-01-13 11:08:40
999
原创 Shell编程应用篇之网站自动化备份
rsync是类unix系统下的数据镜像备份工具——remote sync。一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。与传统的cp、scp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等
2015-01-07 11:28:40
681
原创 Shell编程基础篇
1.变量 用户自定义变量 用户可以按照下面的语法规则定义自己的变量:变量名=变量值 。要注意的一点是,在定义变量时,变量名前不应加符号“$”,在引用变量的内容时则应在变量名前加“$”;在给变量赋值时,等号两边一定不能留空格,若变量中本身就包含了空格,则整个字符串都要用双引号括起来。 位置变量 通过命令行给程序传递执行参数。
2015-01-04 14:20:24
673
原创 Linux文本处理工具之awk
调用方式 1.命令行 awk [-F field-separator] 'commands' input-file(s) commands是真正awk命令,[-F域分隔符]是可选的。input-file(s) 是待处理的文件。在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符
2014-12-29 11:24:32
845
原创 Linux文本处理工具之sed
概念: sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓存区中,称为"模式空间(pattern space)",接着用舍得命令处理缓冲区中的内容,处理完成后,把缓存区的内容输出。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你是用重定向存储输出。sed主要用来编辑一个活多个文件。 格式: sed [-
2014-12-26 10:44:26
861
原创 MySQL InnoDB存储引擎之锁
概念: 锁是用来管理对共享文件的并发访问。innodb会在行级别上对数据库上锁。不过innodb存储引擎会在数据库内部其他多个地方使用锁,从而允许对不同资源提供并发访问。例如操作缓冲池中的LRU列表,删除,添加,移动LRU列表中的元素,为了保证一致性,必须有锁的介入。MyISAM引擎是表锁,而InnoDB提供一致性的非锁定读、行级锁,且行级锁没有相关额外的开销。 锁
2014-12-19 15:09:38
1585
原创 MySQL安装篇
环境介绍 系统:CentOS 5.8 64位 MySQL版本:mysql-5.6.22-linux-glibc2.5-x86_64 注意:以二进制安装。因为MySQL的编译需要很长的时间。安装步骤 1.安装的前期准备工作。 a.关闭selinux vim /etc/sysconfig/selinu
2014-12-17 01:00:10
819
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人