4 祈雨v

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1w+

Linux常用性能监控命令

CPUuser(通常缩写为us),代表用户态CPU时间。不包括下面的nice时间,但包括了guest时间nice(通常缩写为ni),代表低优先级用户态CPU时间,也就是进程的nice值被调整为1-19之间时的CPU时间。nice可取值范围是-20 到19,数值越大,优先级反而越低system(通常缩写为 sys),代表内核态CPU时间idle(通常缩写为 id),代表空闲时间。它不包括等待I/O 的时间(iowait)iowait(通常缩写为 wa),代表等待I/O的CPU时间irq(通常缩写

2020-08-29 15:24:30

golang低版本http2偶现400

描述项目组在对某个Golang应用进行压测时,在请求TPS较高的时间段,偶现发起HTTP请求外部系统错误,被请求的外部系统为Nginx代理的另一个Golang应用。查看Nginx日志时发现,Golang客户端请求报错时,Nginx日志显示该报错请求被返回400状态码,如下所示:将Nginx日志中压测期间所有返回400状态码的日志过滤出来,可见该错误稳定每几秒复现一两次,如下所示:问题定位起初认为是外部系统应用因为压测压力过大导致拒绝访问错误而返回的400状态码,但是经排查发现被调用的外部系统并

2020-08-29 15:22:46

hostname in certificate didn‘t match

描述某服务商对接公司的在阿里云配置的API网关时,对方开发沟通说我们公司的HTTPS有问题,请求接口后报如下错误:javax.net.ssl.SSLException: hostname in certificate didn't match: <马赛克.com> != <*.alicloudapi.com> OR <*.alicloudapi.com> OR <alicloudapi.com>看到错误信息,第一反应是HTTPS证书有问题,所以HTTP

2020-07-25 16:38:49

常见对称加密原理以及应用

加密算法所谓对称加密算法,通过密钥将明文加密成密文,并且再通过同一个密钥将密文解密成明文,相对于非对称加密算法速度快效率高,对于明文文本越长效率优势越大。常见的对称加密算法有AES、DES、3DES等,其中DES由于密钥长度低容易被暴力破解,因此安全性相对较低已经不推荐使用。而3DES则是DES的升级版,安全性有所提升,但依然不如AES,因此推荐安全性更高的AES加密算法。算法算法类型密钥长度分组长度安全性AES块密码算法128/192/256比特128比特安全

2020-07-25 16:36:03

tcp_tw_recycle引起的TCP握手失败

背景测试环境的一台Nginx服务器,最近一直被前端同事吐槽网络有问题,经常出现访问HTTP请求时超时,哪怕是静态文件也经常超时。刚开始以为是公司网络抽风了,也就没放在心上,但持续了一个星期,而且复现率很高,这才反应过来应该不是网络的锅。于是在请求客户端与Nginx服务器上均作了抓包。本地客户端抓包结果如下图1,请求Nginx服务器TCP握手时超时。结果似乎很明朗,客户端TCP握手的SYN请求丢包导致多次重试,直到重试超时而TCP握手失败。看上去似乎就是网络问题,但这复现率也太高了,于是在服务器上也做了

2020-07-25 16:33:14

记一次mysql执行DDL导致锁表

背景线上某数据库意外发现缺少索引,并且该表的数据量很少,只有几万条记录而已,因此很随意地尝试给该表添加索引。原本预期该表的记录很少,添加索引的耗时应该很短,结果却直接导致该表被锁,所有该表的增删改查操作全部阻塞,继而影响到了线上业务。发现锁表后,执行show processlist发现大量线程阻塞,状态显示Waiting for table metadata lock。通过命令终止了DDL线程,该表恢复正常。mysql从5.6版本起支持Online DDL,理论上执行DDL语句不会阻塞诸如INSERT、

2020-06-28 10:17:19

mysql磁盘占用查看

磁盘占用分析在没有权限查看mysql所在磁盘时,当监控发现磁盘空间不足时,如何通过mysql的命令查看当前mysql实例的磁盘占用情况。binlogmysql默认不清理binlog日志,当运行一段时间后可能会累计大量的binlog文件。通过如下命令查看当前binlog占用情况,文件大小单位为字节:mysql> show binary logs;+------------------+-----------+| Log_name | File_size |+-------

2020-06-28 10:15:16

mysql对text字段update致磁盘增长

描述公司有一张表占用的磁盘空间很大,占用磁盘的主要是该表的一个text类型字段。于是我们打算通过洗数据的方式,先将该表的text值更新成一个长度很短的值,预期更新完后该表的磁盘占用不会变,但是表的数据页会有大量的碎片空间,然后再通过例如命令OPTIMIZE TABLE来回收释放未使用的磁盘空间,最终实现减小该表的磁盘空间占用。但实际操作时,当我们将该表的text值的字段批量更新成更短的值时,通过监控发现该表的磁盘空间迅速增长,与我们预期不符。此时才意识到遇到了mysql的行溢出的场景。复现创建两个带

2020-06-28 10:13:47

elasticsearch报错index read-only

背景线上服务器的Elasticsearch服务大量报错,查询数据没问题,但是新增或者修改数据时,返回如下错误:{ "error": { "root_cause": [ { "type": "cluster_block_exception", "reason": "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];" } ], "type": "

2020-05-28 20:17:57

TIME_WAIT与Http的Keep-Alive

背景虽然上一次服务器TIME_WAIT连接过多导致报警后,解决方案初步拟定,但是还有一个疑问:线上的服务器架构是前端 -> nginx -> server的模式,但是nginx服务器并没有触发报警,仅仅后端server服务器触发了报警。况且是一台nginx服务器负载均衡了多台server服务器,当时每台server服务器均触发了6000的连接数阈值,但nginx上仅仅有三千多的连接数。查看连接数命令如下:[nginx@hd2-cil-rs-nginx-01 ~]$ netstat -n |

2020-05-28 20:16:56

记一次TIME_WAIT导致连接数报警

背景公司监控报警,提示线上服务器的TCP连接数超过警告阈值。报警的几个机器原先的业务量请求量并不大,所以预设的报警阈值并不高只有6000,突然报警有点措手不及,于是先登录服务器把当前的所有连接情况打印下来统计分析。[webapp@hd2-cil-rs-app-02 ~]$ netstat -natp > tmp[webapp@hd2-cil-rs-app-02 ~]$ wc -l tmp5410 tmp原因分析TCP连接数量暴涨,初步怀疑如下:某应用的数据库连接泄漏,使用后数据库连

2020-05-28 20:14:07

记一次生产事故OOM问题排查

背景线上应用需要进行一个涉及600W数据的操作,之前我们应用从来没有一次性应对这么大量的数据,最多就一次数十万而已。结果,这次600W的数据操作引起了生产事故,直接导致应用不可用长达半小时之久。OOM晚上九点半,监控告警提示线上应用宕机。紧急排查发现应用的的进程已经不在了,怀疑是因为内存占用过多导致被操作系统杀进程了。接着查看操作系统日志,如下,果然发现是因为内存占用高达8G而被系统直接杀进程。[webapp@hd2-cil-rs-app-01 ~]$ dmesg...[38617319.5

2020-05-28 20:11:25

redis分布式锁RedissonLock的实现细节

简单使用String key = "key-lock";RLock lock = redisson.getLock(key);lock.lock();try { // TODO} catch (Exception e){ log.error(e.getMessage(), e);} finally { lock.unlock();}String key =...

2020-04-27 16:48:39

webservice复杂加密签名(2)java调用

依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-ws</artifactId> <version>1.4.7.RELEASE</version></...

2020-04-20 21:47:41

博客迁移声明

博客迁移到:https://wakzz.cn当然CSDN还会作为备份不定时更新博客。

2020-04-11 12:53:04

webservice复杂加密签名(1)SoapUI

概述WebService本来以为很简单,直到我遇到了万事达的一个对接项目,万事达提供的网关接口是WebService协议,而报文涉及到了WebService的加密,复杂到令人怀疑人生。例如下方两个XML报文,第一个XML报文是加密前的明文报文,而第二个XML报文则是加密签名后的报文。<soapenv:Envelope xmlns:soapenv="http://schemas.xmlso...

2020-04-07 21:05:36

利用中间人拦截实现APP内H5窜改

背景公司与某银行合作,由我公司开发一个H5页面嵌入到该银行的官方APP中,业务场景为用户在H5中定位获取附近商户门店,然后用户在H5上领优惠券然后去线下门店核销优惠券。当我们开发进度过半时,尽管一催再催,银行方面却一直迟迟未将测试环境APP提供给我们。由于担心如果银行方面在临近交付时才提供测试环境APP,会影响到H5在APP中的兼容性测试,于是我提出了使用该银行生产环境的APP来做兼容性测试。...

2020-04-06 20:43:16

mysql延时关联

描述mysql有种sql优化方式,叫延时关联,即通过使用覆盖索引查询返回需要的主键,再根据主键关联原表获得需要的数据,尤其在大分页查询的场景下,可以提高查询效率。例如下面两行SQL查询语句,在使用覆盖索引的大分页查询场景下,第二条的执行速度要远远快于第一条SQL。select * from table where xxx limit a,b;select * from table wher...

2020-04-04 20:49:34

MySQL表字符集不同导致关联查询索引失效

概述mysql在多表之间做关联查询时,需要注意各个表的字符集是否一致。如果在字符集不一致的场景下做关联查询,会出现关联字段即使有索引,但却索引失效的问题。复现建表语句,创建两个字符集不同的表,如下:CREATE TABLE `school` ( `id` int(11) NOT NULL AUTO_INCREMENT, `school_code` varchar(255) DEFA...

2020-03-19 15:21:55

通过SSH隧道远程办公

原理SSH不仅可以用于远程主机登录,还可以作为代理转发,也就是SSH隧道。具体场景如下图,客户端可以SSH登录到外网服务器,外网服务器与内网服务器可以网络连接,但客户端与内网服务器无法网络连接。此时就可以通过SSH隧道,将客户端的请求通过外网服务器代理转发到内网服务器,再将请求返回给客户端,实现客户端与内网服务器的网络交互。操作1、建立SSH隧道建立SSH隧道可以通过XShell或者直...

2020-02-25 11:49:58

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。