分享
  1. 首页
  2. 文章

go语言和java+jetty的web hello world 性能测试对比

Xiao_Qiang_ · · 7124 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。


公司现在的搜索服务RESTful架构一直是使用java + jetty; jetty的简单和高效一直很让人喜欢,搜索的RESTful架构两年来一直很稳定;但是软负载keepalived上想添加些业务的控制模块,可是keepalived没有专门的开发接口,自己新开发一套?对成本和性能、稳定性要求很高,考虑过scala 、lisp 、c 都觉得不合适,需要开发周期,性能都要考虑进去,go语言出来也两年多了,所以去关注了一下;下面是go对比jetty的性能测试。(注:go 语言的web没有服务容器这个概念,不需要apache 或nginx 等等,至少先阶段是这样)


测试的内容很简单,go 和java都是一个"hello world "的web输出


go代码

package main
import (
	"fmt"
	"log"
	"net/http"
	"strings"
)
func sayhelloName(w http.ResponseWriter, r *http.Request) {
	r.ParseForm() //参数解析
	for k, v := range r.Form {
		fmt.Println("key:", k)
		fmt.Println("value:", strings.Join(v, ""))
	}
	fmt.Fprintf(w, "hello astaxie")
}
func main() {
	http.HandleFunc("/", sayhelloName)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		log.Fatal("listenAndServer", err)
	}
}


java代码

package com.search5173.jetty.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
public class OneContext
{
	
 public static void main(String[] args)
 throws Exception
 {
 	 QueuedThreadPool threadPool= new QueuedThreadPool(); 
 	 threadPool.setMaxThreads(11); 
 threadPool.setMinThreads(4); 
 Server server = new Server();
 server.setThreadPool(threadPool); 
 
 
 Connector connector=new SelectChannelConnector();
 connector.setPort(8081);
 server.setConnectors(new Connector[]{connector});
 
 ContextHandler context = new ContextHandler();
 context.setContextPath("/t");
 context.setResourceBase(".");
 context.setClassLoader(Thread.currentThread().getContextClassLoader());
 server.setHandler(context);
 
 Handler handler=new HelloHandler();
 context.setHandler(handler);
 
 server.start();
 server.join();
 }
 
 public static class HelloHandler extends AbstractHandler
 {
		@Override
		public void handle(String arg0, Request request1, HttpServletRequest request,
				HttpServletResponse response) throws IOException, ServletException {
			
 response.getWriter().println("<h1>Hellodfgdfgdfgfd OneContext</h1>");
			
		}
 }
}




测试方式 apache ab, 这个简单方便

测试硬件

Pentium(R) Dula-Core CPU E5200 @2.50GHz

内存:3.25GB

操作系统:32位 (win7)


测试地址

1) go--->http://localhost:9090/rwer

2) java--->http://localhost:8081/t

测试脚本一

1) ab -n 50 -c 10 http://localhost:9090/rwer

2) ab -n 50 -c 10 http://localhost:8081/t

Requests per second: 结果:

jetty go
1311.44 2265.21
1083.40 2491.78
1423.85 1607.61

可以说在各方面go都完胜,知道go他强,但是没想到这么强,冲击很大。

再看些其他的

go:



jetty






有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:Xiao_Qiang_

查看原文:go语言和java+jetty的web hello world 性能测试对比

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
7124 次点击
1 回复 | 直到 2000年01月01日 00:00:00
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏