今天想起来测测一个小 Django 站点的性能和压力,寻找一下看有没有内存泄漏,先介绍下服务器的信息,站点部署在 Google Cloud Platform,实例尺寸是微型(1 共享 vcpu, 0.6GB 内存),价格大致是($4.28/月 估算值),地区是 asia-east1-c,速度还是挺快,由于之前送的 300 刀还没用完,所以不用担心钱钱问题。
部署方式主要参照的这篇文章 《How To Set Up Django with Postgres, Nginx, and Gunicorn on CentOS 7》,大致内容如下:
- CentOS 7
- Python 3.6.1
- Nginx 1.10.2
- Gunicorn 19.7.1
- Virtualenv 15.1.0
- Django 1.11.1
测试命令:
ab -c 5 -n 1000 http://www.cocoaz.com/
结果:
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.cocoaz.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: nginx/1.10.2
Server Hostname: www.cocoaz.com
Server Port: 80
Document Path: /
Document Length: 15823 bytes
Concurrency Level: 5
Time taken for tests: 277.324 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 16049000 bytes
HTML transferred: 15823000 bytes
Requests per second: 3.61 [#/sec] (mean)
Time per request: 1386.619 [ms] (mean)
Time per request: 277.324 [ms] (mean, across all concurrent requests)
Transfer rate: 56.51 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 21 208 425.4 24 3162
Processing: 100 1170 1442.9 801 20850
Waiting: 76 702 661.3 488 4786
Total: 124 1378 1561.5 1034 20883
Percentage of the requests served within a certain time (ms)
50% 1034
66% 1501
75% 1807
80% 2000
90% 3014
95% 3816
98% 5270
99% 6200
100% 20883 (longest request)
StackDriver 监控状态:
通过监控能看到 CPU 使用率最高飙到了 90%,内存一直稳定在 50% 左右倒是没怎么变化,所有请求都成功返回。