`
prettyzhou
  • 浏览: 34546 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Gearman框架的压力测试

阅读更多

 

1.模拟简单的压力测试环境:

Client10s提交一个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 PHP Extension

    Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于...

    Gearman中文手册,Gearman中文详解,gearman手册chm

    Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。

    gearman 文档

    - **异步处理**:例如评论发布或用户状态更新等操作,可以通过Gearman异步地进行处理,以减轻主服务器的压力。 - **批量任务**:如定期备份数据、清理过期文件等任务,也可以通过Gearman进行高效地批量处理。 - *...

    Gearman环境搭建资料

    总之,Gearman提供了一种灵活的框架,用于在分布式环境中处理任务,通过合理配置和使用,能够有效地提高系统的并发处理能力和响应速度。搭建和维护Gearman环境需要对Linux系统、网络编程以及相关库有一定的理解,但...

    Gearman C# API和示例

    总结一下,这个"Gearman C# API和示例"项目提供了一个C#开发者与Gearman服务交互的基础框架,涵盖了客户端和工作者的实现。通过学习和使用这个项目,你可以更好地理解和利用Gearman在分布式系统中的优势,提升你的...

    GearMAN讲解及所带来的变革

    GearMAN是一个高效的分布式任务框架,最初设计用于解决Web2.0环境中图片处理等耗时任务的快速分配和执行问题。它的名字来源于“Generic Worker Manager”,意在成为一个通用的任务分发工具。GearMAN通过将任务分配给...

    Laravel开发-php-gearman

    Gearman 是一个跨语言的、通用的任务调度框架,它可以将任务分发到多台服务器上,使得大规模应用可以有效地利用系统资源。 ### Gearman 的核心概念 1. **Worker**:工作进程,负责接收并执行 Gearman 服务器分发的...

    Laravel开发-laravel-gearman-rpc

    这个库提供了一个Laravel服务提供者和服务容器绑定,使得在Laravel框架内使用Gearman变得更加方便。 ** 安装与配置 ** 首先,你需要通过Composer安装`mhlavc/gearman`库: ```bash composer require mhlavc/...

    gearman下载gearman下载

    Gearman是一款开源的分布式任务队列系统,它允许应用程序在多台机器上分发工作负载,从而实现异步处理和负载均衡。这个系统的重点在于解耦任务的发起者和执行者,使得系统能够灵活地扩展并提高处理能力。在本讨论中...

    Gearman java APIs和一个小Demo

    Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作负载,并在有可用资源时异步处理这些工作。在Java中,我们可以利用 Gearman 的客户端库来与 Gearman 服务器进行交互,执行分布式任务。本篇文章将...

    Gearman中文手册最新完整版chm

    Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。

    Gearman Worker实例 C++ vs2008

    在实际开发中,为了调试和测试,你可能需要创建一个简单的客户端来提交任务,以便观察worker是否能正确接收和处理。你可以使用`gearman_client_do()`或`gearman_client_do_background()`函数来提交任务,前者是同步...

    php使用gearman进行任务分发操作实例详解

    1. Gearman的介绍和应用场景: Gearman是一个工作负载分发服务器和库,允许将工作分散到多个机器或者机器上的多个核心上进行异步处理。它在Web应用程序中处理耗时的后台任务时尤其有用,如文件上传、邮件发送、图片...

    java-gearman-service(gearman-java-service)

    java实现gearman的job实现的jar包,包括gearman server,client和work客户端API

    java-gearman-service-0.6.6.zip

    java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...

    gearman-mysql-udf-0.6.tar.gz

    Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作并异步处理结果。这个名为 "gearman-mysql-udf-0.6.tar.gz" 的压缩包包含了一个 Gearman 与 MySQL 结合使用的用户定义函数(UDF)插件,版本为 ...

    Gearman安装可能涉及到的安装包

    该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent

    gearman-1.1.2

    1)软件资源列表:《gearmand-1.1.12.tar.gz》,《gearman-1.1.2.tgz》。 2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:...

    java-gearman-service jar

    gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。

    gearman安装包 rpm

    安装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...

Global site tag (gtag.js) - Google Analytics