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

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

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

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

nginx?haproxy?netty?

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

折腾libev吧

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


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

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

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

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


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

找了个ucloud机器,4核,16Gb,C10K, 2.5w+/s,cpu 120%,mem:3.5%
canesten
2014-07-23 13:15:38 +08:00
@dingyaguang117

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

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

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

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

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

© 2021 V2EX