web压力测试工具介绍之4-webbench

官方主页:http://home.tiscali.cz/~cz210552/webbench.html

官方介绍

Web Bench is very simple tool for benchmarking WWW or proxy servers. Uses fork() for simulating multiple clients and can use HTTP/0.9-HTTP/1.1 requests. This benchmark is not very realistic, but it can test if your HTTPD can realy handle that many clients at once (try to run some CGIs) without taking your machine down. Displays pages/min and bytes/sec. Can be used in more aggressive mode with -f switch.

中文简介

Webbench是有名的网站压力测试工具,它是由 Lionbridge公司开发。

Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况。webBech的标准测试可以向我们展示服务器的两项内容:每秒钟响应请求数和每秒钟传输数据量。webbench不但具有标准静态页面的测试能力,还有对动态页面(ASP,PHP,JAVA,CGI)进行测试的能力。还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。

more >>

web压力测试工具介绍之3-Siege

官方主页:http://www.joedog.org/siege-home/

官方介绍

Siege is an http load testing and benchmarking utility. It was designed to let web developers measure their code under duress, to see how it will stand up to load on the internet. Siege supports basic authentication, cookies, HTTP and HTTPS protocols. It lets its user hit a web server with a configurable number of simulated web browsers. Those browsers place the server “under siege.”

中文简介

Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。Siege支持多链接,可以从您选择的预置列表中请求随机的URL,支持get和post请求。所以Siege可用于仿真用户请求负载,而ab则不能。Siege支持基本的认证,cookies,除了对http支持外,还支持https,并且支持的很好,apachebanch对https支持的不够好。但不要使用siege来执行最高性能基准调校测试,这方面apachebanch就准确很多。

more >>

web压力测试工具介绍之2-http_load

官方主页:http://acme.com/software/http_load/

官方介绍

http_load runs multiple http fetches in parallel, to test the throughput of a web server. However unlike most such test clients, it runs in a single process, so it doesn’t bog down the client machine. It can be configured to do https fetches as well.

You give it a file containing a list of URLs that may be fetched, a flag specifying how to start connections (either by rate or by number of simulated users), and a flag specifying when to quit (either after a given number of fetches or a given elapsed time). There are also optional flags for checksums, throttling, random jitter, and progress reports.

中文简介

http_load 以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具,它可以以一个单一的进程运行,一般不会把客户机搞死。可以可以测试HTTPS类的网站请求。

more >>

web压力测试工具介绍之1-ab

官方主页:https://httpd.apache.org/docs/2.2/programs/ab.html

官方介绍

ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed to give you an impression of how your current Apache installation performs. This especially shows you how many requests per second your Apache installation is capable of serving.

中文简介

ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。

more >>

MQTT V3.1协议规范

作者:

  • International Business Machines Corporation (IBM)
  • Eurotech

翻译:明歌

协议原文:
http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html


摘要

MQ遥测传输(MQ Telemetry Transport,MQTT)是一个轻量级的基于代理的发布/订阅式消息传输协议,它的设计目标是开放、简单、轻量和易于实现。这些特征使它适用于各种受限环境,比如,但不限于:

  • 网络代价昂贵,低带宽或不可靠。
  • 在嵌入设备中运行,处理器和内存资源有限。

该协议的特性包括:

  • 使用发布/订阅消息模式,提供一对多的消息分发,解除应用程序耦合。
  • 消息传输对有效载荷内容不可知。
  • 使用TCP/IP提供基础网络连接。
  • 有3个消息发布服务质量级别:

    • “至多一次”,消息发布完全依赖于底层TCP/IP网络。消息有可能丢失或重复。这一级别可应用于如下情景,如环境传感器数据,丢失一次读记录无所谓,因为很快下一次读记录就会产生。
    • “至少一次”,确保消息到达,但消息重复有可能发生。
    • “只有一次”,确保消息到达且只到达一次。这一级别可用于如计费系统等场景,在计费系统中,消息丢失或重复可能会导致生成错误的费用。
  • 轻量传输,开销很小(固定头部的长度只有2字节),协议交换最小化,以降低网络流量。

  • 提供一种机制,当客户端异常中断时,利用 Last Will 和 Testament 特性来通知有关各方。

more >>

大战C100K之4-Linux内核调优篇

早期的系统,系统资源包括CPU、内存等都是非常有限的,系统为了保持公平,默认要限制进程对资源的使用情况。由于Linux的默认内核配置无法满足C100K的要求,因此需要对其进行适当的调优。

我们可以通过 ulimit 查看一下典型的机器默认的限制情况:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 204800
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 204800
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

比如其中的 open files,默认一个进程能打开的文件句柄数量为1024,对于一些需要大量文件句柄的程序,如web服务器、数据库程序等,1024往往是不够用的,在句柄使用完毕的时候,系统就会频繁出现emfile错误。

more >>

大战C100K之3-安装软件篇

原本这个系列是打算用各种不同的语言,如C、Java、Erlang、Ruby、NodeJS等来完成相同实验,并进行对比,但计划赶不上变化,最终只完成了NodeJS的,不过安装各种软件的过程不可以浪费,所以就都记录下来了。

这篇所有软件的安装均在Ubuntu12.04.2-desktop-x86_64系统下完成。

more >>

大战C100K之2-准备篇

工欲善其事,必先利其器。

本篇的主要内容就是介绍实验的主体——服务器端和客户端的配置信息。

笔者用来实验的机子(也就是我的爱机:Y460)的主要配置信息如下:

  • CPU:英特尔 Core i3 M 330 @ 2.13GHz 双核笔记本处理器
  • 内存:6G DDR3 1066MHz
  • 操作系统:Windows 7 旗舰版 64位 SP1

more >>

大战C100K之1-开篇

什么是C100K,要解释这个就先得从大名鼎鼎的C10K Problem说起。

随着互联网的迅速发展,越来越多的网络服务在处理数以万计的客户端连接时,往往出现效率低下甚至完全瘫痪的情况,这就是C10K问题。解决C10K问题,通俗地讲,就是通过硬件和软件的配合,达到单台服务器可以淡定地处理 10*1000=10000 条来自客户端的长连接,可以称之为是IT界的“极限运动”。同理,啥是C100K,我想聪明的看官你懂的。

由于提出C10K的时间也比较“久远”了,硬件和软件技术日新月异,C10K如今已经是“小菜一碟”了,更高的目标,比如C50K、C100K、C200K、C1M等等,也相继地被牛人们斩于马下。

这类问题可以我暂且笼统地称为高并发长连接问题。解决这类问题,主要的策略有2种:

  1. 异步事件IO
  2. 多进程或多线程

more >>