设为首页 收藏本站
查看: 1590|回复: 0

[经验分享] 纯python实现的web: tornado性能测试

[复制链接]

尚未签到

发表于 2015-4-21 13:21:45 | 显示全部楼层 |阅读模式
测试环境:
  服务器配置: 4 x Intel(R) Xeon(R) CPU E5405  @ 2.00GHz, 4G内存, 操作系统: CentOS 5.3 x86_64
  nginx前端 + 4 tornado(0.2) web process
  tornado: http://www.tornadoweb.org (已被墙)
测试场景:

  http get请求,服务器端直接返回"hello world"
代码及nginx配置:
  main.py:
  

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""web main"""
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.web import RequestHandler, Application, authenticated
#from rockps.auth import AuthHandler

class MainHandler(RequestHandler):
    def get(self):
        self.write("hello world")
        
settings = {
}
application = Application([
    (r"/", MainHandler),
], **settings)

if __name__ == "__main__":
    http_server = HTTPServer(application)
    http_server.listen(8081)
    IOLoop.instance().start()
  
  nginx.conf:
  

user root;
worker_processes 1;
error_log /var/nginx_error.log;
pid /var/run/nginx.pid;
events {
    worker_connections 51200;
    use epoll;
}
http {
    # Enumerate all the Tornado servers here
    upstream frontends {
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
        server 127.0.0.1:8083;
        server 127.0.0.1:8084;
    }
    #include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log /var/log/nginx/access22.log;
    keepalive_timeout 65;
    proxy_read_timeout 200;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1000;
    gzip_proxied any;              
    gzip_types text/plain text/html text/css text/xml
               application/x-javascript application/xml
               application/atom+xml text/javascript;
    # Only retry if there was a communication error, not a timeout
    # on the Tornado server (to avoid propagating "queries of death"
    # to all frontends)
    proxy_next_upstream error;
    server {
        listen 8085;
        # Allow file uploads
        client_max_body_size 50M;
        location ^~ /static/ {
            root /var/www;
            if ($query_string) {
                expires max;
            }
        }
        location = /favicon.ico {
            rewrite (.*) /static/favicon.ico;
        }
        location = /robots.txt {
            rewrite (.*) /static/robots.txt;
        }
        location / {
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://frontends;
        }
    }
}
  
测试结果:
DSC0000.png
  
点击率可以超过7000,但后面再加用户开始往下掉,请求开始出错,最合适的时候大概3500个用户
持续运行后,连接数稳在1万。
  
结论,2个字:
  
  牛X

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-59275-1-1.html 上篇帖子: Python学习资源汇总 下篇帖子: Python中的字符串处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表