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


     公司现在的搜索服务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:  结果:

jettygo
1311.442265.21
1083.402491.78
1423.851607.61
  

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

再看些其他的

go:



jetty





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值