C10K-C20K, 每个连接每秒发送 10-30 个消息,每个消息大概 100 个字节左右,长连接

2014 年 7 月 23 日
 feilaoda
问题是这样的,需要一个服务器,满足如下要求:
1、并发在10k-20k左右
2、长链接
3、每个链接每秒发送10个到20个消息,大小为100字节左右
4、每个发送消息都有回应消息,回应消息在20字节左右

可以理解成一个echo服务器。

目前不知道哪些程序能尽量满足这样的性能要求;C10K-C20K, Requests 10w/s-40w/s

nginx?haproxy?netty?

测下来还没有能达到的,不知道有没有其他的思路?或者优化的建议?
10047 次点击
所在节点    程序员
40 条回复
clino
2014 年 7 月 23 日
试试 openresty ?
canesten
2014 年 7 月 23 日
硬件条件有什么限制?
3-4之间有什么特殊的耗时运算吗?
feilaoda
2014 年 7 月 23 日
@canesten 需要存到后端MQ中去,当然可以暂时不考虑存储,3-4之间,接收后直接返回,暂不考虑耗时问题。
mengskysama
2014 年 7 月 23 日
nginx妥妥不靠谱啊,你在后端又加个东西

折腾libev吧

然后就是带宽了,200*2000=4,000,000字节
50M带宽妥妥的。
canesten
2014 年 7 月 23 日
你测试用的硬件什么配置?
i7 8 GB gigabit Ethernet 的情况netty达到50W/秒是没问题的
mengskysama
2014 年 7 月 23 日
发现少了个0.
icqdany
2014 年 7 月 23 日
swoole+php
feilaoda
2014 年 7 月 23 日
@canesten i5 2.4GHz, 8G, 并发是10K下的50w/s? 我测下来,并发1000,在6w+/s,和你差距好大;


@mengskysama 暂时是想找找有没现成的方案,nginx可能不适合这种长链接的案例?
lsylsy2
2014 年 7 月 23 日
@mengskysama openresty性能很高,撑得住的
以及LZ可以试试golang
canesten
2014 年 7 月 23 日
@feilaoda
C10K相关的内核参数你都调整过吗
跑测试的时候注意显卡跑满了吗?
canesten
2014 年 7 月 23 日
SORRY 网卡跑满了吗?
missdeer
2014 年 7 月 23 日
前些天在码农周刊看到的 http://blog.csdn.net/ghj1976/article/details/27996095 文中附有不少高质量的参考资料
dingyaguang117
2014 年 7 月 23 日
@canesten C10K 内核参数应该怎么调好呢?求问
dndx
2014 年 7 月 23 日
性能问题出在哪?是内存还是 CPU 不够用?消息处理占用多少资源?

另外通信协议是什么?是 WebSocket 之类的还是私有协议?

20k 对 Linux 来说根本就是小菜一碟,应该是哪里没弄好。
feilaoda
2014 年 7 月 23 日
@canesten 内核调过,虚拟机服务器下,C10K下只有1w+/s,网卡没仔细观察,再测试一下看看。

@clino
@lsylsy2 openresty 难道是用的姿势不对?没netty高。
feilaoda
2014 年 7 月 23 日
@dndx 简单的文本协议(私有),使用\n作为结束符号。C10k问题不大,主要是处理速度,没达到10w+/s


@canesten 请教下,怎么你用哪个测试工具测试的,有没有推荐的?我使用的是修改后的ab程序
tjmao
2014 年 7 月 23 日
@feilaoda 虚拟机性能太烂了。我测试的NAS吞吐量只达物理机上的1/3以内。
canesten
2014 年 7 月 23 日
@feilaoda
虚拟机就别捣乱了
feilaoda
2014 年 7 月 23 日
@canesten 不是PC上的虚拟机,是母鸡上划出来的。

找了个ucloud机器,4核,16Gb,C10K, 2.5w+/s,cpu 120%,mem:3.5%
canesten
2014 年 7 月 23 日
@dingyaguang117

当前系统的全局最大打开文件数
单个进程最大打开文件数
缓冲区内存大小
打开socket快速回收
socket重用
还有就是
net.ipv4.tcp_max_orphans
net.ipv4.tcp_synack_retries
一类的

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

https://v2ex.xtra.eu.org/t/124048

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

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

© 2021 V2EX