当前位置:首页 > 开发 > 编程语言 > 多线程 > 正文

高并发服务器处理:高并发服务器的构建,不建议为每一个请求(任务)单独创建一个线程

发表于: 2014-07-08   作者:annan211   来源:转载   浏览次数:
摘要: 高并发服务器处理:高并发服务器的构建,不建议为每一个请求(任务)单独创建一个线程。因为无限制创建线程会产生一系列问题。 当创建大量线程时,1 线程生命周期的开销非常高。线程的创建鱼销毁并不是没有代价的,虽然会因为平台的不同而有所区别, 但是线程的创建都会需要时间,延迟处理的请求,并且需要JVM和操作系统提供一些辅助操作。 如果请求的到达率非常高并且请求的处理过程是
高并发服务器处理:高并发服务器的构建,不建议为每一个请求(任务)单独创建一个线程。因为无限制创建线程会产生一系列问题。
    当创建大量线程时,1 线程生命周期的开销非常高。线程的创建鱼销毁并不是没有代价的,虽然会因为平台的不同而有所区别,
    但是线程的创建都会需要时间,延迟处理的请求,并且需要JVM和操作系统提供一些辅助操作。
    如果请求的到达率非常高并且请求的处理过程是轻量级的,大多数服务器应用程序就是这种情况,那么为每个请求
    创建一个新线程将消耗大量的计算资源。
    2 活跃的线程会消耗系统资源,尤其是内存。如果可运行的线程数量多于可用处理器的数量,那么有些线程将倍闲置。大量空闲
    的线程会占用许多内存,给垃圾回收器带来压力,而且大量线程在竞争CPU资源时还将产生其他的性能开销。
    如果你已经拥有足够多的线程使CPU保持忙碌状态,那么再创建更多的线程反而会降低性能。
    3 在可创建线程的数量上存在一个限制。
    在一定范围内,增加线程可以提高系统的吞吐率,但如果超出了限制值,增加的线程只会降低程序的执行速度,并且如果过多的创建
    一个线程,那么整个应用程序将崩溃。要想避免这种危险,就应该对应用系统可创建的线程数量进行限制。
    并且全面的测试应用程序,从而确保在线程数量达到限制时,程序也不会耗尽资源。
    为每一个任务分配一个线程这种方法的问题在于他没有限制可创建线程的数量,只限制了远程用户提交HTTP请求的速率,
    。与其他的并发危险一样,在原型设计和开发阶段,无限制的创建线程或许还能较好的运行,但在应用程序部署后并处于高负载下运行时,
    才会有问题不断暴露出来,从而使服务器奔溃。

高并发服务器处理:高并发服务器的构建,不建议为每一个请求(任务)单独创建一个线程

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在我接触JavaScript(无论浏览器还是NodeJS)的时间里,总是遇到有朋友有多线程的需求。而在NodeJS
from:http://blog.csdn.net/i_am_jojo/article/details/7587838 本文讲述的TCP服务器是模仿memcach
本文讲述的TCP服务器是模仿memcache中的TCP网络处理框架,其中是基于libevent网络库的。 主线程只处
垂直扩展 垂直扩展是一种用于增加单个ActiveMQ代理连接数(因而也增加了负载能力)的技术.默认情况下,
点评:大流量、高并发的网站的底层系统架构   动态应用,是相对于网站静态内容而言, 是指以c/c++
原文:http://blog.csdn.net/hawksoft/article/details/7192207 其实任何简单的问题,只要规模大了
从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流
来源: 工作需要实现消息路由的中间层模块 测试结果: 2W客户, 每客户10 Request -> MQEngine -
Netty是一个高性能 事件驱动的异步的非堵塞的IO(NIO)框架,用于建立TCP等底层的连接,基于Netty可以
1.负载均衡,加服务器分流 1)nginx做负载服务器,分发处理请求,ip_hash依据ip定位服务器,防止ses
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号