`
zhouwei064
  • 浏览: 27258 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Gearman-java,请求和响应要花费这么多时间?(一)

阅读更多

测试环境:gearman-java-0.5.jar  MyEclipse 8.5 (具体测试工程附后similar

问题描述:在gearman-java-0.5.jar中,通过org.gearman.client.GearmanClient对象submit方法提交GearmanJob,随后通过GearmanJob对象get方法获取处理结果。在测试环境中,平均每次请求响应时间约为270+ms,响应时间过长。请问现在通过何种方法能够减小每次缩短响应时间? 

 

============================================================     

1.未删除"Thread.sleep(200);",采用非批处理

============================================================

/*测试核心代码*/

long start = System.currentTimeMillis();

for (int i = 0; i < 1000; i++   ) {

       GearmanJob gearmanJob = GearmanJobImpl.createJob("finalfinger", fingerInput.toByteArray(), null);

        gearmanFactory.getInstance().submit(gearmanJob);

        GearmanJobResult res = gearmanJob.get();

}

long time = System.currentTimeMillis() -start;

System.out.println("TIME: "+time/1000);

 

/*原始测试结果*/

[2012-12-20 14:23:28,019] [main] INFO  [AbstractApplicationContext.java] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@94884d: startup date [Thu Dec 20 14:23:28 CST 2012]; root of context hierarchy

[2012-12-20 14:23:28,059] [main] INFO  [XmlBeanDefinitionReader.java] - Loading XML bean definitions from class path resource [applicationContext.xml]

[2012-12-20 14:23:28,339] [main] INFO  [PropertiesLoaderSupport.java] - Loading properties file from class path resource [jdbc.properties]

[2012-12-20 14:23:28,379] [main] INFO  [DefaultListableBeanFactory.java] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a45536: defining beans [pictureFeatureServiceImpl,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sqlSessionFactory,resourceMapper,threadPool,writeTask,readTask,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy

[2012-12-20 14:23:35,950] [main] INFO  [ExecutorConfigurationSupport.java] - Initializing ExecutorService  'threadPool'

AVERAGE TIME: 277

extractFinger:277999

============================================================

2.未删除"Thread.sleep(200);",采用批处理

============================================================

/*测试核心代码*/

ArrayList<GearmanJob> jobs = new ArrayList<GearmanJob>();

long start = System.currentTimeMillis();

for (int i = 0; i < 1000; i++  ) {

       GearmanJob gearmanJob = GearmanJobImpl.createJob("finalfinger", fingerInput.toByteArray(), null);

       gearmanFactory.getInstance().submit(gearmanJob);                        

       jobs.add(gearmanJob);

}

for (GearmanJob currentJob : jobs) {

       GearmanJobResult res = currentJob.get();

}

long time = System.currentTimeMillis() - start;

System.out.println("AVERAGE TIME: " +  time / 1000);

/*原始测试结果*/

[2012-12-20 14:19:42,119] [main] INFO  [AbstractApplicationContext.java] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@2a6f16: startup date [Thu Dec 20 14:19:42 CST 2012]; root of context hierarchy

[2012-12-20 14:19:42,179] [main] INFO  [XmlBeanDefinitionReader.java] - Loading XML bean definitions from class path resource [applicationContext.xml]

[2012-12-20 14:19:42,468] [main] INFO  [PropertiesLoaderSupport.java] - Loading properties file from class path resource [jdbc.properties]

[2012-12-20 14:19:42,515] [main] INFO  [DefaultListableBeanFactory.java] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@186f247: defining beans [pictureFeatureServiceImpl,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sqlSessionFactory,resourceMapper,threadPool,writeTask,readTask,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy

[2012-12-20 14:19:48,575] [main] INFO  [ExecutorConfigurationSupport.java] - Initializing ExecutorService  'threadPool'

AVERAGE TIME: 78

extractFinger:78862

 

============================================================     

3.删除"Thread.sleep(200);",采用非批处理(重新编译后的jar另附)

============================================================     

/*测试核心代码*/

long start = System.currentTimeMillis();

for (int i = 0; i < 1000; i++   ) {

       GearmanJob gearmanJob = GearmanJobImpl.createJob("finalfinger", fingerInput.toByteArray(), null);

        gearmanFactory.getInstance().submit(gearmanJob);

        GearmanJobResult res = gearmanJob.get();

}

long time = System.currentTimeMillis() -start;

System.out.println("TIME: "+time/1000);

 

/*原始测试结果*/

[2012-12-20 18:55:19,759] [main] INFO  [AbstractApplicationContext.java] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@94884d: startup date [Thu Dec 20 18:55:19 CST 2012]; root of context hierarchy

[2012-12-20 18:55:19,806] [main] INFO  [XmlBeanDefinitionReader.java] - Loading XML bean definitions from class path resource [applicationContext.xml]

[2012-12-20 18:55:20,102] [main] INFO  [PropertiesLoaderSupport.java] - Loading properties file from class path resource [jdbc.properties]

[2012-12-20 18:55:20,149] [main] INFO  [DefaultListableBeanFactory.java] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@186f247: defining beans [pictureFeatureServiceImpl,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sqlSessionFactory,resourceMapper,threadPool,writeTask,readTask,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy

[2012-12-20 18:55:26,157] [main] INFO  [ExecutorConfigurationSupport.java] - Initializing ExecutorService  'threadPool'

AVERAGE TIME: 98

extractFinger:98287     98287/1=98287

============================================================     

4.删除"Thread.sleep(200);",采用批处理(重新编译后的jar另附)

============================================================

/*测试核心代码*/

ArrayList<GearmanJob> jobs = new ArrayList<GearmanJob>();

long start = System.currentTimeMillis();

for (int i = 0; i < 1000; i++  ) {

       GearmanJob gearmanJob = GearmanJobImpl.createJob("finalfinger", fingerInput.toByteArray(), null);

       gearmanFactory.getInstance().submit(gearmanJob);                        

       jobs.add(gearmanJob);

}

for (GearmanJob currentJob : jobs) {

       GearmanJobResult res = currentJob.get();

}

long time = System.currentTimeMillis() - start;

System.out.println("AVERAGE TIME: " +  time / 1000);

 

/*原始测试结果*/

[2012-12-20 19:04:56,729] [main] INFO  [AbstractApplicationContext.java] - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1e3118a: startup date [Thu Dec 20 19:04:56 CST 2012]; root of context hierarchy

[2012-12-20 19:04:56,789] [main] INFO  [XmlBeanDefinitionReader.java] - Loading XML bean definitions from class path resource [applicationContext.xml]

[2012-12-20 19:04:57,159] [main] INFO  [PropertiesLoaderSupport.java] - Loading properties file from class path resource [jdbc.properties]

[2012-12-20 19:04:57,209] [main] INFO  [DefaultListableBeanFactory.java] - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@a45536: defining beans [pictureFeatureServiceImpl,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalAsyncAnnotationProcessor,org.springframework.context.annotation.internalScheduledAnnotationProcessor,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,dataSource,sqlSessionFactory,resourceMapper,threadPool,writeTask,readTask,org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0]; root of factory hierarchy

[2012-12-20 19:05:03,421] [main] INFO  [ExecutorConfigurationSupport.java] - Initializing ExecutorService  'threadPool'

AVERAGE TIME: 56

extractFinger:56122     56122/1=56122

 

NOTE

1.submitget之间存在隐性的初始化过程,如下逻辑,初始化过程会重复1000次;如果采用。     

For ...;i=1000;{

       Submit();

       Get();

}

2.采用第二种方式——批处理,只会初始化一次,避免多次初始化过程。

3.采用第三种方式,节省了多次调用sleep时间。

4.与作者沟通后,他给出代码中加入sleep理由是:采用了一种黑客手段,防止恶意的请求攻击导致服务器负载过重而崩溃。

分享到:
评论

相关推荐

    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是不大相同的,本...

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

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

    gearman-java.zip_BadMagicException_Gearman java

    `org`目录可能包含了`gearman-java`库的源代码包结构,其中的类文件对应于Gearman-Java的各个组件和接口。 为了深入理解并解决"BadMagicException"问题,你需要检查以下几个方面: 1. **类文件的完整性**:确认所有...

    java-gearman-service jar

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

    gearman-mysql-udf-0.6.tar.gz

    这个 "gearman-mysql-udf-0.6" 压缩包是将 Gearman 强大的分布式处理能力引入到 MySQL 数据库的一个实例,通过这种方式,开发者可以构建更加灵活和高效的数据库应用。理解并熟练使用 Gearman 和 MySQL UDF,能帮助...

    java-gearman-service-0.6.6.jar

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

    java-gearman-service-0.6.6.jar gearman java调度工具包

    在项目中使用这个压缩包,你需要包含`java-gearman-service依赖包`中的所有文件,确保运行时库能够正常加载和运行。这可能包括JAR文件和其他必要的资源文件。确保你的构建系统(如Maven或Gradle)正确地配置了依赖...

    gearman-1.0.2.tgz

    总之,`gearman-1.0.2.tgz` 是 Gearman 分布式任务队列系统的一个版本,提供了在多台机器上异步处理任务的能力,通过其源代码,开发者可以深入了解其工作原理,定制和优化任务调度策略,以满足特定的业务需求。

    Gearman java APIs和一个小Demo

    Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作负载,并在有可用资源时异步处理这些...在实际项目中, Gearman 可以作为解耦组件,使得各个服务之间能独立扩展,提升整体系统的稳定性和响应速度。

    gearman下载gearman下载

    `java-gearman-service-0.2.jar` 文件可能是一个特定的Java服务实现,可能包含用于启动和管理Gearman服务的类。这可能是将Gearman集成到Java应用程序中的一个方便工具,使得服务器端的部署和管理更加简单。 `...

    gearman-java-0.6.jar

    实测可用

    gearman-java-0.5.jar

    实测可用

    gearman-java-0.5-sources.jar

    实测可用

    gearman-java-0.6-sources.jar

    实测可用

    net_gearman-master.zip

    在PHP的世界里,Gearman是一个强大的分布式任务处理框架,它允许开发者将任务分发到多台服务器上执行,从而实现负载均衡和异步处理。本文将深入探讨net_gearman-master.zip,这是一个专为PHP设计的Gearman客户端插件...

    gearman-0.5.0.tgz(在使用)

    这种模式使得应用程序能够将耗时的操作异步化,提高系统的整体性能和响应速度。 在您提到的“gearman-0.5.0.tgz”文件中,我们可以推断这包含了 Gearman 0.5.0 版本的源代码和相关构建文件。`.tgz` 是一种常见的...

    Laravel开发-laravel-gearman-rpc

    通过集成 Laravel 和 Gearman,你可以创建一个强大的异步任务处理系统,提高应用程序的响应速度和并发处理能力。理解 Gearman 的工作原理和如何在 Laravel 中使用它,对于构建高可用性和可扩展性的 Web 应用至关重要...

    gearman-0.8.0.tgz

    齿轮人提供了一系列的命令行工具,如`gearmand`(服务器)和`gearman-client`(客户端),这些工具可以帮助开发者测试和调试任务处理流程。 7. **监控与管理**: 对于生产环境,监控齿轮人的运行状态非常重要。...

    Python库 | gearman-1.3.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:gearman-1.3.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    gearman-1.1.2

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

Global site tag (gtag.js) - Google Analytics