1.模拟简单的压力测试环境:
Client端10s提交一个job
Worker端处理一个job需要30s的时间
Client端一直提交job,当大量job堆积时对Gearman进行压力测试
2.Gearman-Java压力测试demo
client端代码:
import java.util.Date;
import org.gearman.Gearman;
import org.gearman.GearmanClient;
import org.gearman.GearmanServer;
public class ReverseClient {
public static void main(String[] args) throws InterruptedException {
// 创建一个Gearman实例
Gearman gearman = Gearman.createGearman();
// 创建一个Gearman client
GearmanClient client = gearman.createGearmanClient();
/*
* 创建一个jobserver
*
* Parameter 1: job server的IP地址 Parameter 2: job server监听的端口
*
* job server收到client的job,并将其分发给注册worker *
*/
GearmanServer server = gearman.createGearmanServer(
ReverseWorker.ECHO_HOST, ReverseWorker.ECHO_PORT);
// 告诉客户端,提交工作时它可以连接到该服务器
client.addServer(server);
/*
* 向job server提交工作
*
* Parameter 1: gearman function名字 Parameter 2: 传送给job server和worker的数据
*
* GearmanJobReturn返回job发热结果
*/
// 压力测试,客户端10s提交一个job
int count = 1;
while (true) {
System.out.println(new Date() + ":第" + count + "个任务正在提交...");
client.submitJob(
ReverseWorker.ECHO_FUNCTION_NAME,
("第" + count + "个任务").getBytes());
count ++ ;
try {
Thread.sleep(10000);
} catch (Exception e) {
e.printStackTrace();
}
}
// 关闭
// gearman.shutdown();
}
}
worker端代码:
package test; import java.util.Date; import org.gearman.Gearman; import org.gearman.GearmanFunction; import org.gearman.GearmanFunctionCallback; import org.gearman.GearmanServer; import org.gearman.GearmanWorker; public class ReverseWorker implements GearmanFunction { // function name public static final String ECHO_FUNCTION_NAME = "reverse"; // job server地址 public static final String ECHO_HOST = "192.168.125.131"; // job server监听的端口 public static final int ECHO_PORT = 4730; public static void main(String[] args) { // 创建一个Gearman实例 Gearman gearman = Gearman.createGearman(); /* * 创建一个jobserver * * Parameter 1: job server的IP地址 Parameter 2: job server监听的端口 * * job server收到client的job,并将其分发给注册worker * */ GearmanServer server = gearman.createGearmanServer( ReverseWorker.ECHO_HOST, ReverseWorker.ECHO_PORT); // 创建一个Gearman的worker GearmanWorker worker = gearman.createGearmanWorker(); // 告诉工人如何执行工作(主要实现了GearmanFunction接口) worker.addFunction(ReverseWorker.ECHO_FUNCTION_NAME, new ReverseWorker()); // worker连接服务器 worker.addServer(server); } @Override public byte[] work(String function, byte[] data, GearmanFunctionCallback callback) throws Exception { // work方法实现了GearmanFunction接口中的work方法,worker端30s处理一个方法 if (data != null) { String str = new String(data); try { Thread.sleep(30000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(new Date() + ":" +str + "处理完成"); return (str + "处理完成").getBytes(); } else { return "未接收到data".getBytes(); } } }
相关推荐
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于...
gearman下载gearman下载gearman下载gearman下载gearman下载
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
gearman 文档,gearman 是个集群计算框架,通过对其扩展能够充分利用集群计算
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
GearMAN讲解及所带来的变革 全面介绍Gearman原理、应用
Gearman环境搭建可能会用到的资料. gearmand-1.1.12.tar.gz libevent-2.0.22-stable.tar.gz libuuid-1.0.3.tar.gz
Laravel开发-php-gearman Gearman作业服务器工人助手
Gearman 的C#开发API和一个简单自带demo,vs2008.
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API
Laravel开发-laravel-gearman-rpc Laravel/Lumen Gearman RPC。基于https://github.com/mhlavc/gearman
java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...
该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent
Gearman java API和一个小Demo
1)软件资源列表:《gearmand-1.1.12.tar.gz》,《gearman-1.1.2.tgz》。 2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:...
gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。
安装gearman 如果没有mysql客户端,需要安装mysql客户端 yum install -y libevent-devel 上传gearman.zip,解压unzip gearman.zip rpm -ivh uuid-1.5.1-3.el5.x86_64.rpm rpm -ivh libgearman-1.1.8-2.el5.x86_64...
Gearman 的 MySQL 插件
Gearman的一个worker实例,用c++编写,windows平台下,vs2008
GearmanManager, 用于管理gearman员工的PHP守护进程 PHP的 PHP需求PHP 5.5.9 ( 使用这里版本测试)POSIX扩展过程控制扩展pecl/gearman或者 Net_Gearman为什么使用 GearmanManager运行Gearman工作者可能是一个乏味的任