Rui's Blog


  • 首页

  • 关于

  • 标签

  • 归档

  • 搜索

快速搭建本地HTTP/2服务

发表于 2018-12-24 | 阅读次数:

背景

2015年5月 HTTP/2 标准协议正式发布后,已得到绝大部分的浏览器的支持,但截止发文时使用的网站占比还不到1/3。
本文目的是为了快速搭建一个本地HTTP/2服务,以供研发小伙伴开发测试,从而加深对HTTP/2的理解。

环境

  1. OpenSSL: 1.0.2q
  2. Nginx: 1.15.7

步骤

  1. 生成本地根证书:
1
2
3
4
5
# 使用AES256-bit编码加密生成4096位的根秘钥
openssl genrsa -aes256 -out rootCA.key 4096

Enter pass phrase for rootCA.key: password
Verifying - Enter pass phrase for rootCA.key: password

各参数可以查看man ca 或者 查阅这里。

阅读全文 »

Elasticsearch bool query小结

发表于 2018-12-18 | 阅读次数:
背景

最近有一个线上的es查询问题,最后确定在使用bool query多条件组合查询时出现should子句查询失效,于是查找资料来确定问题所在。

其中Elasticsearch: 5.5.0

问题

找到相关的查询语句:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"query": {
"bool": { // bool query 查询
"should": [ // should子句
{
"match_phrase": {
"name": {
"query": "星起",
"boost": 30,
"slop": 5
}
}
}
],
"filter": { // #filter子句
"bool": {
"must": [
{
"terms": {
"round": ["A轮"]
}
},
]
}
}
}
}

问题在于:使用 bool query组合查询时,should与filter 组合查询的结果只匹配了filter子句,并不匹配should子句,达不到should和filter取交集的预期。

阅读全文 »

如何持续监控 Unicorn 的性能指标

发表于 2016-04-20 | 阅读次数:

背景介绍

最近用 Grape 重写了一份API,马上要上线了,突然接到boss通知,需要做好应用服务器监控,以便上线遇到突发情况。于是乎从万能的 github 上找到了这个开源的代码:unicron_metrics。用起来还不错,下面给大家介绍一下认识。

是什么

unicorn_metrics是采集基于Rack应用服务性能数据的工具, 尤其针对类似Unicorn
的多进程服务器,并提供一个对外查看数据的接口。

如何监控

通过 raindrops 来采集Uincorn指标数据,同时通过构建Middleware统计应用中HTTP指标数据。

监控指标

unicorn_metrics监控指标分2部分:http指标和raindrops指标, 下面介绍各方面的指标:

指标名称 指标类型 说明
request.GET timer GET请求的消耗时间(ms)
request.POST timer POST请求的消耗时间(ms)
request.PUT timer PUT请求的消耗时间(ms)
request.DELETE timer DELETE请求的消耗时间(ms)
request.HEAD timer HEAD请求的消耗时间(ms)
responses.2xx counter 响应状态为2xx的次数
responses.3xx counter 响应状态为3xx的次数
responses.4xx counter 响应状态为4xx的次数
responses.5xx counter 响应状态为5xx的次数
raindrops.calling gauge 应用服务器调度的数量
raindrops.writing gauge 被写入数据的客户端的数量
raindrops.active gauge 所有进程中已连接并尚未关闭的sockets的连接数
raindrops.queued gauge 等待连接sockets的请求数
阅读全文 »

RubyCritic-一款不错的检测代码质量工具

发表于 2016-02-04 | 阅读次数:

最近在开发Cloud Insight API时,发现一个可以检测ruby代码质量的工具-RubyCritic。

RubyCritic 集成 Reek, Flay 和 Flog这3个分析代码的工具,对你的Ruby代码进行静态分析并生成质量报告。

功能介绍

  1. 可以总览你的项目,并且可以对代码打分(百分制)

  2. 根据各自的坏味道数量建立文件索引

对不同文件按照改动频率、复杂度、重复度和坏味道4个维度进行综合评定代码质量等级


阅读全文 »

探讨如何统计 Ruby 应用服务器使用内存方法

发表于 2015-12-05 | 阅读次数:

最近在解决探针获取Ruby应用服务器的内存使用的情况,将解决的思路总结一下,希望对此感兴趣的伙伴一起探讨。

先对比应用服务器:Puma和Passenger,下面对比这2个服务器内存统计,

Puma (2.13.4)

单进程模式:直接获取进程id: Process.pid

1
memory = `ps -o rss= #{Process.pid}`.to_f / 1024 #单位:MB

cluster模式:以启动2个worker进程为例:
Puma cluster
从上面截图可以看到,Puma启动后会出现3个进程:1个master进程和2个worker进程。
内存的使用情况(见RSS列):

1
(109908 + 109868 + 7256 ).to_f / 1024 = 221.7109375 #单位:MB

而对于探针来说,一个探针实例是伴随进程一起启动的,也就说一个探针只能识别自己所在的进程id,那如何获取应用服务器使用的内存?我们用其中1个woker进程所在的进程组[PGID]看一下:(为啥不是父进程?, 见下文Passenger)

阅读全文 »

LuYingRui

LuYingRui

Stay hungry, Stay foolish.

5 日志
12 标签
RSS
GitHub E-Mail
© 2016 — 2019 LuYingRui