自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 使用php-fpm状态页观察当前的php-fpm状态

对于php-fpm的参数设置,很多情况下有这样的疑问,就是内置的几个参数例如pm.max_children,pm.start_servers等这几个参数到底该设置最多为多少才合适。其实这几个参数往往取决于当前的连接数情况,而大多数情况下,我们很难断定当前的连接数情况对于我们的pm等几个参数是否合适。所以借助于php-fpm状态页可以很方便的告诉我们这几个参数的设置是否合适。    要开启p

2014-08-18 18:13:05 2051

原创 keepalived高可用的常用功能介绍

Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。本篇文章会介绍keepalived的安装,配置,还有keepalived的一些

2014-08-10 21:29:34 2347

原创 linux内存基础知识和相关调优方案

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。对于整个操作系统来说,内存可能是最麻烦的的设备。而

2014-07-09 12:38:03 1548

原创 如何在putty终端上打开图形化管理工具

有时候需要在putty这样的图形终端中打开图形化的管理工具会出现下面的错误:[root@node2 ~]# Traceback (most recent call last):File "/usr/share/virt-manager/virt-manager.py", line 383, in main()File "/usr/share/virt-manager/virt-ma

2014-07-09 11:59:13 11944

原创 对操作系统虚拟化的一些总结

CPU如何实现虚拟化?在现代计算机操作系统上,CPU被切割成了时间片进行虚拟,进行分配的,而且CPU本身被切割成了时间片,在各个进程之间进行分配的。那么就可以把CPU切割一个一个时间片,在各虚拟机之间进行分配。CPU虚拟化遇到的难题:1.在虚拟机上面申请内存的时候,只能去物理机上的内存申请2.不能让虚拟机的内核去执行CPU的特权指令。CPU是分成环的,CPU是一个硬件芯片,

2014-07-09 11:40:41 1121

原创 mysql中间件amoeba实现mysql读写分离

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简

2014-06-25 17:20:24 1246

原创 cacti安装和第三方模块的导入

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界

2014-06-24 13:48:22 1469

原创 mysql半同步复制的实现

mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master Sever就自动返回数据给客户端,而不管slave上是否接受到了这个二进制日志。在半同步复制的架构下,当master在将自己binlog发给slave上的时候,要确保slave已经接受到了这个二进制

2014-06-21 12:34:05 984

原创 nginx反向代理,负载均衡和第三方模块的安装

一.nginx的反向代理nginx的反向代理就是用户在请求一个nginx的页面的时候可以将请求代理给其它服务器,让其他服务器去处理用户的请求内容。这些服务器把处理的结果教给nginx服务器,然后nginx服务器再把响应的结果发给客户端。nginx的作用主要有2个,一是作为高性能的http的服务器,第二个作用就是作为代理服务器来实现负载均衡的效果,提供更高的并发效果。首先来看ngin

2014-06-21 10:54:11 761

原创 进程和cpu的相关知识和简单调优方案

进程就是一段执行的程序,每当一个程序运行时,对于操作系统本身来说,就创建了一个进程,并且分配了对应的资源。进程可以分为3个类别:    1.交互式进程(I/O)    2.批处理进程 (CPU)    3.实时进程 (REAL-TIME)        对于交互式进程来说,一般其占用的cpu时间片很段,但是优先级偏高;批处理进程占用的cpu时间片很长,但是优先级偏底;实时进程是

2014-06-11 15:20:26 1795

原创 基于ip san的iscsi操作实现过程

SAN是storage area network(存储区域网络)的简写,早期的san采用的是光纤通道技术,后期当iscsi协议出现以后,为了区分两者,就划分了IP SAN和FC SAN。FC SAN由于其昂贵的价格让许多企业退避三舍,IP SAN作为一个很好的代替产品出现在了人们的视线中。现在大部分存储设备提供支持基于TOE技术的接口,可以在硬件基础上处理TCP/IP协议。这意味着ISCSI设备可

2014-05-31 14:16:04 1614

原创 系统观察命令sar常用输出选项说明

sar是linux系统下一个非常有用的系统观察命令,可以观察磁盘io,cpu,块设备,内存,swap等各种信息帮助我们审核操作系统的状况。下面列举了一些常用的系统状况查看命令。sar -b:磁盘的IO传输统计    默认会显示5个值:tps:每秒发送给物理设备的io总数,其值等于rtps+wtpsrtps:每秒读io请求总数wtps:每秒写io请求总数` bread/s

2014-05-29 17:06:00 1783

原创 nginx超级详细配置

一.安装nginx    安装nginx之前,首先需要安装"Development Tools"和 "Development Libraries"两个基本组包。yum groupinstall "Development Tools" "Development Libraries"。另外还需要安装pcre-devel包。    安装pcre-devel:  yum install pcr

2014-05-16 16:47:53 918

原创 SNMP和rrdtool详解介绍

snmp全称simple network manage protocol,snmp能够通过简单的命令获取远程主机上的服务状况,以实现对远程服务的监控。snmp至今经历了3个版本,snmpv1,snmpv2,snmpv3。snmp简单工作原理就是监控端的一台主机向被监控端的一台主机发出命令,被检控端的主机在本机上安装服务能够识别到监控端主机发过来的命令并给予反馈信息。由于这种监控的局限性,保证被监控

2014-05-15 14:09:50 1578

原创 linux高可用集群heartbeat实现http的高可用

linux高可用集群的种类很多,比如常见的heartbeat,corosync,rhcs,keepalived,这些集群软件的出现为我们的业务生产环境提供了高可用的保证,本文将简单介绍一下用heartbeat的v2版本来处理一个简单的http高可用集群的搭建。      在实现http高可用集群之前,首先至少需要2台主机,并且需要做3点基本的准备工作:    1.设置节点名称,并且集群

2014-05-12 10:42:23 1442

原创 linux lvs持久链接和防火墙标记实现http和https共享同一集群服务

在对web服务做lvs负载均很集群的时候(这里主要考虑dr模式中的rr调度算法,weight都为1),有一种问题就是如何让session共享。例如一个用户登录了一个网站,此时负载均衡到的一个服务器是a服务器,然后发表帖子以后,由于负载均衡的影响,会马上负载均衡到b服务器,由于session是保存在服务器端的,这个时候用户的session在a服务器上,b服务器上没有这个session信息,就

2014-05-09 12:55:44 1896

原创 mysql5.6中mrr和icp优化简述

mysql5.6相比之前的5.5在对辅助索引查询的优化有了较大的改变,比如今天介绍的两款针对mysql辅助索引查询的multi range read(mrr)和index condition pushdown(icp)优化。这两种优化的目的就是对mysql在对辅助索引查询的提速。下面就对这两种优化的实现目的和他们解决的问题做一下基础性的介绍。    在对这两种优化做出概述之前,先来看下传统

2014-05-09 11:22:44 1300

原创 探究递归内部的机制

对于递归,接触过编程设计的人员都应该听说过。递归是一种常用的函数设计方法,记得国外的大神曾经说过一句话:是否真正理解指针和递归,与是否是一个优秀程序员直接相关。可见指针和递归在程序设计中的重要性。本文讨论的主要是对第二个递归的讨论,对于指针,其重要性不言而喻。可以这样说,对指针的理解程度的了解深度决定了你以后程序设计生涯的深度,因为不会指针,很多底层东西的源码你是一点都看不懂的。但是这不是本文讨论

2013-10-01 23:24:27 1415 1

原创 二叉查找树详解

二叉查找树(Binary Sort Tree)又称二叉排序树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树;        由二叉查找树的性质可以知道,我们如果以二叉树的中序遍历一颗二叉查找树的话,可以得到顺序的数字。下

2013-09-07 18:49:52 833

原创 两种简单查找算法之顺序查找和二分查找

查找对于计算机编程来说是非常常见的功能。对于当今的大信息数据时代,计算机对于查找的性能又有了新的挑战,如何设计一个高效的查询,对于系统的性能有着举足轻重的影响。下面我们就来看下最简单的两种查找算法。        顺序查找称得上是最简单的查找算法,其算法思想也比较简单。就是线性表的一段开始,依次将线性表中的数据拿来与需要查找的关键字比较,如果线性表中某个记录的关键字等于给定值,那么查找成功

2013-09-07 14:08:00 1280

原创 keepalived+lvs集群的搭建

keepalived是专门用来监控集群系统中各个服务节点的状态,因为默认的LVS都需要通过调度节点(directory server,及要实现负载均衡的那台机子)。因为默认从所有客户端近来的请求都要跑到这个节点上,如果一旦这台机子出现了问题,那么整个lvs系统就会崩溃。这样的问题就是常说的单点故障。单点故障,是绝对不允许在一个健康的系统中出现的,因为一旦其中的一个服务器挂掉的话,整个系统就会处于瘫

2013-08-29 17:09:50 990

原创 字典树Trie算法

Trie树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。           它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节

2013-08-29 16:22:03 754

原创 最小生成树之prim算法

最小生成树的算法思想和界面介绍过的求单源的最短路径算法dijkstra算法有很多相似地方,甚至很多代码都是一样。prim算法要解决的主要问题是路径的最短问题。假设平面上有很多点,各个点之间有很多的线连接起来,并且到达各个点的距离不相同,需要求出一条路径,使得各个点都能被连接起来,并且他们的距离最短。    还是拿讲解dijkstra算法的那张图来看,现在的这个图是一个无向图,这是给dijk

2013-08-28 21:21:12 658

原创 Dijkstra单源最短路径算法

迪科斯彻算法(英语:Dijkstra's algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉(Edsger Wybe Dijkstra)发明的。迪科斯彻算法使用了广度优先搜索算法。算法解决的是有向图中单个源点到其他顶点的最短路径问题。举例来说,如果图中的顶点表示城市,而边上的权重表示著城市间开车行经的距离,该算法可以用来找到两个城市之间的最短路径。    该算法的输入包含了一个有

2013-08-27 16:50:45 782

转载 mysql innodb master thread分析

这是mysql技术内幕innodb存储引擎一本书上的内容,觉得对了解innodb存储引擎很有作用,于是便把他记录过来了。下面的内容主要是mysql5.1版本中的,现在的5.5或者5.6有些东西已经改变,比如innodb_max_dirty_pages_pct的值在现在的高mysql版本中已经变成了75% ,刷新脏页的比例也有所变换,现在是根据innodb_io_capacity的值的比例来指定每秒

2013-08-27 11:14:50 1455

原创 pt-duplicate-key-checker检查数据库的重复索引

pt-duplicate-key-checker这款工具也是percona-toolkit中一款非常适用的工具,它可以帮助你检测表中重复的索引或者主键。我们知道索引会更查询带来好处,但是过量的索引反而可能会使数据库的性能降低,这款工具可以帮助我们找到重复的索引并且还会给你删除重复索引的建议语句,非常好用。     首先看我的这张表的索引结构     mysql> show indexe

2013-08-22 20:22:05 4498 1

原创 mysql的pt-heartbeat监控备库延迟记录

在mysql的主备架构中,我们很关心的一种情况是,备库到底落后了主库多少,因为只有知道了具体的情况,我们才能知道当前系统的复制是否正常。如果一个在主上插入的数据,可能要等到上分钟后才能在从库插入,那这样的设计肯定是有问题的。在备库上执行show slave status\G;可以看到其中有一列为Seconds_Behind_Master,这个值理论上显示出了备库的延时,但是他不准确,比如在我的实验

2013-08-22 11:19:41 5210

原创 shell脚本实现mysql纯文本格式备份

说成mysql的纯文本格式备份与恢复好像不太正确,但是为了体现这种备份的好处,还是这样叫好了。所谓的mysql纯文本格式数据,就是在数据表中没有insert into这样的查询sql语句的存在,而只有类似如下:   '123','xxx','xxx','xxx'   '123','xxx','xxx','xxx'   '123','xxx','xxx','xxx'   '123',

2013-08-21 10:35:24 634

原创 pt-table-checksum和pt-table-sync使用方法详解

pt-table-checksum是一个很好用的用来检查mysql数据库中主服务器和备服务器数据是否一致的好工具,通常可以在主服务器上面运行下面的语句: pt-table-checksum --replicate = test.checksums     通过上述语句可以很好的检查主备的数据是否一致。该命令的原理就是检查指定需要检查的库或者表,并且把结果放到test.checksums中

2013-08-19 20:07:28 1476

原创 mysql的percona-toolkit全工具包安装教程

Percona Toolkit 是一组高级的命令行工具,用来管理 MySQL 和系统任务,主要包括:验证主节点和复制数据的一致性有效的对记录行进行归档找出重复的索引总结 MySQL 服务器从日志和 tcpdump 中分析查询问题发生时收集重要的系统信息      下面我们就来看一下,如何把Percona Toolkit的所有工具全部安装下来.      先从这个地址下载最新版本的p

2013-08-17 16:52:56 1043

原创 字符串算法之sunday算法

前面介绍了kmp算法,kmp算法是不容易懂得的算法之一,而且其处理速度也并非是最好的算法,所以现在来看一个在算法的处理速度和理解上都比kmp算法更好的一种优秀算法,sunday算法。    Sunday算法是DanielM.Sunday于1990年提出的一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不

2013-08-13 16:05:43 522

原创 字符串算法之kmp算法

在一个字符串中找另一个字符串是否包含其子串的算法有很多实现方式,比如常见的bf,bm,sunday算法等等。相比其它几种算法,kmp真的可以称得上是一种恶心的算法,因为对于速度来说,它没有bm,sunday等算法块,但是理解上来说却比后面的理解难很多。由于其特殊的性质,bf和kmp仍然是在字符串匹配算法中占据主要地位的,所以就来简单的看下kmp算法的具体实现。    所谓bf就是一种暴力求

2013-08-13 12:16:38 541

原创 查找算法之分块查找法

分块查找法    分块查找法将要排序的元素分成若干块,块的长度保持均匀,最后一块可以不满,每个块内的元素均匀排列。构造一个索引表,每个索引选择对应的一个块,每个索引选项中的值就是对应的块中保存的最大值。    分块查找的基本思路是将要查找的元素拿出来,首先与索引表中的值进行比较找到对应的块(这里可以用折半查找或者顺序查找),然后再对块中的数据进行顺序查找,看是否能够找到对应的元素。

2013-08-12 11:54:35 1189

原创 排序算法之堆排序

堆是具有特殊性质的完全二叉树,如果每个子节点的值都小于父节点的话,我们称之为最大堆;如果每个子节点的值都大于父节点的话,我们称之为最小堆。我们完全可以根据堆的性质来对数组进行排序。 堆排序的c代码如下:# include void maxHeap(int *arr,int i,int n);void createMaxHeap(int *arr,int i,int n);voi

2013-08-08 09:46:26 493

原创 排序算法之归并排序

归并排序也是经典的使用分治法思想的代表算法之一。归并排序的效率很高,而且是一种稳定的排序。其总体的思想思路就是将待排序的元素分成大致相同的两个子集合,分别对两个子集合进行排序,最终将排序的子集合合并成排好序的总集合     归并排序c代码实现如下:# include void mergeSort(int *arr,int i,int n,int *temp);void mSort

2013-08-07 10:48:58 452

原创 排序算法之直接插入排序

直接插入排序类似于我们平常在打扑克摸牌时候的一种情形。我习惯于左手拿牌右手摸牌,每次先把左手中的牌齐整齐,然后右手新摸一张牌中把它放到左手中正确的位置,让它成为一个新的整齐的牌堆。     如果根据上面的思路我们可以发现,直接插入排序的思想就是,从需要排序的第二个数字开始,拿取一个数,与前面的数字进行比较,放在合适的位置,使之成为一个新的有序数组。     直接插入排序c代码如下:

2013-08-06 11:52:43 452

原创 排序算法之快速排序

快速排序作为20世纪最重要的10大算法思想之一,其地位可想而知。而它也是目前公认的最快的排序算法之一,很多比较高级的算法也是从快速排序的思想上衍生而来。快速排序的主要思想就是归并法,想把原来的问题分解成n个子问题,然后递归的来解决这些子问题,然后合并其结果就可以得到原问题的解了。     快速排序的主要思想思路就是,从数组中拿出一个元素来(一般是第一个元素),与数组的其它元素进行比较,比它

2013-08-06 11:50:10 498

原创 数组+链表 小球移动过程

假设有一系列的小球为1~n,顺序可以不按照规则的数字排列,要求输出2个数字,n和m(分别对应小球中的顺序),如果nm,则让m跑到n的后边去,依然保持原来的整体结构不变。    这个题目就是一个典型的用线性结构来计算的题目,我们可以用两种方式来实现,数组和链表都可以很好的解决为题,这里我采用了单链表来解决,双向链表也可以解决该问题    用数组来实现的代码如下:# include

2013-08-05 19:17:17 720

原创 循环队列+卡片游戏

假设有这样一道题目,桌面上有一堆牌(n),从上往下依次记录为1~n,每次从牌顶取一次放出来,然后从剩下的牌的牌顶中取一张牌拿出来放在牌的末尾,问放出去的牌的顺序是?          这个题目显然就是用队列的思想来解决的一个问题,首先依次从队列中取出2个元素,把第一个元素从队列中放出去,第二个元素放在队列的末尾,依次这样循环下去,直到队列中没有元素为止,所以首先想到的代码如下: 

2013-08-04 11:31:55 888

原创 redis+nodejs实现队列的思路

redis里面天然的list链表非常适合做队列,下面看一个简单的nodejs+redis队列的实现过程   我们需要两个页面 一个index.ejs和一个pop.ejs分别来查看入队和出队的情况index.ejs代码如下: push页面 window.onload = functio

2013-08-03 21:51:45 2234

空空如也

空空如也

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

TA关注的人

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