最近因为项目需要,所以写了一个id生成器,于是当时想为了省事就用go语言来写得了,于是花了大概半天的时间写了300多行码,完成之后开始测性能。一开始是在自己的虚拟机上测的,客户端是用php的,结果发现php在单进程环境下只能跑30个请求,这个结果其实也不意外,因为这根本就不是服务器的问题,而是php本身的性能不行,所以压力压不上去。于是用pcntl_fork出多个进程来,每个进程跑一些请求,最后在主进程里计算总的时间,结果发现1s最多处理1000-2000之间,并且随着并发数增多,性能下降很快。这个结果让人比较意外,原以为go语言的性能会好很多。 后来仔细想了想,突然想起来有个参数可以设置runtime.MAXPROC,用于设置可以使用的cpu数目。于是在设置了这个参数之后又开始测试,一开始性能果然比原来好了很多,可以到4000多个,但是这个时候看cpu使用率,依然不是很高,大约只有60%。于是想到可能是因为测试用的是虚拟机,它本身运行于单核之上,压力根本上不去。最终将服务器放在一个机器上,测试脚本放在另一台上,用MAXPROC=4来进行测试,结果每s钟可以处理大约8000这个请求。这个结果很令人欣喜,只用了300行码,其中还包括了业务逻辑,说白了实际的网络部分可能只有几十行而已,就能达到这样的效果,实在是相当不错了。
看来以后的服务器代码编写,完全可以使用go语言来编写了。
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)