服务器端连接数限制

参考资料

http://yaocoder.blog.51cto.com/2668309/1312821

  • C10K问题http://www.kegel.com/c10k.html(必须要读呀)
    • I/O frameworks
    • I/O strategies
    • limits on open filehandles
    • limits on threads
    • tips
      • zero-copy
      • sendfile
      • avoid small frames by using writev
      • some programs can benefit from using non-posix threads
      • cache
    • /etc/security/limits.conf
  • 全局限制
    • /proc/sys/fs/file-nr
    • /etc/sysctl.conf
  • 服务器端和端口数限制65535无关
    • 端口号并不是并发量的限制
    • server最大tcp连接数

   

http://nginx.com/blog/http-keepalives-and-web-performance/

   

   

   

许多服务器都有并发链接数限制,比如,通常配置中,Apacher server能够处理150(workder)或者256(prework)条并发连接。而每一个HTTP keepalive连接(极可能是空闲的)占用一个并发槽,一旦所有的并发槽被占用,服务器将不再接受新的HTTP连接。

   

通常的解决方法是关闭keepalive或者限制到一个特别短的时间。

   

另外,许多服务器为每一个HTTP请求创建一个进程/线程,例如Appache。TCP连接所以非常轻量级的,而进程/线程要重的多,造成了资源的浪费:消耗内存、增加上下文切换开销,这种现象被称为"HTTP Heavy Lifting"。这种并发模型固有的限制了并发连接数。

   

测试中没有发现这种问题?

  • 客户端过少?
  • 没有使用keepalive?

   

如何解决这种问题

  • 增加进程/线程数
  • 禁止或者限制keepalive
  • 特殊的keepalive处理方式,比如Apache的Event multi-processing module
  • 使用更有效的处理模型
    • 最简单和有效的方式就是增加一个高效的HTTP proxy,比如Nginx
    • 在web server/application server使用异步处理

   

Nginx的请求处理模型

   

使用Nginx作为Http Proxy,极大程度减少了web server/application server的连接负担

   

使用Nginx作为Proxy的好处

  • 高效的资源利用率,web/application server没有了http连接的负担,能够处理更多的事务
  • 降低Http timeout的概率
  • 改善用户体验:http timeout、请求处理速度

   

   

   

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值