- 浏览: 2654548 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
最近发现web服务器的压力越来越大,想测试一下gunicorn的并发能力如何。
我测试了网站最简单的about页面,首先不考虑并发的情况,对这个页面本身进行测试,平均响应时间20ms。
单个并发 qps =50 (1000ms/20ms)
10个并发 qps =400
20个并发 qps =500~550
30个并发 qps =500~550
说明gu的并发能力只有10左右(我怀疑等于cpu核数),再往上增加并发,平均耗时也随之增加,QPS没有提高。
下面是详细测试过程:
测试环境
gunicorn 0.14.6
gevent 0.13.8
python: 2.7.2
cpu: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz 16个cpu
内存 16g
一.测试最简单的django框架页面
测试代码:
views.py:
from django.shortcuts import render_to_response from django.template.context import RequestContext import threading from datetime import datetime def test(request): return render_to_response("index.html", {"result":"this text is build by python,now is %s"%(datetime.now())},context_instance=RequestContext(request))
template:
hello {{result}}
测试结果:
单个平均响应时间:2ms
单个并发: 500qps
10个并发: 4000qps
50个并发: 5000qps
二.测试纯gunicorn
myapp.py
from datetime import datetime def app(environ, start_response): data = "this text is build by python,now is %s"%(datetime.now()) start_response("200 OK", [ ("Content-Type", "text/plain"), ("Content-Length", str(len(data))) ]) return iter([data])
gunicorn -w 12 -k gevent myapp:app -b 127.0.0.1:8181
测试结果:
单个平均响应时间:0.5ms
单个并发: 1800 qps
10个并发: 10494 qps
50个并发: 11218 qps
三.测试detail页面
ab -n100 http://127.0.0.1:7299/people/mblog/46320325/detail/
测试结果:
单个平均响应时间:228ms
单个并发: 4.37 qps
10个并发: 38 qps
50个并发: 46.67 qps
评论
ab -n 1000 http://127.0.0.1:7299/test/
|test case | qps | 平均耗时(Time per request)| 总耗时(Time taken for tests)|
|单个请求 | 603.40| 1.657ms | 1.65s |
|100个并发 | 608.63| 164.302ms | 1.64s |
http_load -parallel 1 -fetches 1000 urllist
|test case | fetches/sec | 平均耗时(msecs/first-response)| 总耗时|
|单个请求 | 609.40 | 1.647ms | 1.647s |
|100个并发 | 654.534 | 145.154ms | 1.527s |
8 worker
ab -n 1000 http://127.0.0.1:7299/test/
|test case | qps | 平均耗时(Time per request)| 总耗时(Time taken for tests)|
|单个请求 | 544 | 1.83ms | 1.83s |
|100个并发 | 4317 | 23.16ms | 0.23s |
http_load -parallel 1 -fetches 1000 urllist
|test case | fetches/sec | 平均耗时(msecs/first-response)| 总耗时|
|单个请求 | 483.187 | 1.8ms | 2.0s |
|100个并发 | 4287 | 20.5ms | 0.23s |
发表评论
-
定位IO瓶颈的一些方法
2014-08-25 15:44 787IO瓶颈往往是我们可能会忽略的地方(我们常会看top、free ... -
编写内存效率的java代码-面向GC
2014-07-20 12:38 2194参考两个PPT http://www.sl ... -
找到最耗CPU的java线程
2014-04-18 17:25 1813找到最耗CPU的java线程ps命令 命令:ps -mp ... -
故障排除的第一个五分钟
2014-04-15 14:05 1332原文:http://junqili.com/linux/tr ... -
Linux 性能监测总结
2014-04-14 15:22 835Linux 性能监测:介绍Linux 性能监测:MemoryL ... -
java socket远程读取文件性能测试
2014-03-22 00:47 1537为了比较beansdb,写了一个基于socket的java ... -
磁盘性能分析利器-iotop
2014-03-14 10:40 878有时候cpu的iowait很大,但找到瓶颈在哪里,通过iot ... -
Solr性能优化之filterCache
2014-02-27 10:48 950原文:Solr性能优化之filterCache 什么是f ... -
优化Linux下的内核TCP参数来提高服务器负载能力
2014-02-21 14:52 763原文:http://blog.renhao.org/201 ... -
如何提升lucene的索引速度
2014-02-07 21:16 924原文: http://wiki.apache.org/lu ... -
提升磁盘IO性能的几个技巧
2014-02-06 11:29 4486原文:http://www.searc ... -
hbase 写入性能
2014-02-05 16:35 1865hbase单表的平均写入QPS大概在5000-7000 ... -
Exception性能问题
2014-01-24 22:25 13071.从Exception往上介绍相关结构、代码 ... -
java 性能监控
2014-01-15 13:34 931参考:https://github.com/oldratl ... -
hbase scan性能
2013-12-26 18:41 0今天把hbase一个表的数据导到另外一个表,源表大概300 ... -
几种file copy的性能对比
2013-12-16 10:45 1676测试了几种file copy的性能: package m ... -
Linux 性能测试与分析
2013-11-11 16:31 2058本文参考:http://testing. ... -
python,jython 服务器load对比
2013-05-16 23:50 615详细情况见附件 -
并行加载性能对比
2013-01-30 12:14 972今天遇到一个场景,一个很大Bean对象需要执行8条sql来组 ... -
mongoDB的$in性能
2013-01-20 14:41 1651今天发现mongoDB的$in性能不怎么样,24条ID和1条 ...
相关推荐
gunicorn能够并发地运行多个Python进程,以提高应用的处理能力。在机器学习场景中,这很重要,因为模型预测可能会消耗大量资源。gunicorn允许我们将Flask应用作为一个工作进程管理,提供负载均衡和容错能力。 然后...
`locust`或`Apache JMeter`(虽然JMeter不是Python库,但有Python接口)这样的工具进行大规模并发测试。 在压力测试中,主要关注以下几个核心概念: 1. **并发用户数**:模拟多个用户同时访问服务器,测试在高并发...
Python的`gunicorn`和`uWSGI`等服务器可以提高应用的并发处理能力,`caching`策略可以减少不必要的数据库查询,从而提升接口响应速度。 综上所述,Python在Web接口开发与测试中扮演着重要角色。从框架选择、API设计...
在开发中直接测试运行是没有问题的,但是用gunicorn部署以后发生了重复运行的问题: 每个任务在时间到的时刻会同时执行好几遍。 注意了一下重复的数量,恰恰是gunicorn里配置的worker进程数量,显然是每个worker进程...
2. **Gevent 兼容性**:由于 Websocket 长连接的特点,使用 Gevent 可以有效地处理多个并发连接,避免了线程或进程间切换的开销,提高了系统性能。 3. **Gunicorn 集成**:通过适配 Gunicorn 的工作模型,nti....
7. **部署与运维**:Python应用通常部署在WSGI服务器上,如uWSGI、Gunicorn,再通过Nginx进行反向代理和负载均衡。Docker容器化技术也可以用于简化部署流程。 8. **持续集成/持续部署(CI/CD)**:利用Jenkins、...
5. **使用Gunicorn或uWSGI作为WSGI服务器**:提高请求处理能力,与Django内置的开发服务器相比,这些服务器能更好地应对高并发场景。 **总结** "django-performance-testing"项目为Django开发者提供了一个强大的...
1. **基准测试工具**:像`the-benchmarker-web-frameworks-281a0db`这样的项目,使用了标准的基准测试工具,如`ab`(ApacheBench)、`wrk`或`hey`,这些工具模拟大量并发请求,测量服务器响应时间和吞吐量。...
在本项目"django_and_postgresl"中,我们将...通过Docker,我们可以轻松地在本地开发、测试,然后无缝地将应用部署到生产环境,确保一致性。这种结构还便于团队协作,因为每个人都可以在相同的环境中运行和调试代码。
在处理并发和性能方面,Python的Gunicorn或uWSGI服务器可以部署多个工作进程,提高服务的并发处理能力。同时,可能通过缓存技术(如Redis)来减轻数据库压力,提升响应速度,特别是在大量用户同时领取或使用优惠券时...
8. **测试与优化**:单元测试、压力测试(如Locust或JMeter)是必不可少的,确保系统在高并发环境下仍能稳定运行。性能调优,包括数据库查询优化、代码优化,也是提升系统效率的关键。 9. **前端界面**:项目可能...
综上所述,Python点餐后台项目涵盖了Python Web开发的多个核心领域,包括Web框架的使用、数据库操作、API设计、用户认证、并发处理以及测试等。通过对这个项目的深入研究,开发者可以全面提升自己的Python Web开发...
7. **并发与性能**:随着用户数量增加,系统需要处理并发请求。Python的Gunicorn或uWSGI可以作为WSGI服务器,提高系统性能。还可以使用线程、进程或异步IO来优化处理速度。 8. **错误处理与日志记录**:为了保证...
8. **部署与运维**:最后,将游戏后端部署到服务器,可以选择使用`gunicorn`或`uWSGI`作为应用服务器,搭配`Nginx`作为反向代理和负载均衡。监控和日志管理也是运维的重要部分,可以使用`logging`库和第三方工具如`...
6. **测试与调试**:为了保证stone_api的质量和稳定性,开发者可能会使用单元测试、集成测试和端到端测试工具,如pytest或unittest,对API的功能进行验证。同时,日志记录和错误处理也是不可或缺的部分,以追踪和...
综上所述,基于Python实现的学生选课系统涉及到了Web开发的多个方面,包括后端编程、数据库设计、前端界面构建、用户认证、并发处理、测试以及部署运维。通过学习和实践这样的项目,开发者可以全面掌握Web应用开发...
如果需要更高的并发性能和负载均衡,可以考虑使用Gunicorn或者Kubernetes等工具进行部署和扩展。 总的来说,Golang写的推技术聊天室是一个很好的实践项目,可以帮助开发者深入理解Golang的并发特性、WebSocket通信...
Python的gunicorn和uWSGI服务器可以处理大量并发请求,而Redis或Memcached可以作为高速缓存,减轻数据库压力。 最后,持续集成/持续部署(CI/CD)是现代化开发流程的重要组成部分。我们可以利用Jenkins、Travis CI...
在测试环境中,Gunicorn可以模拟生产环境,帮助我们检查应用程序在高并发情况下的表现,评估其性能和稳定性。 MongoDB是一个流行的NoSQL数据库,它的灵活性和高性能使其在大数据处理和非结构化数据存储中得到广泛...