当前位置: 技术问答>linux和unix
Liunx多进程,多线程编程高手进来
来源: 互联网 发布时间:2016-07-21
本文导语: 目前一系统是采用单进程,多线程方式运行。 由于需要处理大量数据, 同时由于服务器是多核(4CPU), 所以在系统运行的时候,处理数据较慢, 同时只运行在一个CPU上, 而其它3个CPU一直空闲,造成资...
目前一系统是采用单进程,多线程方式运行。 由于需要处理大量数据, 同时由于服务器是多核(4CPU), 所以在系统运行的时候,处理数据较慢, 同时只运行在一个CPU上, 而其它3个CPU一直空闲,造成资源浪费, 所以需要对该系统进行改造。
改造目的是把系统改为多进程,多线程方式, 使之4个CPU多能被利用起来,然后数据较多的时候能分配到各个进程处理,以提高CPU的利用率和处理数据的速度。
希望大家能提供解决方法
改造目的是把系统改为多进程,多线程方式, 使之4个CPU多能被利用起来,然后数据较多的时候能分配到各个进程处理,以提高CPU的利用率和处理数据的速度。
希望大家能提供解决方法
|
在linux上多进程和线程的效率相差不太大,采用的是轻量级的进程,这点和windows和unix都不太相同。apache的prefork mpm就是采用的是预先分配多进程的做法,进程就是处理链接的总结处理者。但是这个做法在高并发的环境下,需要开辟大量的进程,这种情况下即使linux也需要频繁的做上下文切换,而且进程数受到内核字段长度的一些限制也不能开辟的太多。高并发的情况下使用线程可以减少服务器负荷,但是这也带来安全和健壮性的问题。所以在apache 2.0以后采用的worker mpm策略。这样就在多进程和多线程之间做了一个折中。
服务器负载不是特别高的时候,建议采取prefork mpm的做法,很高负载时建议用worker mpm的做法。(注意:worker mpm监控主进程并不是直接管理线程,而是直接以进程为单位。杀就杀掉一个进程,启动也是一次启动一个进程)。还有点很重要,一个进程开启的多线程中,只有一个线程为监听线程。为什么这么做呢?当高并发的时候,线程,进程锁会也非常影响性能,而这种做法可以大大的降低锁的操作。
给分吧!-_-|
服务器负载不是特别高的时候,建议采取prefork mpm的做法,很高负载时建议用worker mpm的做法。(注意:worker mpm监控主进程并不是直接管理线程,而是直接以进程为单位。杀就杀掉一个进程,启动也是一次启动一个进程)。还有点很重要,一个进程开启的多线程中,只有一个线程为监听线程。为什么这么做呢?当高并发的时候,线程,进程锁会也非常影响性能,而这种做法可以大大的降低锁的操作。
给分吧!-_-|