ab只是简单的测qps,如果想要模拟真实的用户访问,建议还是使用一些专门的压力测试工具。
HP的LoadRunner、IBM的Rational Performance Tester、Apache的Jmeter(免费开源)、还有Borland的SilkPerformer
通过模拟正常业务执行的方式去测试服务器负载的量。
最不济,自己写一些爬虫脚步去抓取自己的网站页面,检测页面返回时间。比如用tornado异步去执行httpclient生成大量的请求。
如果没有长链接或者ajax轮询这类的业务。实时用户在线是算不出来的。只能去估算,用户正常的业务几秒钟发一次web请求到后端,然后乘以2w的基数。去统计一个时间段的总数,再回来压qps。
要是我没钱没时间去用专业的压力测试工具。我会用tornado这么写。
import tornado
import tornado.gen
import tornado.httpclient
import time
class GenAsyncHandler(RequestHandler):
@
gen.coroutine
def get(self):
http_client = AsyncHTTPClient()
respOnse= yield http_client.fetch("
http://example.com/step_1")
sleep(5)
respOnse= yield http_client.fetch("
http://example.com/step_2")
sleep(5)
respOnse= yield http_client.fetch("
http://example.com/step_3")
sleep(5)
这样的形式,一个handler就是一个完整的业务请求。然后调用2w次。做统计。