Blog of Jeff Xue

  • Home

  • Categories

  • 读书

  • 编程

  • 思考

  • Archives

  • Tags

redis-benchmark使用详解

Posted on 2016-04-15 Edited on 2020-01-19 In 运维

redis-benchmark

redis-benchmark是redis自带的一个工具,可用于测试redis的性能

参数说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

-h <hostname> Server hostname (default 127.0.0.1) #所要连接的机器
-p <port> Server port (default 6379) #服务端口
-s <socket> Server socket (overrides host and port)
-a <password> Password for Redis Auth #认证密码
-c <clients> Number of parallel connections (default 50) #并发连接数
-n <requests> Total number of requests (default 10000) #总的请求数量
-d <size> Data size of SET/GET value in bytes (default 2) #SET和GET value的大小
-dbnum <db> SELECT the specified db number (default 0) #选择db number
-k <boolean> 1=keep alive 0=reconnect (default 1) # 设置是否开启keepalive
-r <keyspacelen> Use random keys for SET/GET/INCR, random values for SADD
Using this option the benchmark will expand the string __rand_int__
inside an argument with a 12 digits number in the specified range
from 0 to keyspacelen-1. The substitution changes every time a command
is executed. Default tests use this to hit random keys in the
specified range.
-P <numreq> Pipeline <numreq> requests. Default 1 (no pipeline).
-q Quiet. Just show query/sec values # 静态模式运行
--csv Output in CSV format # 输出csv
-l Loop. Run the tests forever #一直运行
-t <tests> Only run the comma separated list of tests. The test
names are the same as the ones produced as output. # 设置测试项
-I Idle mode. Just open N idle connections and wait. # 空闲模式,只创建连接
Read more »

redis2.8编译安装

Posted on 2016-04-15 Edited on 2020-01-19 In 运维

概述

Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
You can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing an element to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set.
In order to achieve its outstanding performance, Redis works with an in-memory dataset. Depending on your use case, you can persist it either by dumping the dataset to disk every once in a while, or by appending each command to a log. Persistence can be optionally disabled, if you just need a feature-rich, networked, in-memory cache.
Redis also supports trivial-to-setup master-slave asynchronous replication, with very fast non-blocking first synchronization, auto-reconnection with partial resynchronization on net split.

安装

具体可见安装脚本

1
2
3
4
5
6
7
8
tar xvzf redis-2.8.24.tar.gz -C /usr/local/
cd /usr/local/redis-2.8.24
make

mkdir /usr/local/redis
cp redis.conf sentinel.conf /usr/local/redis
cd src
cp redis-benchmark redis-server redis-cli redis-sentinel /usr/local/redis
Read more »

《重新定义公司:谷歌是如何运营的》

Posted on 2016-04-06 Edited on 2020-01-19 In 读书
  • 在每周五下午举办人人都可以畅所欲言的“TGIF”(thank god, it’s firday)大会,并在大会上与大家对话
  • 谷歌管理公司资源的首选工具竟然是一张电子表格,这张表格上列着谷歌最重要的100个项目,以供大家浏览并在半个季度一次的会议上讨论。这些半季度会议用来进行公司近况沟通,资源分配和头脑风暴
  • 用经济术语来说,如果某行业产品主要要素的成本曲线下降,那么该行业必将会出现剧变
  • 所谓创意精英:不仅拥有过硬的专业知识,懂得如何使用专业工具,还需具备充足的实践经验
  • 创意精英有分析头脑,他们对数据运用自如,可以利用数据做出决策,同时也懂得数据的误导性。因此不会沉迷其中。他们认为,数据对做判断大有帮助,但绝不会被数据牵着鼻子走
  • 如果我给你1便士,那么你就多了1便士,我就少了1便士。但如果我给你一个构想,你就收获了一个新构想,而我依然拥有我的构想
  • 所有的创意精英都必须具备商业头脑,专业知识,创造力以及实践经验,这些都是基本特质
  • 问一问你的团队:我们重视什么?我们的信念是什么?我们想要成为什么样的企业?我们希望企业在实际行动和制定策略时采取什么样的方式?
  • 如果你不能时常传达你的目标,不能通过奖励巩固你的目标,那么,你的愿景还不如打印愿景的纸有价值
  • 办公状态应鼓励大家多交流,让大家在喧闹拥挤的办公室里畅所欲言,激情碰撞。在参与完团队活动后,员工可以到清净之地换换脑子
  • 混乱往往是自我表达和创意的衍生品,因此可以算是一种好事吧
  • 在谷歌,我们要求每位管理者的桌上至少要放7份直接报告
Read more »

nginx请求头中自定义域默认不支持下划线

Posted on 2016-03-29 Edited on 2020-01-19 In 运维

生产环境更换nginx之后,sdk发起的请求返回了一个内部定义的401错误,导致用户投诉,跟踪后发现请求中缺失了部分域内容access_token,最终发现nginx会屏蔽掉不合法的请求头,而默认情况下请求头是不支持下划线的。

可以通过使用underscores_in_headers指令开启支持下划线:

Syntax: underscores_in_headers on | off;
Default: underscores_in_headers off;
Context: http, server

同样可以使用ignore_invalid_headers指令把忽略无效的头限制关闭掉,有效的头可以有英文字母,数字,连接符,下划线(受underscores_in_headers指令控制)

Syntax: ignore_invalid_headers on | off;
Default: ignore_invalid_headers on;
Context: http, server

隐藏Apache的版本号及其它敏感信息

Posted on 2016-03-25 Edited on 2020-01-19 In 运维
  • 主配置中启动httpd-default.conf

    1
    Include conf/extra/httpd-default.conf
  • 修改httpd-default.conf

    1
    2
    ServerTokens Prod
    ServerSignature off

Loadrunner发送https请求报错GENERAL_MSG_CAT_SSL_ERROR

Posted on 2016-03-24 Edited on 2020-01-19 In 性能

Loadrunner默认情况下使用ssl2/3,一般情况下后端反向代理会禁用SSLv2和SSLv3,因为SSLv2是不安全的,TLS 1.0在遭受到降级攻击时,会允许攻击者强制连接使用SSLv3,因此Loadrunner采用默认配置发送https的情况下会出现握手失败的情况

可以通过修改所采用的协议来解决

1
web_set_sockets_option("SSL_VERSION","TLS");

3年计划Plan B(打脸)

Posted on 2016-03-23 Edited on 2020-01-19 In 思考

第一年

时间区间:2016.4~2017.3
主要内容:掌握后端开发及部分前端开发的必要知识,可以独立搭建后台和前端页面,独立运营网站,并掌握网站相关运营技巧

第二年

时间区间:2017.4~2018.3
主要内容:掌握ios app开发及android app开发的必要知识,可以独立搭建app应用,上架到商城中进行发布运营,掌握相关app运营技巧

第三年

时间区间:2018.4~2019.3
主要内容:根据前期的积累逐步成为一名独立开发者

HTTP权威指南

Posted on 2016-03-23 Edited on 2020-01-19 In 读书

序

  1. HTTP Hypertext Transfer Protocol 超文本传输协议

  2. 阅读人群

  • 软硬件工程师:可以作为HTTP及相关Web技术参考书使用
  • 系统架构师和网络管理员:了解如何设计、实现并管理复杂的网络架构
  • 性能工程师和分析人员:从缓存和性能优化的相关章节获益
  • 市场营销和咨询专家:通过概念介绍更好的理解Web技术的前景

HTTP:Web基础

HTTP概述

1
2
客户端->服务器: http请求“请将名为/index.html的文档发给我”
服务器-->客户端: “好的,这就是。文档是以HTML格式给出的,有3150字节长”
  • 资源:所有类型的内容来源都是资源

  • 类型:所有HTTP对象数据都会附加一个MIME类型的数据格式标签,用它来描述并标记多媒体内容,浏览器根据MIME类型去知道应该如何处理这个对象。

    • MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔
  • URI:服务器资源名被称为统一资源标识符(Uniform Resource Identifier URI)

  • URI有两种形式:URL和URN

    • URL: 统一资源定位符,是资源标识符最常见的形式,描述一台特定服务器上某资源的特定位置
      • 第一部分http:// 被称为方案(scheme),告知web客户端怎么访问资源
      • 第二部分www.oreilly.com 指的是服务器的位置
      • 第三部分是资源路径
      • 几乎所有的URI都是URL
    • URN:统一资源名,是作为特定内容的唯一名称使用的,与目前的资源所在地无关。可以将资源四处搬移和用同一个名字通过多种网络访问协议访问资源
      • 因特网标准文档RFC 2141 用URN命名:urn:ietf:rfc:2141
      • URN仍然处于试验阶段
Read more »

ngx_http_limit_req_module模块使用说明

Posted on 2016-03-22 Edited on 2020-01-19 In 运维

ngx_http_limit_req_module用于限制指定key的并发请求数。例如可以限制单个IP地址的请求速率。限制是使用漏桶算法的方法来实现。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
http {
# Sets parameters for a shared memory zone that will keep states for various keys
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
# 设置拒绝请求返回的请求码
limit_req_status 503;
...

server {

...

location /search/ {
# sets the shared memory zone and the maximum burst size of requests
limit_req zone=one burst=5;
}

limit_req指令

Syntax: limit_req zone=name [burst=number] [nodelay];
Default: —
Context: http, server, location

当请求速度超过了zone所配置的速度,他们的请求会被延时,就像以所设定的速度在进行请求一样。超出限制的请求数量超过了最大的burst大小,会直接返回503,默认情况下最大的burst为0.

如果不希望超出的请求被延时处理,可以设置nodelay:

1
limit_req zone=one burst=5 nodelay;

可以设置多个limit_req指令

1
2
3
4
5
6
7
8
    limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
limit_req_zone $server_name zone=perserver:10m rate=10r/s;

server {
...
limit_req zone=perip burst=5 nodelay;
limit_req zone=perserver burst=10;
}

ngx_http_limit_conn_module模块使用说明

Posted on 2016-03-22 Edited on 2020-01-19 In 运维

ngx_http_limit_conn_module限制指定key值的并发连接数,如限制单个IP的连接数。

并不是所有连接都会统计,只有当这个请求正在被处理,并且整个请求头已经被读取的情况下,这个连接才会被统计进来。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
http {
# Sets parameters for a shared memory zone that will keep states for various keys.
limit_conn_zone $binary_remote_addr zone=addr:10m;
# 设置超过最大连接数后的返回码,默认为503
limit_conn_status 503;

...

server {

...

location /download/ {
# Sets the shared memory zone and the maximum allowed number of connections for a given key value
limit_conn addr 1;
}
Read more »
1…567…11
Jeff Xue

Jeff Xue

Think Bigger, Start Simple!
104 posts
10 categories
48 tags
GitHub
© 2016 – 2021 Jeff Xue
Powered by Hexo v3.9.0
|
Theme – NexT.Gemini v7.3.0