Haproxy是目前比较流行的一种集群调度工具Haproxy与LVS、Nginx的比较LVS性能最好,但是搭建相对复杂Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,性能没有Haproxy好.性能特性单进程、事件驱动模型显著降低了上下文切换的开销及内存占用。事件检查器(eventchecker)允许其在高并发连接中对任何连接的任何事件实现即时探测。在任何可用的情况下,
分类:
其他好文 时间:
2018-01-31 11:31:00
阅读次数:
228
协程 / Coroutine 目录 协程是在一个线程执行过程中可以在一个子程序的预定或者随机位置中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。它本身是一种特殊的子程序或者称作函数。 一个程序可以包含多个协程,可以对比与一个进程包含多个线程。我们知道多个线程相对独立,有自己的上下文,切换 ...
分类:
编程语言 时间:
2018-01-29 21:24:33
阅读次数:
278
原文:Java中CAS详解 作者:jayxu无捷之径 在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂 ...
分类:
编程语言 时间:
2018-01-29 20:15:00
阅读次数:
681
进程上下文与中断上下文的理解(感觉加个“进程由用户态切换到内核态时”反而不对,比较了下,感觉着讲的是错的) 又看了一些文章,首先CS(context switch)只会在内核态进行。而发生系统调用是会进入内核态,上下文已经发生变化了,即使回到用户态,未发生进程切换,也算是上下文切换。所以进程的上下文 ...
分类:
系统相关 时间:
2018-01-26 11:08:58
阅读次数:
340
传统上基于进程或线程模型架构的web服务通过每进程或每线程处理并发请求,这势必会在网络和I/O操作时产生阻塞,其另一个必然结果则是对内存或CPU的利用率低下。生成一个新的进程/线程需要事先备好其运行时环境,这包括为其分配堆内存和栈内存,以及为其创建新的执行上下文等。这些操作都需要占用CPU,而且过多的进程/线程还会带来线程抖动或频繁的上下文切换
分类:
系统相关 时间:
2018-01-22 16:10:31
阅读次数:
223
锁(lock)的代价 锁是用来做并发最简单的方式,当然其代价也是最高的。内核态的锁的时候需要操作系统进行一次上下文切换,加锁、释放锁会导致比较多的上下文切换和调度延时,等待锁的线程会被挂起直至锁释放。在上下文切换的时候,cpu之前缓存的指令和数据都将失效,对性能有很大的损失。操作系统对多线程的锁进行 ...
分类:
编程语言 时间:
2018-01-14 14:28:10
阅读次数:
279
程,是目前计算机中为应用程序分配资源的最小单位; 进程,是目前计算机中运行应用程序的最小单位; 在实际系统中,其实进程都是被分为进程来实现的,所以参与时间片轮转的是线程; 但是管理应用程序的资源的单位和任务调度的单位都是进程。更像是一个逻辑概念。 线程是进程分出来的更精细的单位,线程间的上下文切换比 ...
分类:
编程语言 时间:
2018-01-11 18:17:08
阅读次数:
214
所谓的原子性,就是在执行过程中不会被线程调度机制打断的操作,这种操作从开始就一直运行到结束,中间不存在任何上下文切换。 还是以上篇讲到的x++操作为例。这是一个典型的‘读改写’的操作,在多线程的情况下,必须需要硬件的支持来保证‘读改写’的原子性,底层原理可以简单理解,通过锁总线的方式来实现。不过这里 ...
分类:
其他好文 时间:
2018-01-06 22:14:57
阅读次数:
267
有锁锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。 volatile是不错的机制,但是vola ...
分类:
其他好文 时间:
2018-01-06 15:52:56
阅读次数:
153
年轻代收集器 Serial收集器 Serial收集器使用标记-复制垃圾收集算法。Serial收集器只能使用一条线程进行垃圾收集工作,并且在进行垃圾收集的时候,所有的工作线程都需要停止工作,等待垃圾收集线程完成以后,其他线程才可以继续工作。在单核情况下,因为减少了很多线程的上下文切换的开销,这款收集器 ...
分类:
编程语言 时间:
2017-12-15 22:33:25
阅读次数:
190