golang 性能

服务器:

阿里云ECS:1核1G内存,CentOS6.5 x64

返回内容:

{"ErrInfo":{"ErrCode":0,"ErrMsg":""},"Result":{"CurrentTime":"2015-10-06 09:46:26"}}

在直接用time.Now()返回时间,大约是4550qps,见:Web性能研究-ab压力测试

用从redis中请求返回结果:

[[email protected] ~]# ab -n 200000 -c 200 http://127.0.0.1:9090/api/System.GetTime
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 20000 requests
Completed 40000 requests
Completed 60000 requests
Completed 80000 requests
Completed 100000 requests
Completed 120000 requests
Completed 140000 requests
Completed 160000 requests
Completed 180000 requests
Completed 200000 requests
Finished 200000 requests

Server Software:
Server Hostname: 127.0.0.1
Server Port: 9090

Document Path: /api/System.GetTime
Document Length: 84 bytes

Concurrency Level: 200
Time taken for tests: 55.742 seconds
Complete requests: 200000
Failed requests: 1816
(Connect: 0, Receive: 0, Length: 1816, Exceptions: 0)
Write errors: 0
Total transferred: 40176392 bytes
HTML transferred: 16776392 bytes
Requests per second: 3587.96 [#/sec] (mean)
Time per request: 55.742 [ms] (mean)
Time per request: 0.279 [ms] (mean, across all concurrent requests)
Transfer rate: 703.86 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 18 161.9 0 7000
Processing: 0 37 13.2 37 2114
Waiting: 0 37 13.2 37 2114
Total: 1 55 162.8 37 7041

Percentage of the requests served within a certain time (ms)
50% 37
66% 38
75% 39
80% 39
90% 41
95% 43
98% 55
99% 1038
100% 7041 (longest request)

时间: 2024-10-11 22:01:46

golang 性能的相关文章

golang 性能剖析pprof

作为一个golang coder,使用golang编写代码是基本的要求. 能够写出代码,并能够熟悉程序执行过程中各方面的性能指标,则是更上一层楼. 如果在程序出现性能问题的时候,可以快速定位和解决问题,那么写起代码来,会更加自信. 本文介绍的pprof,是golang 自带性能剖析工具,可以帮助定位程序中可能存在的问题. 1.引入pprof 例子代码如下: package main import ( "log" _ "net/http/pprof" "ne

golang性能监控初探

最近在用golang写一个server.压力测试过程发现反应比较慢,但是由于中间的操作都是串行的,无法知道在哪个操作消耗了比较多时间. 一开始想到的是打log.但是单个请求又是很快的,于是想到如下方案 在调用每个函数的时候,统计该函数的时耗,然后利用channel把同一个函数调用发送到同一个地方,利用map进行累计统计(这里可以更近一步,比如统计每个worker甚至每个services的状态,包括最长请求时间,最短请求时间,平均消耗等等,如果加上runtime还可以记录其他的运行相关信息). 一

golang 性能优化之累加哈希

很多时候性能问题总是发生在一些不起眼的地方.最近做一个性能问题分析的时候发现,一个函数里面使用由于字符串拼接产生的临时字符串导致内存上涨了40%(120G 内存的机器),而这些临时字符串给 GC 也带来了非常大的负担,成为主要的性能瓶颈,而这些字符串作为 map 的 key,又必须要拼接,所以想到了直接使用 hash 后的值作为 map 的 key,而这个 hash 值使用累加 hash 计算得出. 所谓累加 hash,就是对字符串的 hash 可以分为任意多段,对每一段连续 hash,结果累加

2019年,Golang开始吊打Java性能了!!!

最近要同事debug性能,不经意间发现现在Golang性能开始吊打Java了!!!感觉Go发展神速!! 之前Go和Java基本是平手,甚至还有较大差距,请见https://www.cnblogs.com/sunsky303/p/6506663.html.借此机会对比了下,Java/Go http server最近的性能,毕竟这是后端同学最关心的问题之一!! java 10 vs Golang1.12, Google上最快的2个http server性能PK, 压测10次,取平均值. Java i

Golang全接触

满打满算, 从好友推荐Golang至发文时, 使用Golang已经有1年多了. 这种时间对于C/C++ Java这些老者来说, 简直是菜鸟级别的经验 但作为新生代语言的特点就是实战. Golang这一年里, 已经为项目提供了稳定的服务器和强大的扩展能力, 与客户端的Unity3D里的C#一样, 都是强大, 极致开发效率代表的优秀开发语言. 用途篇 Golang到底拿来做啥? 我需要么? 高效(性能,开发)的服务器语言. 包括Web, 游戏, App 编写桌面级UI暂不是很适合 我需要把现在的C+

golang会取代php吗

看看PHP和Golang如何在开发速度,性能,安全性,可伸缩性等方面展开合作. PHP与Golang比较是一个艰难的比较. PHP最初创建于1994年,已有24年.自那时起,由于PHP的开源格式,易用性和稳定性,PHP的知名度不断提高. 然而,正如生活中的其他方面所发生的那样,如果老人不能适应现代,老人必须为新生物让路.即使是最新版本的PHP,比如PHP 7,在安全性,可伸缩性,并发性等方面也有很多不足之处. 随着时代的变迁,应用程序的需求也在不断变化.快速部署,并发,可扩展,无缺陷,低维护和经

uvloop —— 超级快的 Python 异步网络框架

简短介绍 asyncio是遵循Python标准库的一个异步 I/O框架.在这篇文章里,我将介绍 uvloop: 可以完整替代asyncio事件循环.uvloop是用Cython写的,基于 libuv. uvloop 使得 asyncio 更快. 实际上,比nodejs,gevent,以及其他任何Python异步框架至少快两倍 .uvloop asyncio 基于性能的测试接近于Go程序. asyncio 和 uvloop asyncio 模块, 是在 PEP 3156引入的, 是一个集合,包含网

Go_18: Golang 中三种读取文件发放性能对比

Golang 中读取文件大概有三种方法,分别为: 1. 通过原生态 io 包中的 read 方法进行读取 2. 通过 io/ioutil 包提供的 read 方法进行读取 3. 通过 bufio 包提供的 read 方法进行读取 下面通过代码来验证这三种方式的读取性能,并总结出我们平时应该使用的方案,以便我们可以写出最优代码: package main import ( "os" "io" "bufio" "io/ioutil"

Golang使用pprof和qcachegrind进行性能监控

Golang为我们提供了非常方便的性能测试工具pprof,使用pprof可以非常方便地对Go程序的运行效率进行监测.本文讲述如何使用pprof对Go程序进行性能测试,并使用qcachegrind查看性能测试的输出文件. 载入pprof模块 想要对一个Go程序进行pprof监测,第一步是在main函数所在的模块中添加 net/http/pprof 模块.import后面的“_”是一定要加上的. import _ "net/http/pprof" 运行HTTP服务器 如果你的程序不是一个W