`
annan211
  • 浏览: 447280 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics