测试环境: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.在submit和get之间存在隐性的初始化过程,如下逻辑,初始化过程会重复1000次;如果采用。
For (...;i=1000;){
Submit();
Get();
}
2.采用第二种方式——批处理,只会初始化一次,避免多次初始化过程。
3.采用第三种方式,节省了多次调用sleep时间。
4.与作者沟通后,他给出代码中加入sleep理由是:采用了一种黑客手段,防止恶意的请求攻击导致服务器负载过重而崩溃。
相关推荐
java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API
`org`目录可能包含了`gearman-java`库的源代码包结构,其中的类文件对应于Gearman-Java的各个组件和接口。 为了深入理解并解决"BadMagicException"问题,你需要检查以下几个方面: 1. **类文件的完整性**:确认所有...
gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。
这个 "gearman-mysql-udf-0.6" 压缩包是将 Gearman 强大的分布式处理能力引入到 MySQL 数据库的一个实例,通过这种方式,开发者可以构建更加灵活和高效的数据库应用。理解并熟练使用 Gearman 和 MySQL UDF,能帮助...
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API
在项目中使用这个压缩包,你需要包含`java-gearman-service依赖包`中的所有文件,确保运行时库能够正常加载和运行。这可能包括JAR文件和其他必要的资源文件。确保你的构建系统(如Maven或Gradle)正确地配置了依赖...
总之,`gearman-1.0.2.tgz` 是 Gearman 分布式任务队列系统的一个版本,提供了在多台机器上异步处理任务的能力,通过其源代码,开发者可以深入了解其工作原理,定制和优化任务调度策略,以满足特定的业务需求。
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作负载,并在有可用资源时异步处理这些...在实际项目中, Gearman 可以作为解耦组件,使得各个服务之间能独立扩展,提升整体系统的稳定性和响应速度。
`java-gearman-service-0.2.jar` 文件可能是一个特定的Java服务实现,可能包含用于启动和管理Gearman服务的类。这可能是将Gearman集成到Java应用程序中的一个方便工具,使得服务器端的部署和管理更加简单。 `...
实测可用
实测可用
实测可用
实测可用
在PHP的世界里,Gearman是一个强大的分布式任务处理框架,它允许开发者将任务分发到多台服务器上执行,从而实现负载均衡和异步处理。本文将深入探讨net_gearman-master.zip,这是一个专为PHP设计的Gearman客户端插件...
这种模式使得应用程序能够将耗时的操作异步化,提高系统的整体性能和响应速度。 在您提到的“gearman-0.5.0.tgz”文件中,我们可以推断这包含了 Gearman 0.5.0 版本的源代码和相关构建文件。`.tgz` 是一种常见的...
通过集成 Laravel 和 Gearman,你可以创建一个强大的异步任务处理系统,提高应用程序的响应速度和并发处理能力。理解 Gearman 的工作原理和如何在 Laravel 中使用它,对于构建高可用性和可扩展性的 Web 应用至关重要...
齿轮人提供了一系列的命令行工具,如`gearmand`(服务器)和`gearman-client`(客户端),这些工具可以帮助开发者测试和调试任务处理流程。 7. **监控与管理**: 对于生产环境,监控齿轮人的运行状态非常重要。...
资源分类:Python库 所属语言:Python 资源全名:gearman-1.3.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
1)软件资源列表:《gearmand-1.1.12.tar.gz》,《gearman-1.1.2.tgz》。 2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:...