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

[经验分享] 发布一个python服务框架iserver(带压力测试数据)

[复制链接]

尚未签到

发表于 2015-4-23 09:55:26 | 显示全部楼层 |阅读模式
Iserver简介
  Iserver是一个用python编写的网络服务框架(编译版本3.4.1),使用的是epool网络模型

测试机配置
  处理器 2x Genuine Intel(R) CPU T2050 @ 1.60GHz
  内存 2060MB (673MB used)

nginx开启进程数
  root 2413 2409 0 09:17 pts/0 00:00:00 grep -i nginx
  www 2414 2411 2 09:17 ? 00:00:00 nginx: worker process
  www 2415 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2416 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2417 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2418 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2419 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2420 2411 0 09:17 ? 00:00:00 nginx: master process
  www 2421 2411 0 09:17 ? 00:00:00 nginx: master process
  开启8个nginx进程消耗120M内存(15M * 8 = 120M)

php-cgi 开启进程数
  root 2424 1 0 09:17 ? 00:00:00 php-fpm: master process
  www 2425 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2426 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2427 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2428 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2429 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2430 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2431 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2432 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2433 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2434 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  www 2435 2424 0 09:17 ? 00:00:00 php-fpm: pool www
  开启12个php-cgi进程消耗掉240M内存(20M * 12 = 240M)

测试流程
  首先启动队列网络服务,php向队列服务里插入一条insert sql,例如

client.php



1 /**
2  * socket client
3  * a NULL填充字符串
4  * n 表式无符号短整形
5  * 无符号短整型, 总是16点,大端字节序
6  */
7 function insert_queue($cmd, $sql) {
8     $s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
9     try {
10       socket_connect($s, "127.0.0.1", 8888);
11       $list = json_encode(array(
12         "sql"=>$sql
13       ));
14       $len = strlen($list);
15       $param = pack("nna{$len}",$cmd, $len, $list);
16       socket_write($s, $param, strlen($param));
17       socket_recv($s, $head, 4, 0);
18       //var_dump($head);
19       if($head != '') {
20         $a = unpack("ncmd/nlen", $head);
21         $cmd = $a['cmd'];
22         $len = $a['len'];
23         if($cmd == 8001) {
24           socket_recv($s, $body, $len, 0);
25           //echo $body;exit;
26           $b = json_decode($body, true);
27           socket_close($s);
28           return $b;
29         }
30       }
31       socket_close($s);
32     } catch(Exception $e) {
33       echo $e->getMessage();
34     }
35 }
36 $temp = insert_queue(8001, "insert into (num) values (%d)");
CircularQueue.py



1 # !/usr/bin/python
2 # coding=utf-8
3 #
4 # @Author: LiXiaoYu
5 # @Time: 2013-11-06
6 # @Info: CircularQueue Server.
7
8 import Epoll
9 from Config import Config
10 from App.Queue.CircularQueue import CircularQueue
11
12 #获取队列服务配置
13 _config = Config("Queue")
14
15 #初始参数
16 _port = _config.get("queue.port") #服务端口
17 _app = CircularQueue()
18 #_allow_ip = ['192.168.1.100'] #白名单IP列表
19
20 #开始服务
21 s = Epoll.createServer(_app)
22 #s.setAllowIp(_allow_ip)
23 s.listen(_port)
24
25 启动服务
26 python3 circularQueue.py
测试工具
  使用webbench模拟1万并发
  webbench -c 10000 -t 30 http://192.168.1.100/client.php

测试结果
  lxy@lenovo-pc:~$ webbench -c 10000 -t 30 http://192.168.1.100/client.php
  Webbench - Simple Web Benchmark 1.5
  Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
  Benchmarking: GET http://192.168.1.100/client.php
  10000 clients, running 30 sec.
  Speed=43226 pages/min, 129975 bytes/sec.
  Requests: 21613 susceed, 0 failed.
  每分钟相应请求数43226 pages/min,每秒钟传输数据量129975 bytes/sec
  相当于每天可以处理(43226 * 60 * 24 = 62245440)个请求
  
  这是小弟完成的第一个服务框架,写的不是很好,请大家多提意见,多批评
  源码下载:iserver_1.0.zip

运维网声明 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-59918-1-1.html 上篇帖子: Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持 下篇帖子: python中调用c++(Boost-python)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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