自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奋进的K

凯哥的日常总结分享

  • 博客(70)
  • 收藏
  • 关注

原创 模拟并发任务,观察多进程和多线程的cpu使用率(以及进程池的chunksize参数)

python 多进程多线程效率对比;python多进程的chunksize参数验证

2022-10-31 14:46:55 665 2

原创 从层数不定的字典中取出任意key值 -- 通用/可复用方案

假设:有深度不确定的字典,如何从中取出任一key的值?方案:类似ansible资产文件的yml格式的处理方式假定yaml内容如下:handler: users: user01: 1.1.1.1 #冒号和-后面的空格是必须的 user02: 2.2.2.2 book: book01: 3.3.3.3 book02: 4.4.4.4nginx01: 5.5.5.5tomcat01: 6.6.6.6解析出来的字典为(即为开头所说的不定

2021-06-25 10:29:52 362

原创 Python线程间相互等待特定条件执行

面试时遇到一个关于python线程间通信的问题,当时答的有些模糊,时候又想洗看了一番官方文档,将新的记录一下。题目:开启5个线程,每个线程循环输出一个字符串n次,例如5个线程分别循环输出a b c d e 各5次,要求每次输出都得等前一个字母输出完再输出,即最终结果应该是:abcedabcedabcedabced特点:自己执行前需要判断其他线程执行结果,自己执行完也需要返回结果供别的线程执行前判断关键点:线程并发执行,同时,每个线程都需要在自己的循环中等一个特定的条件,进而不断的执行循环面试现场思路

2021-03-26 10:56:35 945 1

原创 关于ES和Kibana中时区问题

ES中:日期时间字段在json中以字符串形式存在,但是在es中有专门的date类型来表示日期时间,并且,es中是以0时区来存储date类型的值。这就引出了一个问题:如果原始内容中的日期时间字段有时区信息,那么es会将其转换为0时区并转换为时间戳以long类型存储在es中;如果原始内容日期时间字段没有时区信息的话,例如2018-10-30 11:10:45,那么es会将其视为0时区的时间,即实际在es中存储为2018-10-30 11:10:45 +0000的时刻。kibana中kibana从es

2021-03-26 10:43:32 2354

翻译 Python中的元编程

就像元数据是关于数据的数据一样,元编程是编写程序来操作程序(Just like metadata is data about data, metaprogramming is writing programs that manipulate programs)。一个常见的看法是元编程是用来成成其他程序的程序,但是实际上它的含义更为广泛(It’s a common perception that m

2018-05-11 15:08:47 726

翻译 如何设置innodb_log_file_size

在这片文章中,我会提供一些关于如何设置 MySQL的 innodb_log_file_size 参数的一些建议。跟其他数据库管理系统一样,MySQL通过日志来实现数据的持久性(在使用InnoDB存储引擎的前提下)。这确保了当一个事务提交后,其相关数据在崩溃或者服务器掉电的情况下不会丢失。MySQL的InnoDB 存储引擎使用一个指定大小的Redo log空间(一个环形的数据结构)。Redo log的

2018-05-08 16:52:08 28028

翻译 ProxySQL Query Rewrite 使用示例

在这篇文章中,我将重新探究ProxySQL中的Query Rewrite功能,因为query rewriting是创建ProxySQL的最根本初衷。 为什么我们需要重写查询? - 你已经确定了一个触发性能瓶颈或导致系统缓慢的查询 - 你无法(快速的)修改应用代码 - 某些特殊的操作需要“重定向查询”这儿举例你作为DBA发现了一个“坏查询”,你确认是它导致了服务缓慢,并且可能会导致服...

2018-05-07 16:02:53 768

原创 pymysql的连接池实现

在使用pymysql作为MySQL驱动时,在多线程模型下,如果我们没有为每个线程创建一个单独的连接的话,就会遇到下列错误pymysql.err.InternalError: Packet sequence number wrong - got 0 expected 1这是因为pymysql的threadsafety级别为 1: Threads may share the module, but no

2017-12-26 11:14:20 11245 2

原创 Python实现具备元素唯一性的队列

直奔主题,在用多线程写一个爬虫项目时,很自然的想到用“生产者-消费者”模式,但是又想实现一个额外的需求,即如果爬虫爬到了队列中已存在的url,则不进行入队操作。想实现这个,大概面临两个问题: 1. Queue对象不支持in操作 2. 即使1成立,如果在Queue对象外部通过if item in q这种形式也行不通,因为该过程无锁,多线程情况下就无法保证查询结果的准确性进而观察了一下queue模块

2017-12-14 17:46:10 2775 5

原创 解决ProxySQL的单点问题

ProxySQL存在单点隐患,开源架构中解决单点故障最常用的应该及时keepalived了。尤其是主备服务之间不需要“实时同步数据或状态”的服务,最为适用(举个反例,MySQL双主的高可用架构如果用keepalived的话,由于切换VIP的动作还必须考慎重的考虑主从数据一致性问题,所以切换逻辑就会比较复杂。之前写过一篇该方案的文章) ProxySQL的配置支持配置文件和数据库接口(基于SQLite)

2017-08-24 13:48:29 2368

原创 Python 进程池中嵌套使用线程池

在日志分析脚本中,利用多进程并行处理同一server上的多个日志文件但是一个子进程处理一份日志文件过程中,亦有大量循环处理(串行)的情况,所以考虑若在该子进程中将一些任务改为多线程,应该可以获得较明显的提升。就下来使进程池中嵌套线程池的一些研究实验来看一个示例脚本from concurrent.futures import ThreadPoolExecutorfrom multiprocessin

2017-04-27 15:53:22 8340

原创 为MySQL设置安全的远程连接

需求:开发、测试部门需要对准生产和生产数据库进行远程访问有一阵子,是直MySQL层面接授予最小权限,并限制只允许从公司出口ip访问;iptables层面也是针对数据库端口只允许公司出口ip访问。但是这个样子终究觉得不够放心。后来研究了下MySQL的登录过程(wireshark抓包和参考官方文档),虽然说MySQL实现的登录机制(这里有机会单独说)基本不存在泄露密码的风险(理论上存在被破解的

2017-04-20 15:15:34 3881

原创 df 命令无法正常显示所有nfs挂载点

有一批最近安装的CentOS 7系统(内核版本:3.10.0-229.el7.x86_64)挂载了三个nfs目录,但是通过df -h命令只能看到其中一个,另外两个挂载点无法显示出来。而较晚安装的另一批CentOS 7系统(内核版本:3.10.0-327.18.2.el7.x86_64)却没有此现象(很奇怪的问题)。一开始怀疑是该内核版本有bug(因为之前的CentOS 6和较新的CentOS 7都没

2017-04-09 23:50:59 7427

原创 记一次APP和DB间流量异常问题的排查

情景通过zabbix监控发现有一个应用和数据库之间存在不定时的流量异常(也不频繁),具体为应用server的入向流量和数据库server的出向流量会有短时间(通常在一分钟左右)的激增,甚至快达到千兆网卡的传输上限。分析过程通过症状,几乎可以断定是由于某些sql语句需要返回大量数据导致。但这次问题的分析结果确是很不顺利(其中有我前期方法不当的原因)。初次分析:因为在那之前做了一个针对于故障/异常分析的

2017-03-19 15:00:29 1501 1

原创 Python+Mongodb实现web日志分析

日志分析在web系统中故障排查、性能分析方面有着非常重要的作用。目前,开源的ELK系统是成熟且功能强大的选择。但是部署及学习成本亦然不低,这里我实现了一个方法上相对简单(但准确度是有保证的)的实现。先说一下我想实现这个功能的驱动力(或者痛点)吧: 我们有不少站点,前边有CDN,走到源站的访问总量日均PV约4000w。下面是我们经常面临一些问题:CDN回源异常,可能导致我们源站流量和负载都面临较大

2016-12-03 12:25:02 9859 25

原创 在crontab中执行python脚本系统环境变量问题

crontab中执行python脚本报错

2016-11-22 16:23:58 7107

原创 Python实现MySQL DBA小工具一例

我们知道MySQL所有的运行状态统计信息都能从“show global status”语句的结果集中查看,该结果集保存的是从MySQL启动到当前时间之间各状态值的“总数”,对我们的分析不友好。在我们日常维护和优化中,我们需要持续的跟踪某些状态值的的变化(增量或者是平均值);或者是在调整某些参数后,观察某些状态值的变化是否符合我们预期等等。  基于以上这些需求,作者用Python实现了一个小工具

2016-10-23 18:53:47 1341

原创 基于pt-query-digest的慢查询日志持续追踪

percona-toolkit被称为MySQL DBA的“瑞士*”,其强大性不言而喻。而其中的慢查询分析工具“pt-query-digest”相比官方的“mysqldumpslow”提供了很多额外的属性,例如灵活的过滤器,基于库和表的分析排序等等。今天分享一例基于“pt-query-digest”和邮件自动追踪MySQL慢查询日志的小脚本,同时避免对同类型的sql语句重复提示。直接上脚本(只要安装了

2016-10-19 22:56:40 1520

原创 利用zabbix生成awstats日志分析图表并用Python调用zabbix API批量添加item

awstats作为一款日志分析软件,功能不错,但是界面过于简单,也没有图表功能,这里我采取了一种变通的方法,将awstats的分析结果(pv、hits(文件数)、bandwidth、visits(独立ip))添加到zabbix,并通过zabbix生成趋势图表。在前两篇文章中,我们队awstats的使用及其工作方式进行了简明扼要的介绍:awstats对每个站点进行分析之后,会生成一个“awstats0

2016-10-19 22:50:21 2549

原创 awstats CGI模式下动态生成页面缓慢的改进

本文可以看做是 多server多站点情况下awstats日志分析 这篇文章的下篇,在使用过程中发现awstats在cgi模式下动态生成分析报告慢的问题 (尤其是有些站点每天两个多G的日志,查看起来简直是在考验人的耐性),本文分享一种改造这个缺点的思路。首先再来总结下awstats的处理过程以及查看分析结果的两种方式,来看官方版说明: Process logs: Building/updating

2016-10-19 22:39:28 1585

原创 多主机多站点情景下awstats日志分析

情景描述公司web服务器分为三个集群:前台(包括www、news、m等站点);图片(包括img、static等站点);后台(包括user、interface等站点)。这种情况下如何使用awstats进行日志分析呢?这个需求我们很容易想到其中的几个“关键点”如何将各台web server上的站点日志拷贝到awstats server上的合适位置以备处理呢?这好说,写脚本用scp或者rsync嘛!ok

2016-10-19 21:49:58 2170

原创 glusterfs分布式文件系统初探

公司有几台就服务器,正好有个项目对磁盘的容量以及性能有一定的要求,故而寻求分布式文件系统方面的知识,最终采用了glusterfs。以下对部署以及测试过程潦做记录。glusterfs分布式文件系统采用C/S模式,其中客户端作为对外提供服务的点,并且负责分配管理数据在后端多台server间的存储。实验采用6台服务器做整个分布式架构,其中4台存储端实现类似RAID 10模式的存储池,两台客户端通过挂载至存

2016-10-19 21:13:54 626

原创 Percona XtraDB Cluster 初探

Percona XtraDB Cluster(下文简称PXC集群)提供了MySQL高可用的一种实现方法。PXC集群以节点组成(推荐至少3节点,后面会讨论两节点的情况),每个节点都是基于常规的MySQL/Percona Server,意味着你可以从集群中分离出某节点单独使用。集群中每个节点都包含完整的数据。PXC集群主要由两部分组成:Percona Server with XtraDB和Writ

2016-10-19 20:42:32 1574

原创 利用shell脚本“综合、集中”查看linux server常用软硬件信息

作为运维人员,了解每台服务器的硬件相关信息以及系统相关配置是必不可少的工作。虽然不难,却很零散,信息集中度不高。故而做了做了一套集中展示以上信息的“平台”(其实谈不上平台,收集-整理-展示而已),其原理由一台“监控机”(暂且这么叫吧)运行主脚本,根据记录服务器IP的文件循环处理每台server;配合“被监控机”上的两个awk文件(awk规则),将信息统一收集到“监控机”然后由web server进行

2016-10-19 17:22:25 2008

原创 MySQL-5.5主从关于‘复制过滤’的深入探究

关于MySQL主从复制的过滤,例如通过binlog-ignore-db、replicate-do-db、replicate-wild-do-table等。如果不好好研究过这些过滤选项就用的话,是有可能造成主从数据不一致问题的。本文将参考MySQL-5.5官方文档并结合实验,和各位一起探讨下这里的各个设置。    以下内容参考5.5官方文档binlog_format(STATEMENT,RO

2016-10-19 17:07:34 416

原创 nginx rewrite模块探究与实验

关于nginx中的rewrite,之前的理解总感觉有些不精确。比如以下问题,经过rewrite之后:      什么情况会返回200?      什么情况会返回301/302?      什么情况浏览器里的url不变?      什么情况浏览器里的url会变?      什么情况匹配一次就不再匹配之后的规则或location?      什么情况匹配到一条规则后,会以r

2016-10-19 17:01:01 2022

原创 nagios 流量监控和报警的shell脚本

上下文:我们平台的监控系统用的是cacti+nagios。之前没有加流量异常报警设置,cacti上到是有插件可以时间报警,但是无法使用我们自己的短信接口(nagios用的购买的短信接口),所以想自己写一个脚本配合nagios实现基本的流量异常报警。脚本思路:/proc/net/dev取出当前流经网卡的(接收和发送)的kb总数量,在检测间隔时间后再次读取这两个值, 相减既是间隔时间段内的增量,再根据

2016-10-19 16:54:44 1682

原创 drbd+keepalived nfs高可用方案实践

实验环境系统CentOS 6.5 X64Ip:172.16.25.162 172.16.25.163epel源每台主机有/dev/sdb1: 1073 MB挂载点/test供drbd使用先升级nfs先关组件: yum updatenfs-utilsnfs-utils-lib nfs4-acl-tools yum updaterpcbind一、安装配置安装配置drbd:[r

2016-10-19 15:54:57 5971 6

原创 xtrabackup使用方法简介

关于xtrabackup的简介就不再赘述,百度一堆,使用方法也说明也很多。感觉还是只有自己试过之后才能有更深刻的认识,以下的使用说明基于官方文档及自己试验过程,记录下备查。安装:去percona-xtrabackup官网上下载,有rpm包、tar包,也有解压直接可用的二进制包。我试验采用的二进制包。由于里面的innobackupx命令实际上是用perl语言封装了xtrabackupx而成,所以使用i

2016-10-19 14:38:36 971

原创 LNMP自动部署脚本

我们的业务使用了nginx、mysql、php、和tomcat,写了一个自动化安装这些软件的脚本,虽然网上类似的自动安装脚本很多,但这个是自己写的,特此mark一下,希望能给别人一些参考,同时也灰常欢迎看到的朋友们提些改进意见。话不多说,直接上脚本。#!/bin/sh alias echo='echo -e' ###判断系统,此脚本只适用于64位系统 machine=`una

2016-10-19 11:15:48 2217 2

原创 shell脚本批量监控Linux server配置文件的更改

某些情况下,自己或同事修改了某处系统设置,但由此所引发的问题可能一段时间以后才会暴露,由于记不清之前改过哪些文件、改了哪些内容,解决问题时可能走弯路。于是写了一个小脚本以特定频率来监控常见系统配置文件,如发生变化,则邮件通知管理员。这里小发散一下,笔者习惯在内网单独弄一台server,给予其免秘钥登录所有服务器额权限,以便批量管理server。并且统计好一个文本文件,以”web1-x.x.x.x“每

2016-10-19 10:38:33 1262

原创 基于git+rsync的代码--备份/上线/回滚--脚本一例

简单分享下我们之前的采用的基于git的开发上线流程,以及所采用的的上线脚本。流程是个大问题,这里只简单说下只能希望是抛砖引玉了;上线脚本是本文“重点”。之所以想分享这套脚本,因为个人感觉这套脚本提供了一种目录间“备份–更新–回滚”的实现思路,对其中的细节稍作修改,应该可以适用到其他地方。这一篇算是改进版,之前是一个项目一个脚本,其实里面逻辑基本一致,只是由于项目标准化度不够,导致无法统一管理。后来经

2016-10-18 23:27:06 4712

原创 查看Linux服务器网卡流量小脚本shell和Python各一例

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡)。脚本中都用了while true“死循环”,每隔10s从“/proc/net/dev”中取一次值并根据10s内的差值计算10s内的平均带宽;按ctrl+c停止执行。脚本兼容centos6和7两个脚本都不太复杂,而且脚本中注释也比较细

2016-10-18 22:16:32 2592

原创 逻辑/物理(增量)--两套MySQL备份脚本

数据备份其重要性无需多言,再细想一步,我们至少需要两种备份:一种逻辑备份(mysqldump生成sql文件);一种物理备份(xtrabackup可很好完成)。逻辑备份在出问题时能提供更细粒度的恢复和对比;物理备份在整库范围的数据恢复或者增加从库方面有着更高的效率。 首先看下逻辑备份脚本,比较简单#!/bin/sh###每天运行一次###定义用户 密码 备份目录等信息user=my

2016-10-18 21:51:00 2264

原创 基于sysbenche-0.5的MySQL自动压测及分析出图

本文是作者工作中需要对atlas(360开源的mysql中间件,可实现读写分离、分表、多从库负载均衡)以及后期对proxysql(另一款高效并很有特色的数据库代理软件)进行测试时所设计和采用的一套脚本。由于对中间件测试,要测试对比的维度较多,所以尽量将涉及到的因素都纳入脚本中以实现自动化的压测和分析过程。总体思路如下:准备测试数据(这步在脚本之外人工完成) --> 运行脚本测试(压测线程数在脚本里

2016-10-16 20:47:43 3637

原创 ProxySQL--灵活强大的MySQL代理层

本文是我在学习和验证ProxySQL的过程中,从初识(对其机制猜想或者仅凭几次命令的结果臆断其原理),到逐渐深入(模拟各种场景测试、抓包分析、与作者交流)过程中的思路和方法和结论的记录。ProxySQL项目网址亮点:几乎所有的配置均可在线更改(其配置数据基于SQLite存储),无需重启proxysql基于正则和client_addr的可完全自主控制的路由规则详细的状态统计,统计结果和pt-qu

2016-09-25 22:16:54 33728 30

原创 linux查看本机到某特定ip的流量--思路一例

在我之前的文章中分享过“实时”查看Linux某些网卡流量的小脚本查看Linux某些网卡流量的小脚本,今天再分享一个查看本机到具体某个ip间的流量的思路。我有这个需求是因为:我们的存储是Dell存储设备通过nfs协议供多台业务机挂载使用,而我有必要了解每台机器和Dell存储之间的流量。其实,如果仅仅是要看这个流量,iftop这个软件就很好,通过其自身的选项就能满足了,不需要再做什么额外的工作。我的情况

2016-08-18 22:30:57 7599

原创 Python实现跨平台运维小神器

(本文已不再同步更新,最新代码请移步github)这阵子一直在学python,碰巧最近想把线上服务器环境做一些规范化/统一化,于是便萌生了用python写一个小工具的冲动。就功能方面来说,基本上是在“重复造轮子”吧,但是当我用这小工具完成了30多台服务器从系统层面到应用层面的一些规范化工作之后,觉得效果还不算那么low(高手可忽略这句话~~),这才敢拿出来跟小伙伴们分享一下。(注:笔者所用为pyt...

2016-08-10 11:59:19 6919 3

原创 MySQL主库高可用 -- 双主单活故障自动切换方案

前言:(PS:前言是后来修改本文时加的)对于这篇文章,有博友提出了一些疑问和见解, 有了博友的关注,也促使我想把这套东西做的更实用、更安全。后来又经过思考,对脚本中一些条件和行为做了些改变。经过几次修改,现在终于敢说让小伙伴本使用这套东西了。主要目的:    以双主结构配合keepalived解决MySQL主从结构中主库的单点故障;同时通过具体的查询语句提供更细粒度、更为真实的关于主库可用性的

2016-08-10 11:58:40 5339

转载 关于linux load average的深入了解

top是运维人员很常用的一个命令,但是关于里面load average这个数值的理解,一直以来都没搞清楚,偶尔碰见服务器上cpu使用率不高但load average数值却很高的情况。在网上找到一篇文章,深受启发,转载过来备查并对原作者表示感谢。通俗来说,判断cpu是否处于“很疲惫”的状态,从两个维度来综合判定:1、cpu使用率   2、load average   cpu先解释两个概念:“占有时间

2016-08-10 11:58:27 431

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除