自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 论坛 (1)

原创 Shell tomcat多实例部署

#!/bin/bash#install java jdk cd /usr/srcmkdir -p /usr/javatar xf jdk1.8.0_131.tar.gz -C /usr/javals -l /usr/java/jdk1.8.0_131cat >>/etc/profile<<EOFexport JAVA_HOM=/usr/java/jdk1.8.0_131export CLASSPATH=\$CLASSPATH:\$JAVA_HOME/lib:\.

2020-05-31 20:20:54 61

原创 MySQL MGR 某个节点宕机之后开启组复制

环境如下 主机名 IP 系统 数据库版本 db01 192.168.179.102 CentOS7.4 5.7.30 db02 192.168.179.103 CentOS7.4 5.7.30 db03 192.168.1

2020-05-31 10:49:34 239

原创 Nginx proxy反向代理 缓存处理流程

接收到客户端的请求以后缓存模块处理流程缓存流程分为两部分,的一部分是接收到客户端发来的请求。首先对于用户的请求是否可以使用缓存,如果在当前的location下有proxy_cache指令才会继续往下走,如果是否的话就直接向上游发送请求。当location中有proxy_cache指令会使用proxy_cache_method来判断对哪个method方法使用缓存返回响应,比如get,head,post,否则我们不使用缓存,默认的时候是get和head方法我们才使用缓存当中的内容,这个指令可以出现在ht

2020-05-30 11:50:10 234

转载 Redis 内存管理 maxmemory设置内存上线

Redis主要通过控制内存上限和回收策略实现内存管理设置内存上限Redis使用maxmemory参数限制最大可用内存。 限制内存的目的主要有:·用于缓存场景, 当超出内存上限maxmemory时使用LRU等删除策略释放空间。·防止所用内存超过服务器物理内存。需要注意, maxmemory限制的是Redis实际使用的内存量, 也就是used_memory统计项对应的内存。 由于内存碎片率的存在, 实际消耗的内存可能会比maxmemory设置的更大, 实际使用时要小心这部分内存溢出。 通过设.

2020-05-29 22:03:22 229

原创 MySQL 组复制(MGR) 以及常用复制技术介绍

异步复制传统的MySQL复制采用主从的方式进行,可以一主一从也可以一主多从主库执行一个事务,提交后稍后异步的传送到从库中如果是基于语句的复制则会重新执行,如果是基于行的负责则会应用日志,同时是shared-nothing的架构,即所有服务器拥有同样的数据复制。传统的MySQL主从复制架构是MySQL保持数据一致性的最基本架构,如下图所示,一主一从架构,从库给主库发起读数据请求后,主库会通过 dump线程把binlog日志文件推送给从库,从库的I/O线程把接收到数据更新到relay log,之后从

2020-05-29 20:27:22 222

原创 Linux dmesg命令帮你处理故障和收集系统信息的几种方法

‘dmesg’命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。dmesg 命令的使用范例‘dmesg’命令设备故障的诊断是非常重要的。在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息。‘dmesg’命令在多数基于Linux和U.

2020-05-29 16:32:14 128

原创 Mysql MGR简介与单主模式搭建初体验

Group Replication是MySQL官方发布的一个开源插件,用来实现MySQL高可用集群。2016.12月Group Replication的第一个GA版本正式发布于MySQL5.7.17中。想要使用Group Replication功能,需要安装MySQL5.7.17及以后的版本。组的概念:Group Replication插件中有组(group)的概念,被Group Replication插件连接在一起的MySQL服务器是一个高可用组,组内的MySQL服务器被称为成员(Mem.

2020-05-28 09:43:16 127

原创 Redis Fork导致OMM killer

OOM 简介Out Of Memory Killer 是 Linux 的一种系统保护机制,实现了内存紧张时 kill 掉某些进程防止系统卡死的问题。内核官方文档在此 kernel vm instruction。Kill 的默认机制是扫描所有进程任务的内存占用、CPU占用等因素然后打分(badness),分值越高,kill 的优先级越高。进程分值可以在 /proc/PID/oom_score 文件中查看。分值范围为-17 ~ 50。可以通过手动将一个进程的 oom_score 配置为-17来防止该进程

2020-05-27 21:24:59 69

原创 Shell 细说sort排序

sort是在Linux里非常常用的一个命令,管排序sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。使用方法:sort [选项]... [文件]...长选项必须用的參数在使用短选项时也是必须的。顺序选项:-b, --ignore-leading-blanks ignore leading blanks-d, --dictionary-order consider only blanks and alphanu

2020-05-27 17:09:35 145

原创 Shell Reids自动配置脚本 redis自带脚本参考参考

[root@localhost tmp]# cat test.sh #!/bin/shdie () { echo "ERROR: $1. Aborting!" exit 1}#Initial defaults_REDIS_PORT=6379_MANUAL_EXECUTION=falseecho "Welcome to the redis service installer"echo "This script will help you easily s.

2020-05-27 15:53:22 108

原创 Nginx 负载均衡 upstream_module health check被动监测

在Nginx负载均衡中,我们很难保证说每一台应用服务器都能一直正常的运行下去。但是我们可以通过设置Nginx来检测这些应用服务器,检测这些服务器当中不能访问的。Nginx的检测方式分为两种,一种是被动监测,另一种是主动监测。下面我们分别看一下被动监测。被动监测当Nginx认为一台应用服务器不能被访问的时候,它会暂时停止向这台应用上面分发请求。直到Nginx认为该应用服务器可以再次被访问的时候才会再向这台应用服务器上面分发请求。要实现对应用服务器的监测,需要通过两个参数来帮助。fail_.

2020-05-27 14:21:29 74

原创 Linux让四剑客更加强大的 cut命令、sort命令、uniq命令

cut命令含义正如cut的中文意思,cut的工作就是“剪”,具体来说是在文件负责剪切数据用的,它以每一行为一个处理对象,与sed的机制是一样的。剪切依据cut命令主要是接受三个定位方法:第一,字节(bytes),用选项-b 第二,字符(characters),用选项-c 第三,域(fields),用选项-f语法格式cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]使用说明cut命令从文件的每一行剪切字节、字符和

2020-05-26 14:41:16 103

原创 Linux 磁盘分区工具gdisk

存储管理主要知识点: 基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID初识硬盘机械 HDD固态 SSDSSD的优势SSD采用电子存储介质进行数据存储和读取的一种技术,突破了传统机械硬盘的性能瓶颈, 拥有极高的存储性能,被认为是存储技术发展的未来新星。与传统硬盘相比,SSD固态电子盘具有以下优点:第一,SSD不需要机械结构,完全的半导体化,不存在数据查找时间、延迟时间和磁盘寻道时间,数据存取速度快。第二,SSD全部采用闪存芯片,经久耐用,防震抗摔,.

2020-05-26 12:01:33 115

原创 Nginx 浏览器之HTTP缓存的那些事

缓存是提升用户访问速度,节省带宽,减轻服务器压力的必经之道。下面都是针对的Http 1.1来说明,HTTP缓存都是针对浏览器客户端,其他第三方客户端不考虑。什么是浏览器缓存简单来说,浏览器缓存就是把一个已经请求过的Web资源(如html,图片,js)拷贝一份副本储存在浏览器中。缓存会根据进来的请求保存输出内容的副本。当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求(当然还有304的情况)。缓存是根据url来处理的,.

2020-05-26 10:48:35 105

转载 Redis 内存之内存消耗

Redis所有的数据都存在内存中, 当前内存虽然越来越便宜, 但跟廉价的硬盘相比成本还是比较昂贵, 因此如何高效利用Redis内存变得非常重要。 高效利用Redis内存首先需要理解Redis内存消耗在哪里, 如何管理内存, 最后才能考虑如何优化内存。内存消耗理解Redis内存, 首先需要掌握Redis内存消耗在哪些方面。 有些内存消耗是必不可少的, 而有些可以通过参数调整和合理使用来规避内存浪费。 内存消耗可以分为进程自身消耗和子进程消耗。内存使用统计首先需要了解Redis自身使用..

2020-05-25 21:54:24 85

原创 Nginx 客户端缓存Etag和If-None-Match

浏览器缓存和Nginx缓存使用缓存是最有效的提高访问速度的方法,在web服务器的场景当中不仅要考虑nginx作为缓存服务时候的使用方法还得考虑浏览器中的缓存失效的场景,因为浏览器缓存是否生效可以通过nginx指令去控制。浏览器的缓存对用户体验也是最大的。使用浏览器缓存,即本地缓存,只需要读取本地的磁盘或者内存就可以了。通常是同时使用浏览器和nginx缓存。Etag头部Etag是存在于HTTP响应当中的,是Nginx向浏览器返回时添加的,它来标识一个特定版本的资源,Etag的值是通过上次.

2020-05-25 17:15:56 319

转载 Redis 阻塞之外在因素

排查Redis自身原因引起的阻塞原因之后, 如果还没有定位问题, 需要排查是否由外部原因引起。 围绕以下三个方面进行排查:·CPU竞争·内存交换·网络问题CPU竞争CPU竞争问题如下:·进程竞争: Redis是典型的CPU密集型应用, 不建议和其他多核CPU密集型服务部署在一起。 当其他进程过度消耗CPU时, 将严重影响Redis吞吐量。 可以通过top、 sar等命令定位到CPU消耗的时间点和具体进程, 这个问题比较容易发现, 需要调整服务之间部署结构。·绑定CPU: 部署Redis.

2020-05-24 21:33:53 37

原创 Nginx 上游返回失败处理方法 proxy_next_upstream

proxy_next_upstream当上游返回失败的时候,我们是有些处理方法的,这个处理方法就是通过proxy_next_upstream这么一个指令来控制的。当然了该指令能够生效的前提是我们没有向客户端发送一个字节,即没有向客户端发送任何的内容,只要向客户端发送了一个字节了,说明上游服务已经生效了,那么我们就不能再选择一个新的上游服务了。所以它是在接收到请求并且在转发一个字节之前,nginx判定为错误,那么这个功能才能够生效。Syntax: proxy_next_upstream error

2020-05-24 11:39:33 225

原创 Linux 你要了解的硬盘知识都在这

SAS-SATA-SSD-SCSI-IDE硬盘讲解常见磁盘类型:SAS硬盘 SATA硬盘 SSD硬盘 SCSI硬盘(已经被淘汰了) IDE硬盘(已经被淘汰了)你的服务器使用什么磁盘?SAS硬盘SAS(串行连接SCSI接口) SAS(Serial Attached SCSI),串行连接SCSI接口,串行连接小型计算机系统接口。 SAS是新一代的SCSI技术,和现在流行的Serial ATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩...

2020-05-23 16:14:03 127

原创 Redis 阻塞内之内在因素 持久化与huge_page

持久化阻塞对于开启了持久化功能的Redis节点, 需要排查是否是持久化导致的阻塞。 持久化引起主线程阻塞的操作主要有: fork阻塞、 AOF刷盘阻塞、HugePage写操作阻塞。fork操作当Redis做RDB或AOF重写时, 一个必不可少的操作就是执行fork操作创建子进程, 对于大多数操作系统来说fork是个重量级错误。 虽然fork创建的子进程不需要拷贝父进程的物理内存空间, 但是会复制父进程的空间内存页表。 例如对于10GB的Redis进程, 需要复制大约20MB的内存页表, 因.

2020-05-22 23:07:20 86

原创 Shell 四剑客AWK第一集

概述AWK 是一种解释执行的编程语言。它非常的强大,被设计用来专门处理文本数据。AWK 的名称是由它们设计者的名字缩写而来 —— Afred Aho, Peter Weinberger 与 Brian Kernighan。部分 AWK 的典型应用场景AWK 可以做非常多的工作。 下面只是其中的一小部分:文本处理 生成格式化的文本报告 进行算术运算 字符串操作,以及其它更多安装默认Linux系统中是安装 AWK 的。使用 which 命令可以判断你当前的系统上是否安装了 AW

2020-05-22 14:38:00 92

转载 Redis 阻塞之内在因素 API

API或数据结构不合理通常Redis执行命令速度非常快, 但也存在例外, 如对一个包含上万个元素的hash结构执行hgetall操作, 由于数据量比较大且命令算法复杂度是O(n) , 这条命令执行速度必然很慢。 这个问题就是典型的不合理使用API和数据结构。 对于高并发的场景我们应该尽量避免在大对象上执行算法复杂度超过O(n) 的命令。如何发现慢查询Redis原生提供慢查询统计功能, 执行slowlog get{n}命令可以获取最近的n条慢查询命令, 默认对于执行超过10毫秒的命令都会记录到一个定

2020-05-21 21:24:37 57

原创 shell 在shell脚本中正确的编写Mysql

使用 mysql -e 参数可以执行各种 sql 的各种操作语句。不用在mysql的提示符下运行mysql,即可以在shell中操作mysql的方法。格式:mysql -hhostname -Pport -uusername -ppassword -e “”#!/bin/bash  HOSTNAME="192.168.111.84"#数据库信息PORT="3306"USERNAME="root"P...

2020-05-21 17:10:30 71

原创 Shell nginx配置wordpress站点

#!/bin/bashnginx_src="/usr/src"nginx_dir="/usr/local/nginx"nginx_url="http://nginx.org/download"nginx_ver="1.16.0"nginx_soft="nginx-${nginx_ver}.tar.gz"nginx_args="--prefix=${nginx_dir} --user=nginx --group=nginx --with-http_stub_status_module"wor.

2020-05-20 22:49:22 90

原创 Shell 配置Nginx虚拟主机脚本

#!/bin/bashnginx_src="/usr/src"nginx_dir="/usr/local/nginx"nginx_url="http://nginx.org/download"nginx_ver="1.16.0"nginx_soft="nginx-${nginx_ver}.tar.gz"nginx_args="--prefix=${nginx_dir} --user=nginx --group=nginx --with-http_stub_status_module" .

2020-05-20 21:54:37 66

转载 Redis 主从复制需要注意的问题(2)

规避全量复制全量复制是一个非常消耗资源的操作,因此如何规避全量复制是需要重点关注的运维点。 下面我们对需要进行全量复制的场景逐个分析。·第一次建立复制: 由于是第一次建立复制, 从节点不包含任何主节点数据, 因此必须进行全量复制才能完成数据同步。 对于这种情况全量复制无法避免。 当对数据量较大且流量较高的主节点添加从节点时, 建议在低峰时进行操作, 或者尽量规避使用大数据量的Redis节点。·节点运行ID不匹配: 当主从复制关系建立后, 从节点会保存主节点的运行ID, 如果此时主节点因故障重启

2020-05-20 21:02:00 91

转载 Redis 主从复制需要注意的问题(1)

通过复制机制, 数据集可以存在多个副本(从节点) 。 这些副本可以应用于读写分离、 故障转移(failover) 、 实时备份等场景。 但是在实际应用复制功能时, 依然有一些坑需要跳过。读写分离对于读占比较高的场景, 可以通过把一部分读流量分摊到从节点(slave) 来减轻主节点(master) 压力, 同时需要注意永远只对主节点执行写操作, 如图所示。当使用从节点响应读请求时, 业务端可能会遇到如下问题:·复制数据延迟。·读到过期数据。·从节点故障。数据延迟Redi..

2020-05-19 21:44:45 92

原创 Redis 使用monitor造成的内存飙升

美团在REDIS上踩过的一些坑 REDIS内存占用飙升一、现象: redis-cluster某个分片内存飙升,明显比其他分片高很多,而且持续增长。并且主从的内存使用量并不一致。二、分析可能原因:1. redis-cluster的bug (这个应该不存在)2. 客户端的hash(key)有问题,造成分配不均。(redis使用的是crc16, 不会出现这么不均的情况)3. 存在个别大的key-value: 例如一个包含了几百万数据set数据结构(这个有可能)...

2020-05-18 21:32:30 85

原创 Redis monitor 监控器

Redis有一个monitor命令,某个client执行monitor命令后,就成为了一个监控器,服务器端执行的所有命令都会发送给监控器monitor 是一个用来debug的命令,可以帮助我们了解服务器正在发生什么,例如我们打开monitor监控服务器20分钟,可以收集到期间服务器执行的所有命令,那么就可以分析出很多信息,例如:(1)什么命令执行得次数多(2)哪些key是热点(3)通过对get类型命令的提取,统计出发送流量……monitor命令使用127.0.0.1:63..

2020-05-18 20:43:07 64

原创 Nginx 阻塞与非阻塞,同步与异步

同步与异步同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。而异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在*调用*发出后,*被调用者*通过状态、通知来通知.

2020-05-18 11:04:41 122

原创 Redis闲谈:你一定需要的知识图谱

场景:Redis面试

2020-05-18 10:30:52 690

转载 Redis 客户端管理 存活状态

client list中的age和idle分别代表当前客户端已经连接的时间和最近一次的空闲时间:id=2232080 addr=10.16.xx.55:32886 fd=946 name= age=603382 idle=331060 flags=N db=0sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=get例如上面这条记录代表当期客户端连接Redis的时间为603382秒, 其中空闲了3310

2020-05-17 22:24:53 153

原创 Shell 四剑客之 sed a i 添加新行

[root@www ~]# cat sed.sh 192.168.179.1.15192.168.179.1.16192.168.179.1.17[root@www ~]# sed '/1.17/amytest' sed.sh --使用a然后再匹配到的1.17下面插入一行test192.168.179.1.15192.168.179.1.16192.168.179.1.17mytest[root@www ~]# sed '/1.17/imytest' sed.sh --在其前.

2020-05-17 14:42:38 69

原创 Shell 四剑客之 sed d 删除

sed d 替换脚本命令,此命令的基本格式为:[address]d如果需要删除文本中的特定行,可以用 d 脚本命令,它会删除指定行中的所有内容。但使用该命令时要特别小心,如果你忘记指定具体行的话,文件中的所有内容都会被删除,举个例子:[root@localhost ~]# cat data1.txtThe quick brown fox jumps over the lazy dogThe quick brown fox jumps over the lazy dogThe quick

2020-05-16 22:24:15 179

转载 Redis 客户端管理 输出缓冲区obl、 oll、 omem

输出缓冲区Redis为每个客户端分配了输出缓冲区, 它的作用是保存命令执行的结果返回给客户端, 为Redis和客户端交互返回结果提供缓冲, 如图所示:与输入缓冲区不同的是, 输出缓冲区的容量可以通过参数client-outputbuffer-limit来进行设置, 并且输出缓冲区做得更加细致, 按照客户端的不同分为三种: 普通客户端、 发布订阅客户端、 slave客户端, 如图所示:对应的配置规则是:client-output-buffer-limit <class> &

2020-05-16 21:44:16 205

原创 Nginx 一文总结Nginx负载均衡

一、Nginx的负载均衡策略负载均衡就是将请求“均衡”地分配到多台业务节点服务器上。这里的“均衡”是依据实际场景和业务需要而定的。对于Nginx来说,请求到达Nginx,Nginx作为反向代理服务器,有绝对的决策权,可以按照规则将请求分配给它知道的节点中的一个,通过这种分配,使得所有节点需要处理的请求量处于相对平均的状态,从而实现负载均衡。Nginx支持的负载均衡策略很多,比较重点的如下:round robin(轮询) random(随机) weight(权重) fair(按响应时长,

2020-05-16 13:36:11 92

原创 Nginx upstream_consistent_hash 一致性哈希避免大量缓存失效

无论是基于客户端IP地址Hash算法实现负载均衡的upstream_ip_hash模块还是基于任意关键字Hash算法实现负载均衡的。upstream_hash模块都有一个问题,当我们上游服务器的数目发生变化的时候会导致大量请求的路由策略失效。一致性Hash算法可以缓解该问题。下面介绍的是upstream_hash模块实现的一致性Hash算法。Hash负载均衡算法带来的问题这里做个简化,将客户端的key和hash算法都简化。正常情况下没有宕机的时候客户端的key=5,6,7,8,9通过has.

2020-05-16 11:40:03 118

原创 Nginx upstream_hash_module 基于任意关键字实现负载均衡

upstream_hash模块不再局限于仅仅只能通过用户的IP来作为关键字,我们可以指定任意的关键字。关键字当中既可以含有字符串也可以含有变量,我们可以随意的组合。这和我们大部分的模块如map模块相似。upstream iphashups{ hash user_$arg_username; #这里使用字符串来做hash,而不是使用客户端真实IP,构造了一个前缀加上变量 server 192.168.179.100 ; server 192.168.179.101 ;

2020-05-16 10:50:04 87

原创 Shell 四剑客之 sed s替换内容以及n p

[root@www ~]# cat sed.txt 123qfqrootrootrootqwfokThis is a test of the trial script.This is the second test of the trial script.[root@www ~]# sed -e "1s/123/456/g" -e "3s/root/linux/g" sed.txt --使用-e和下面使用;号等价456qfqlinuxrootrootqwfokThis.

2020-05-14 15:50:13 159

原创 Nginx 对客户端和server端长连接控制 keepalive

nginx长连接——keepalive当使用nginx作为反向代理时,为了支持长连接,需要做到两点: 从client到nginx的连接是长连接 从nginx到server的连接是长连接 保持和client的长连接默认情况下,nginx已经自动开启了对client连接的keep alive支持(同时client发送的HTTP请求要求keep alive)。一般场景可以直接使用,但是对于一些比较特殊的场景,还是有必要调整个别参数(keepalive_timeout和keepal.

2020-05-14 12:06:28 315

空空如也

Waterloo Bridge.的留言板

发表于 2020-01-02 最后回复 2020-01-02

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