高并发,抛弃java nio,直接开发apache/nginx业务模块?

每秒持续10W的ajax请求,现在用mina来处理http请求,单机c10k搞不定,业务逻辑基本就根据url进行数据过滤并返回json,
以下测试数据通过ab -n 100000 -c 1 http://localhost/,client, server都在一个ubuntu上~
mina处理能力是2K request/s,即使不带业务代码,也不到3k request/s。
在这方面没有过多的经验,在公司也是一个人闭门造车,自己学习新技术能力较强,对nginx的性能也比较有信心,处理静态文件返回是7K request/s。

对erlang比较感兴趣,但是这个技术在公司基本不会采用,所以想直接在apache/nginx(首选nginx)上开发模块,处理http请求,java负责将数据装进memcache,nginx模块直接从memcache取数据,感觉这样性能有保障,这方面的资料网上不多,可能nginx模块本身就不应该用来处理业务逻辑。

故在javaeye请教各位,nginx业务模块,这种方案是否靠谱?有没有相应的案例或者资料来学习的,当然有更好的方案来解决这个问题也希望您能不吝赐教~

谢啦~
[b]问题补充:[/b]
其实最终也就是想提高单机吞吐量,负载均衡肯定是需要做的。
对TCP/IP这些理论还没有深入的了解,仅仅停留在知道nginx以C为主的http比java快这个基础上。
还是尝试一下,用C来处理高并发这段的业务,用测试数据说话,谢谢啦

2个回答

在WIN下面 你同时并非3K到4K 信道就不够了 在LINUX下可以到3W到4W 你同时并发10W 只是一个梦想. 如果你要在1S内吞吐达到10W是可以的 但是一次HTTP请求是一个短连接的过程 连接时间可能就占用了几百毫秒甚至几秒 看LZ的意思 是想从业务处理时间上提高吞吐 但是个人觉得 在单向短连接的情况下 提高余地不高 如果业务处理时间都少于1S的话 那么这个时间基本和你建立连接时间持平 TOMCAT默认15条现场 在TOMCAT LF线程模型下 其实同时并非最大也就15个 但是这15个能同在1S内处理上百个简单请求 这时候瓶颈并不在IO方面 IO方面的瓶颈基本上是因为 访问量过大 建立连接耗时 如果访问量过大那么楼主就不能靠缩小业务处理时间 进行提高吞吐量(因为提高不多) 这时候更应该考虑负载均衡了. 如果访问量不多 但是吞吐量很低 这时候楼主可以考虑 业务优化

一般来说短连接和业务处理时间短的东西很难靠NIO去提高吞吐量

你的系统做过性能调优?
比如请求达到3k 时,系统的表现是个什么样子

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐