多核单网卡服务器-多进程和协程性能对比?

2017-08-16 11:15:10 +08:00
 fyooo
题目长度有限,最近接手一个类爬虫工具,之前的框架是进程+多线程的同步请求来 handle HTTP 请求 /返回。

对于多核的服务器,多进程+多线程确实是不错的选择,至少我现在接手的框架还可以扛住。

最近老板让我规划新的场景,请求量会大很多,我在想如果采用单进程 /协程+异步请求框架会不会使得后续的功能扩展和定位 bug 效率更高一些?

我写了一个小 demo,发现异步请求性能也非常好,就是只能用到单核。不知道有没有同行做过类似的对比?因为是以 handle http request 为主,而服务器也只有一个网卡,想了解一下有没人论证过这 2 个模式的性能、瓶颈什么的。
2694 次点击
所在节点    程序员
10 条回复
bazingaterry
2017-08-16 11:27:26 +08:00
异步和多进程不冲突……
w2exzz
2017-08-16 11:31:27 +08:00
这跟网卡个数有半毛钱关系?
neoblackcap
2017-08-16 12:01:11 +08:00
《 Linux 多线程服务端编程》可以帮到你,不过不要将协程什么的想象得如此美好。
NoAnyLove
2017-08-16 12:19:23 +08:00
我觉得和应该和开发语言有关吧,如果是用的 C/C++,那么多进程或者多线程都是不错的构架,毕竟像 Apache 和 Nginx 之类的都是这么搞的。如果是其他语言,比如 Python,那么不妨试试协程,至于其他语言。。。。。。。我不会,没有发言权
hjc4869
2017-08-16 12:28:29 +08:00
问题问的太模糊了。
myself659410
2017-08-16 13:50:26 +08:00
多进程 如果是 c/C++ 工作量多 性能取决于你的设计与编码
采用协程如 golang 工作量少 性能有保证
python 情况不了解 我把 python 当作脚本语言使用
xiaoxubeii
2017-08-16 18:12:40 +08:00
一般针对 IO 密集型选用协程是个不错的选择。如果 IO 和计算都密集,可以选用多 worker+协程方式。没有最好,只有适用。
fyooo
2017-08-16 21:51:35 +08:00
@xiaoxubeii 谢谢,已经发送感谢
JamesRuan
2017-08-16 23:55:55 +08:00
单网卡当然适合用单 CPU,但是首先你的应用不是计算密集型的。
HaoyangWei
2017-08-17 02:48:06 +08:00
c/c++的协程其实性能很不错的,其本身不容易构成性能瓶颈,同时在开发效率上要比多线程高不少。性能不够不妨上更多机器,毕竟机器比人便宜多了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/383323

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX