php向队列服务里插入一条insert sql例如
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)
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 2881064151
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://localhost/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
php向队列服务里插入一条insert sql例如的更多相关文章
- mybatis笔记之一次插入多条数据sql语句写法
<insert id="insertList" parameterType="java.util.List"> insert into balanc ...
- mybatis用mysql数据库自增主键,插入一条记录返回新增记录的自增主键ID
今天在敲代码的时候遇到一个问题,就是往数据库里插入一条记录后需要返回这个新增记录的ID(自增主键), 公司框架用的是mybatis的通用Mapper接口,里面的插入方法貌似是不能把新纪录的ID回填到对 ...
- 跟我一起学WCF(11)——WCF中队列服务详解
一.引言 在前面的WCF服务中,它都要求服务与客户端两端都必须启动并且运行,从而实现彼此间的交互.然而,还有相当多的情况希望一个面向服务的应用中拥有离线交互的能力.WCF通过服务队列的方法来支持客户端 ...
- 【阿里云产品公测】消息队列服务MQS java SDK 机器人应用初体验
[阿里云产品公测]消息队列服务MQS java SDK 机器人应用初体验 作者:阿里云用户啊里新人 初体验 之 测评环境 由于MQS支持外网访问,因此我在本地做了一些简单测试(可能有些业余),之后 ...
- 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
[文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...
- WCF中队列服务详解
WCF中队列服务详解 一.引言 在前面的WCF服务中,它都要求服务与客户端两端都必须启动并且运行,从而实现彼此间的交互.然而,还有相当多的情况希望一个面向服务的应用中拥有离线交互的能力.WCF通过服务 ...
- 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]
HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...
- NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例
一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更复杂,可能包含嵌入对象.消息被发送到队列中,“消息队列”是在消息的传输过程中保存消息的容器 ...
- Redis作为消息队列服务场景应用案例
NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例 一.消息队列场景简介 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...
随机推荐
- Linux系统排查1——内存篇
常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境.本系列一共四篇博文,结合我在实习期间的学习,介绍一些常见的Linux系统排障工具及方法. 第1篇——内 ...
- Java for LeetCode 035 Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the ...
- 各大OJ
北大POJ 杭电HDU 浙大ZOj 蓝桥杯 PAT
- hibernate的sqlQuery自动封装
1.Query query = session.createSQLQuery("SQL").addEntity(Tree.class); //返回对象 List list = ...
- android 搭建环境工具
---恢复内容开始--- 一.下载jdk 1.JDK可以去sun的官方网站下载Java SE Development Kit 6 http://java.sun.com/javase/downloa ...
- LightOJ 1079 Just another Robbery 概率背包
Description As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (h ...
- 2016"百度之星" - 初赛(Astar Round2A) 1004 D Game 区间DP
D Game Problem Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它发明了一个游戏:D游戏. 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只 ...
- Android Studio 导入外部lib文件
Android Studio 导入外部lib文件 1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as li ...
- Android 编程下判断当前设备是手机还是平板
/** * 判断当前设备是手机还是平板,代码来自 Google I/O App for Android * @param context * @return 平板返回 True,手机返回 False ...
- Redis Set 命令
1.Set set是string类型的无序集合,其参考来源应该属于STL中的Set. •set元素最大可以包含(2的32次方-1)个元素. •set的是通过hash table实现的,ha ...