weber110 2009-08-15 16:41
浏览 213
已采纳

高并发,抛弃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条回答 默认 最新

  • iteye_158 2009-08-22 04:09
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题