• 关于

    系统进程

    的搜索结果

回答

进程是操作系统中最基本、重要的概念,是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。狭义上讲,进程是正在运行的程序的实例;广义上讲,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统进行资源分配和调度、动态执行的基本单元,是操作系统结构的基础,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。其概念主要有两点:(1)进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域、数据区域和堆栈。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。(2)进程是一个“执行中的程序”。只有在操作系统、处理器执行程序时,它才能成为一个活动的实体,我们称其为进程。从理论角度看,进程是对正在运行的程序过程的抽象;从实现角度看,它是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。 一、进程具有以下特点: (1)动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生、动态消亡的。 (2)并发性:任何进程都可以与其他进程一起并发执行。 (3)独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。 (4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。 (5)结构特征:进程由程序、数据和进程控制块三部分组成。 二、进程、线程和程序的联系: 通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。此外多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。 三、进程和程序的区别: (1)程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念,而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 (2)程序可以作为一种软件资料长期存在,而进程是有一定生命期的。 (3)程序是永久的,进程是暂时的。 (4)进程更能真实地描述并发,而程序不能。 (5)进程是由进程控制块、程序段、数据段三部分组成。 (6)进程具有创建其他进程的功能而程序没有。 (7)在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。 四、进程具有的三种基本状态 由于进程在执行过程中具有动态性和异步性,因此也就决定了进程可能具有多种状态。 (1)就绪状态(Ready):进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。 (2)运行状态(Running):进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。 (3)阻塞状态(Blocked):由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。 五、创建进程的事件 在多道程序环境中,只有作为进程时才能在系统中运行。因此,为了让程序能运行,就必须为它创建进程。一个进程去创建另一个进程的典型事件,可以有以下四类: (1) 用户登录:在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中。 (2)作业调度:在批处理系统中,当作业调度程序按照一定的算法调度到某作业时,便将该作业装入到内存,为它分配必要的资源,并立即为它创建进程,再插入到就绪队列中。 (3) 提供服务:当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,例如,用户程序要求进行文件打印,操作系统将为它创建一个打印进程,这样,不仅可以使打印进程与该用户进程并发执行,而且还便于计算出为完成打印任务所花费的时间。 (4) 应用请求:在上述三种情况中,都是由系统内核为它创建一个新进程,而这一类事件则是基于应用进程的需求,由它创建一个新的进程,以便使新进程以并发的运行方式完成特定任务。 六、进程的创建过程 一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语create()按下述步骤创建一个新进程。 (1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。 (2) 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需要的内存大小。 (3) 初始化进程控制块。PCB的初始化主要包括:初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中;初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶;初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。 (4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。 七、引起进程终止的事件 (1)正常结束:在任何计算机系统中,都应该有一个表示进程已经运行完成的指示。例如,在批处理系统中,通常在程序的最后安排一条Hold指令或终止的系统调用。当程序运行到Hold指令时,将产生一个中断,去通知OS本进程已经完成。 (2)异常结束:在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有:越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术运算错,I/O故障。 (3)外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些干预有:操作员或操作系统干预、父进程请求、父进程终止。 八、进程的终止过程 如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按如下过程去终止指定的进程。 (1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。 (2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真。用于指示该进程被终止后应重新进行调度。 (3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。 (4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。 (5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。 九、阻塞唤醒 1、引起进程阻塞和唤醒的事件 (1)请求系统服务:当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待,一旦要求得到满足后,进程被唤醒。 (2)启动某种操作:当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成,该操作完成后,将该进程唤醒。 (3)新数据尚未到达:对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据才能运行以对数据进行处理,则是要其所需数据尚未到达,该进程只有(等待)阻塞,等到数据到达后,该进程被唤醒。 (4)无新工作可做:系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来,新任务到达后,该进程被唤醒。 2.进程阻塞过程 正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block()把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境。 3. 进程唤醒过程 当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。 答案来源网络,供参考,希望对您有帮助

问问小秘 2019-12-02 03:05:02 0 浏览量 回答数 0

回答

死锁产生的原因 系统资源的竞争 系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。 进程运行推进顺序不合适 互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。 请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。 不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。 循环等待条件: 若干进程间形成首尾相接循环等待资源的关系 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 死锁的避免与预防: 死锁避免的基本思想: 系统对进程发出每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。 理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何让这四个必要条件不成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。 死锁避免和死锁预防的区别: 死锁预防是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现,而死锁避免则不那么严格的限制产生死锁的必要条件的存在,因为即使死锁的必要条件存在,也不一定发生死锁。死锁避免是在系统运行过程中注意避免死锁的最终发生。

游客bnlxddh3fwntw 2020-04-10 14:05:31 0 浏览量 回答数 0

回答

先说一下fork,fork会生成一个和当前进程相同的副本,称为子进程。原进程的所有资源都以适当的方式复制到子进程,因此该系统调用之后,原来的进程就有了两个独立的实例。这两个实例的联系包括:同一组打开文件、同样的工作目录、内存中同样的数据(两个进程各有一份副本)。当然Linux使用了copy on write,也就是说只有新的进程对内存页执行write操作的时候才会复制内存页面。具体如何完成:首先要了解一下task_struct这个数据结构。Linux内核很多涉及进程的部分都围绕这个数据结构(数据结构定义在include/sched.h中,有兴趣去看一下)。数据结构里面的成员非常多,下面会按照几个部分介绍一下。状态和执行信息,如待决信号、使用的二进制格式(和其他系统二进制格式的任何仿真信息)、进程ID号(pid)、到父进程及其他有关进程的指针、优先级和程序执行有关的时间信息(例如CPU时间)。有关已经分配的虚拟内存的信息。进程身份凭据,如用户ID、组ID以及权限等。可使用系统调用查询(或修改)这些数据。使用的文件包含程序代码的二进制文件,以及进程所处理的所有文件的文件系统信息,这些都必须保存下来。线程信息记录该进程特定于CPU的运行时间数据(该结构的其余字段与所使用的硬件无关)。在与其他应用程序协作时所需的进程间通信有关的信息。该进程所用的信号处理程序,用于响应到来的信号。fork之后,操作系统会copy当前进程的task_struct机构体,除了id号不一样之外,其余完全一样。fork之后如果没有调用exec(),那么仅仅只是生成多个当前的进程,提升并发的能力,比如说nginx。nginx的进程都是master进程fork出来的,所以他们有相同的监听句柄。至于是哪个worker进程去响应,nginx有自己的竞争方式。最后关于子进程fork自己会发生什么。请看下图:

a123456678 2019-12-02 02:39:00 0 浏览量 回答数 0

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

先说一下fork,fork会生成一个和当前进程相同的副本,称为子进程。原进程的所有资源都以适当的方式复制到子进程,因此该系统调用之后,原来的进程就有了两个独立的实例。这两个实例的联系包括:同一组打开文件、同样的工作目录、内存中同样的数据(两个进程各有一份副本)。当然Linux使用了copy on write,也就是说只有新的进程对内存页执行write操作的时候才会复制内存页面。具体如何完成:首先要了解一下task_struct这个数据结构。Linux内核很多涉及进程的部分都围绕这个数据结构(数据结构定义在include/sched.h中,有兴趣去看一下)。数据结构里面的成员非常多,下面会按照几个部分介绍一下。状态和执行信息,如待决信号、使用的二进制格式(和其他系统二进制格式的任何仿真信息)、进程ID号(pid)、到父进程及其他有关进程的指针、优先级和程序执行有关的时间信息(例如CPU时间)。有关已经分配的虚拟内存的信息。进程身份凭据,如用户ID、组ID以及权限等。可使用系统调用查询(或修改)这些数据。使用的文件包含程序代码的二进制文件,以及进程所处理的所有文件的文件系统信息,这些都必须保存下来。线程信息记录该进程特定于CPU的运行时间数据(该结构的其余字段与所使用的硬件无关)。在与其他应用程序协作时所需的进程间通信有关的信息。该进程所用的信号处理程序,用于响应到来的信号。fork之后,操作系统会copy当前进程的task_struct机构体,除了id号不一样之外,其余完全一样。fork之后如果没有调用exec(),那么仅仅只是生成多个当前的进程,提升并发的能力,比如说nginx。nginx的进程都是master进程fork出来的,所以他们有相同的监听句柄。至于是哪个worker进程去响应,nginx有自己的竞争方式。最后关于子进程fork自己会发生什么。请看下图:linux启动时候只有一个init进程,剩下的题主自行理解。

a123456678 2019-12-02 02:54:52 0 浏览量 回答数 0

回答

此处延伸:进程的优先级是什么 当前业界的Android进程保活手段主要分为** 黑、白、灰 **三种,其大致的实现思路如下: 黑色保活:不同的app进程,用广播相互唤醒(包括利用系统提供的广播进行唤醒) 白色保活:启动前台Service 灰色保活:利用系统的漏洞启动前台Service 黑色保活 所谓黑色保活,就是利用不同的app进程使用广播来进行相互唤醒。举个3个比较常见的场景: 场景1:开机,网络切换、拍照、拍视频时候,利用系统产生的广播唤醒app 场景2:接入第三方SDK也会唤醒相应的app进程,如微信sdk会唤醒微信,支付宝sdk会唤醒支付宝。由此发散开去,就会直接触发了下面的 场景3 场景3:假如你手机里装了支付宝、淘宝、天猫、UC等阿里系的app,那么你打开任意一个阿里系的app后,有可能就顺便把其他阿里系的app给唤醒了。(只是拿阿里打个比方,其实BAT系都差不多) 白色保活 白色保活手段非常简单,就是调用系统api启动一个前台的Service进程,这样会在系统的通知栏生成一个Notification,用来让用户知道有这样一个app在运行着,哪怕当前的app退到了后台。如下方的LBE和QQ音乐这样: 灰色保活 灰色保活,这种保活手段是应用范围最广泛。它是利用系统的漏洞来启动一个前台的Service进程,与普通的启动方式区别在于,它不会在系统通知栏处出现一个Notification,看起来就如同运行着一个后台Service进程一样。这样做带来的好处就是,用户无法察觉到你运行着一个前台进程(因为看不到Notification),但你的进程优先级又是高于普通后台进程的。那么如何利用系统的漏洞呢,大致的实现思路和代码如下: 思路一:API < 18,启动前台Service时直接传入new Notification(); 思路二:API >= 18,同时启动两个id相同的前台Service,然后再将后启动的Service做stop处理 熟悉Android系统的童鞋都知道,系统出于体验和性能上的考虑,app在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来。打开的应用越多,后台缓存的进程也越多。在系统内存不足的情况下,系统开始依据自身的一套进程回收机制来判断要kill掉哪些进程,以腾出内存来供给需要的app。这套杀进程回收内存的机制就叫 Low Memory Killer ,它是基于Linux内核的 OOM Killer(Out-Of-Memory killer)机制诞生。 进程的重要性,划分5级: 前台进程 (Foreground process) 可见进程 (Visible process) 服务进程 (Service process) 后台进程 (Background process) 空进程 (Empty process) 了解完 Low Memory Killer,再科普一下oom_adj。什么是oom_adj?它是linux内核分配给每个系统进程的一个值,代表进程的优先级,进程回收机制就是根据这个优先级来决定是否进行回收。对于oom_adj的作用,你只需要记住以下几点即可: 进程的oom_adj越大,表示此进程优先级越低,越容易被杀回收;越小,表示进程优先级越高,越不容易被杀回收 普通app进程的oom_adj>=0,系统进程的oom_adj才可能<0 有些手机厂商把这些知名的app放入了自己的白名单中,保证了进程不死来提高用户体验(如微信、QQ、陌陌都在小米的白名单中)。如果从白名单中移除,他们终究还是和普通app一样躲避不了被杀的命运,为了尽量避免被杀,还是老老实实去做好优化工作吧。 所以,进程保活的根本方案终究还是回到了性能优化上,进程永生不死终究是个彻头彻尾的伪命题!

剑曼红尘 2020-04-10 14:17:05 0 浏览量 回答数 0

回答

对于Windows而言,大部分系统资源(例如,进程数、线程数)不像Linux一样有固定的上限,而是受限于各类系统核心资源的使用,例如物理内存(physical memory), 虚拟内存(virutal memory),页面缓冲池(paged pool), 非页面缓冲池(non paged pool) 等。 在一个Windows机器上,创建进程或者线程的上限受限于上述核心资源的情况,对于不同内存大小,不同操作系统(32位,64位)而言,其创建的上限也不同。 微软专家 Mark Russinovich (Windows Internals作者) 在微软官方Blog的上文章Pushing the Limits of Windows: Processes and Threads介绍了Windows 操作系统支持的最大进程数和线程数。 根据该文章,我们总结了如下要点,请参考: 进程 进程是操作系统结构的基础,Windows进程是一个具有一定独立功能的可执行文件关于某个数据集合的一次运行活动。在WIndows内核中有对应的进程对象(Object), 操作系统使用该内核进程对象及其关联的数据结构来存储和跟踪该可执行程序的运行情况。 线程 线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,它可与同属一个进程的其它线程共享进程所拥有的全部资源。在Windows内核中有对应的线程Object来跟踪线程的运行情况。 线程上限 简单的说,线程创建的上限主要与线程用户态Stack大小,进程用户态虚拟内存大小,Kernel Stack分配大小,系统Resident available memory大小有关。 Windows进程创建时,会分配虚拟内存空间,一般而言,32位操作系统为4G(2G用户空间+2G内核空间),而64位操作系统,虚拟内存寻址则大的多(8 TB用户空间+8TB内核空间)。WIndows线程创建时,会分配用户态Stack(栈)来传递函数参数(function parameters), 管理本地变量(local variables), 保存函数返回地址(function return addresses). 一般而言,线程用户态的stack默认保留大小为1 MB。 系统Resident available memory是可以用来分配给代码和数据的物理内存。对于线程而言,其用户态Stack的作用上面已经介绍,而内核态Stack是内核中用来处理系统调用等使用,其属于系统Resident available memory,进程创建时线程的内核kernel stack的大小在32位Windows上为12K,在64位Windows上为24K. 理论上来说,一个进程所创建的线程数量为 min(进程用户态虚拟内存大小/线程用户态分配stack大小,系统Resident avaiable memory/线程内核默认kernel stack大小)。 在不同的操作系统版本(32位,64位)以及不同类型的进程(32位,64位),最高创建的线程数量是不同的。 进程上限 在进程创建时,除了默认包含的线程的资源外,系统还需要预留最小的working set(工作集,归属于物理内存)满足进程基本需要,默认大小为200K。此外,进程还需要使用虚拟地址空间来存放初始化数据,包含数据结构、PTE,Handle,Objects等资源,在微软Blog的测试中,创建一个测试进程,基本上消耗1MB Commited virutal Space (已提交虚拟内存), 所以进程创建的上限受限于系统的Commit Limit(虚拟内存上限)。例如,下图是打开Windows 7的进程管理器中的资源界面,可以看到Committd virtual space 为1360MB, 而系统的Commit Limit上限为3583MB. 结论 进程/线程的创建上限与操作系统的核心资源有着密切的联系,我们可以通过适当的调整来系统资源增加其上限。但是根据微软官方建议,如果一个/多个应用程序从设计上需要创建大量的进程/线程,而这又成为资源瓶颈,那么设计者需要重新考虑架构。 一般而言,一个可扩展的应用程序应该让正在运行的线程正好与CPU核数相同(如果使用NUMA非一致性内存访问,则与Node上CPU的数量相同),或者使用另外一种方法,将同步IO机制修改为异步IO机制,通过IO完成机制来实现CPU与线程数的对应。 阅读须知 本文仅供用户使用 ECS Windows 时参考,文中引用的微软官方链接,版权归属微软。请注意文章适用的操作系统范围,以及微软 Windows 产品迭代或者文档未及时更新可能带来的问题,阿里云官方不对引用的微软官方链接内容负责。

KB小秘书 2019-12-02 02:07:29 0 浏览量 回答数 0

问题

Windows进程和线程数的上限是什么

boxti 2019-12-01 22:06:50 2125 浏览量 回答数 0

回答

linux中每个进程都有一个识别号PID; 对于Linux系统来说,第一个启动进程是init,PID是1,是唯一一个由系统内核直接运行的进程,新的进程都是系统调用fork来产生;除了init之外,每个进程都有一个父进程。

不语奈何 2020-01-09 17:06:04 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:02 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:00 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:02 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:02 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档工作原理安骑士 Agent 每隔五个小时会主动向安骑士服务器端上报一次在线数据信息。 如果安骑士 Agent 没有按时上报在线信息,安骑士服务器端则在 12 小时后判定该服务器不在线,且在安骑士管理控制台中此服务器的保护状态显示为离线。 相关进程安骑士 Agent 包含以下两个主要进程: 说明: 安骑士 Agent 的进程在 Linux 系统的服务器上以 root 帐号运行,在 Windows 系统的服务器上以 system 帐号运行。 AliYunDun 此进程主要用于与安骑士服务器建立连接。 进程文件所在路径: Windows 32位系统: C:\Program Files\Alibaba\aegis\aegis_clientWindows 64位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_clientLinux 系统: /usr/local/aegis/aegis_client AliYunDunUpdate 此进程主要用于定期检测安骑士Agent是否需要升级。 进程文件所在路径: Windows 32 位系统: C:\Program Files\Alibaba\aegis\aegis_updateWindows 64 位系统: C:\Program Files (x86)\Alibaba\aegis\aegis_updateLinux 系统: /usr/local/aegis/aegis_update 资源占用安骑士 Agent 仅占用您的服务器非常少的资源: 普通状态: 安骑士 Agent 占用约 1% CPU及 50 MB 内存。 峰值状态: 安骑士 Agent 占用不超过 10% CPU 及 80 MB 内存。 注意: 如果占用资源超过此峰值,安骑士 Agent 将会暂停工作。

2019-12-01 23:12:01 0 浏览量 回答数 0

回答

进程关联线程数统计说明 Linux 系统下,可以通过以下三种方式查询应用程序(进程)创建了多少线程(thread)。 通过 /proc/$PID/status 进行查看 通过 /proc/$PID/task 目录下的目录数判断线程数量 通过 ps 命令统计线程 通过 /proc/$PID/status 进行查看 首先,通过 ps 等指令,查询目标进程的进程 ID(PID): # 以 ssh 进程为例 ps -ef | grep sshroot 874 1 0 May31 ? 00:00:01 /usr/sbin/sshd -Droot 3957 874 0 09:59 ? 00:00:00 sshd: root@pts/0root 3993 3959 0 09:59 pts/0 00:00:00 grep —color=auto ssh # 第二列即为相应进程的 PID 号 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式:cat /proc/$PID/status 示例: $ cat /proc/874/status | grep ThreadThreads: 1 # 说明当前该进程创建的线程数为 1 通过 /proc/$PID/task 目录下的目录数判断线程数量 进程每创建一个线程,系统会在 /proc/$PID/task 目录下创建一个子目录,目录名即为线程 ID。通过统计相应进程对应 task目录下的子目录数量即可统计出线程数量。操作说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式: ls /proc/$PID/task | wc -l 示例: $ ls /proc/874/task | wc -l # 返回的数值即为相应进程创建的线程数。 通过 ps 命令统计线程tgps 通过 ps 指令也可以统计进程关联线程数。说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式: ```js ps hH p $PID | wc -l 参数说明: -h 表示不显示标题 -H 表示显示进程的层级关系 $PID 是相应进程的进程号 示例: ```js $ ps hH p 874 | wc -l # 返回的数值即为相应进程创建的线程数。 Linux 系统无法创建线程错误原因及解决方法 问题描述: 业务软件或系统日志中可能出现类似如下日志信息: ```js unable to create new native thread 问题分析: 出现该错误,通常是由于系统无法创建更多进程所致。可以使用如下指令查看当前系统最大可创建线程数。 ```js 指令: ulimit -a | grep 示例输出: $ ulimit -a | grep processesmax user processes (-u) 7812# max user processes 右侧的数值即表示当前单用户可创建的最大线程总数 处理办法: 根据操作系统的不同,可以参阅该文档修改系统配置文件,调整最大可创建进程数。

KB小秘书 2019-12-02 02:06:38 0 浏览量 回答数 0

问题

【算法】五分钟算法小知识:Linux的进程、线程、文件描述符是什么?

游客ih62co2qqq5ww 2020-05-09 11:28:57 0 浏览量 回答数 0

问题

Linux系统硬件资源和性能监控命令: ps

云代维 2019-12-01 21:50:02 8066 浏览量 回答数 1

回答

"进程包含如下3个特征。 独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。 动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念。进程具有自己的生命周期和各种不同的状态,这些概念在程序中都是不具备的。 并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。"

星尘linger 2020-04-12 11:41:31 0 浏览量 回答数 0

回答

如果Linux系统的ECS实例CPU持续保持高使用率,则会对系统稳定性和业务运行造成影响。可以按如下步骤进行处理。 定位问题。找到影响CPU使用率过高的具体进程。 分析处理。查看影响CPU使用率过高的进程是否正常,并分类进行处理。 对于正常进程:您需要对程序进行优化或者升级服务器配置。 对于异常进程:您可以手动对进程进行查杀,也可以使用第三方安全工具去查杀。 CPU负载的查询分析 在Linux系统中,查看进程的常用命令如下所示。本文主要介绍vmstat和top。 vmstat top ps -aux ps -ef 使用vmstat命令查看 通过vmstat命令,从系统维度查看CPU资源的使用情况。命令格式类似如下,表示结果一秒刷新一次。 vmstat -n 1 示例如下。 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 2684984 310452 2364304 0 0 5 17 19 35 4 2 94 0 0 0 0 0 2687504 310452 2362268 0 0 0 252 1942 4326 5 2 93 0 0 0 0 0 2687356 310460 2362252 0 0 0 68 1891 4449 3 2 95 0 0 0 0 0 2687252 310460 2362256 0 0 0 0 1906 4616 4 1 95 0 0 注:返回结果中的主要数据列说明如下。 r:表示系统中CPU等待处理的线程。一个CPU每次只能处理一个线程,所以该数值越大,通常表示系统运行越慢。 us:用户模式消耗的CPU时间百分比。该值较高时,说明用户进程消耗的CPU时间比较多。如果该值长期超过50%,则需要对程序算法或代码等进行优化。 sy:内核模式消耗的CPU时间百分比。 wa:IO等待消耗的CPU时间百分比。该值较高时,说明IO等待比较严重,这可能磁盘大量作随机访问造成的,也可能是磁盘性能出现了瓶颈。 id:处于空闲状态的CPU时间百分比。如果该值持续为0,同时sy是us的两倍,则通常说明系统面临CPU资源短缺。 使用top命令查看 登录Linux实例,关于如何登录Linux实例,请参考使用管理终端连接Linux实例。 执行如下命令,从进程纬度来查看CPU、内存等资源的使用情况。命令格式类似如下。 top 系统显示类似如下。 top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd 针对负载问题,您只需关注回显的第一行和第三行信息,详细说明如下。 top命令的第一行显示的内容17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05,依次为系统当前时间、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载,这与直接执行uptime命令查询结果一致。 top命令的第三行会显示当前CPU资源的总体使用情况,下方会显示各个进程的资源占用情况。 通过 P 键,可以对CPU使用率进行倒序排列,进而定位系统中占用CPU较高的进程。 提示:通过 M 键,您可以对系统内存使用情况进行排序。如果有多核CPU,数字键1可以显示每核CPU的负载状况。 执行如下命令,可以查看每个进程ID对应的程序文件。 ll /proc/PID/exe 操作案例 案例一:使用top命令终止CPU消耗较大的进程 通过top命令查看系统的负载问题,并定位耗用较多CPU资源的进程,在运行界面快速终止相应的异常进程。 想要终止某个进程,先键入小写字母 k。 输入想要终止的进程PID,默认为输出结果的第一个PID。如下图所示,假如想要终止PID为23的进程,输入23后回车。 操作成功后,界面会出现类似Send pid 23 signal [15/sigterm]的提示信息让用户进行确认。按回车确认即可。 案例二:CPU使用率较低但负载较高 问题描述 当前Linux系统没有业务程序运行。通过top命令观察,发现CPU很空闲,但是load average却非常高,如下图所示。 处理办法 load average是对CPU负载进行评估的,其值越高说明其任务队列越长,处于等待执行的任务越多。出现此种情况时,可能是由于僵死进程导致的。可以通过ps -axjf命令查看是否存在 D+ 状态进程,该状态是指不可中断的睡眠状态。处于该状态的进程无法终止,也无法自行退出。只能通过恢复其依赖的资源或者重启系统来解决。 案例三:kswapd0进程占用CPU较高 操作系统使用分页机制来管理物理内存。操作系统将磁盘的一部分划出来作为虚拟内存,由于内存的速度要比磁盘快得多,所以操作系统要按照某种换页机制将不需要的页面换到磁盘中,将需要的页面调到内存中。由于内存持续不足,这个换页动作持续进行。kswapd0是虚拟内存管理中负责换页的进程,当服务器内存不足的时候kswapd0会执行换页操作,这个换页操作是十分消耗主机CPU资源的。如果通过top命令发现该进程持续处于非睡眠状态,且运行时间较长,可以初步判定系统在持续的进行换页操作,可以将问题转向内存不足的原因来排查。 问题描述 kswapd0进程占用了系统大量CPU资源。 处理办法 执行如下命令,查看kswapd0进程。 top 系统显示类似如下,发现kswapd0进程持续处于非睡眠状态,且运行时间较长并持续占用较高CPU资源,则通常是由于系统在持续的进行换页操作所致。 通过free 、ps等指令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。 针对系统当前内存不足的问题,您可以重启一些服务,释放内存。 提示:从长远的角度来看,您需要对内存大小进行升级。

1934890530796658 2020-03-26 00:48:16 0 浏览量 回答数 0

问题

“svchost.exe”进程导致CPU或内存资源使用率居高不下怎么办?

洛欢 2019-12-01 21:02:38 7719 浏览量 回答数 4

回答

1、Linux内核其实是用进程来实现线程的,所以在内核某些方面的处理,两者资源和开销可能差不多,但其它平台的实现就不一定了。2、如果要实现一个web服务器,一个client连接对应一个线程,和一个client连接对应一个进程,两者有很大的不同,一个系统最多的进程数是有限制的,数量也不会太多,而线程真的可以有很多(我没研究过)。当然另一个做法可以是开一个进程来处理多个client连接,但是线程间的同步和数据共享,要比在进程间来得容易,而且进程间的通讯开销还是比较大的(比如socket、共享内存、消息队列等)。线程间如果锁使用不当,比如锁粒度太大,导致性能不理想,但这是设计的问题。3、用多进程的方法来实现某些需求很合适,比如像google chrome,每一个网页(标签)就用一个进程来处理,所以某个标签崩溃了(网页有flash经常会崩溃:)),不会导致整个浏览器崩溃,这是选择进程的优点。缺点也是显而易见的,开一堆网页后,发现系统有一堆的进程,用户和系统内核都不会喜欢这样的:)另外,一个程序有多个进程并发执行任务,每个进程可以在单独的CPU中运行,这是比较高效的利用了多(核)CPU,因为线程在多个CPU调度的时候,有数据的共享和同步,在处理时可能要等待其它CPU(或有CPU间的数据共享)让出锁,这样就会有开销,所以某种程度讲,选用多进程模型有时是有意利用多CPU(不知这样说得不得当?)4、由于对系统来说,一个进程的资源是有限制的,比如文件打开的最大数量、能创建的线程的数量、网络连接数量等,所以通常对一个服务器程序来说,在一个机器上运行多个实例(多个进程)也是一个提高机器性能使用率的方法。所以,不能一概而定,线程和进程各有存在的目的和意义,要根据自己程序的需求来选择。以上我只是把一些相关的东西列出来,具体需要你自己去搜索和证实。

a123456678 2019-12-02 02:54:32 0 浏览量 回答数 0

回答

date 显示或设置系统时间 date 显示当前系统时间 date -s “2014-01-01 10:10:10“ 设置系统时间 df 显示磁盘信息 df –h 友好显示大小 free 显示内存状态 free –m 以mb单位显示内存组昂头 top 显示,管理执行中的程序 clear 清屏幕 ps 正在运行的某个进程的状态 ps –ef 查看所有进程 ps –ef | grep ssh 查找某一进程 kill 杀掉某一进程 kill 2868 杀掉2868编号的进程 kill -9 2868 强制杀死进程 du 显示目录或文件的大小。 du –h 显示当前目录的大小 who 显示目前登入系统的用户信息。 hostname 查看当前主机名 修改:vi /etc/sysconfig/network uname 显示系统信息。 uname -a 显示本机详细信息。 依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

游客6nvww5bb5kd2w 2020-02-19 17:18:32 0 浏览量 回答数 0

回答

CPU 跑满或跑高的问题定位 若云服务器 ECS 的 CPU 持续跑高,会对系统的稳定性和业务运行造成影响。Linux 系统下,查看进程的常用命令如下: ps -auxps -eftop Linux 系统中,通常使用 top 命令来查看系统的负载问题,并定位耗用较多 CPU 资源的进程。 操作步骤 通过控制台管理终端连接到 ECS 实例,参见使用远程连接功能连接 ECS 实例。 说明:资源负载异常时,通常无法通过 SSH 进行远程连接,建议您通过控制台管理终端进行连接。 通过 top 命令查看系统当前的运行情况。 top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd 针对负载问题,您只需关注回显的第一行和第三行信息,详细说明如下。 top 命令的第一行显示的内容 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 依次为 系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载,这与直接执行 uptime 命令查询结果一致。 top 命令的第三行会显示当前 CPU 资源的总体使用情况,下方会显示各个进程的资源占用情况。 通过字母键 P,可以对 CPU 使用率进行倒序排列,进而定位系统中占用 CPU 较高的进程。 说明:通过字母键 M, 您可以对系统内存使用情况进行排序。如果有多核 CPU,数字键 1 可以显示每核 CPU 的负载状况。 通过 ll /proc/PID/exe 可以查看每个进程 ID 对应的程序文件。 CPU 跑满或跑高的分析处理 CPU 的跑满或跑高,在确认具体的进程结果后,针对异常的进程,您需要通过 top 命令将其终止;而对于 kswapd0 进程导致的内存不足等问题,您需要对系统进行规格的升级或程序的优化。 使用 top 直接终止 CPU 消耗较大的进程 您可以直接在 top 运行界面快速终止相应的异常进程。操作步骤如下: 若您想要终止某个进程,只需按下小写的 k 键。 输入想要终止的进程 PID (top 输出结果的第一列)。例如,若您想要终止 PID 为 86 的进程,输入 86 后按回车即可。 操作成功后,界面会出现类似 Send pid 86 signal [15/sigterm] 的提示信息。按回车确认即可。 kswapd0 进程占用导致 CPU 较高 操作系统都用分页机制来管理物理内存,系统会把一部分硬盘空间虚拟成内存使用。由于内存的速度要比磁盘快得多,所以系统要按照某种换页机制将不需要的页面换到磁盘中,将需要的页面调到内存中。 kswapd0 是虚拟内存管理中负责换页的进程,当服务器内存不足的时候 kswapd0 会执行换页操作,这个换页操作是十分消耗主机 CPU 资源的。操作步骤如下: 通过 top 命令查看 kswapd0 进程。 检查该进程是否持续处于非睡眠状态,且运行时间较长。若是,可以初步判定系统在持续地进行换页操作,kswapd0 进程占用了系统大量 CPU 资源。 您可以通过 free 、ps 等指令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。 针对系统当前内存不足的问题,您可以重启 Apache,释放内存。 说明:从长远的角度来看,您需要对内存进行升级。 带宽跑满或跑高的分析处理 对于正常进程导致的带宽跑满或跑高的问题,需要对服务器的带宽进行升级。对于异常进程,有可能是由于恶意程序问题,或者是部分 IP 恶意访问导致,也可能是服务遭到了 CC 攻击。 通常情况下,您可以使用 iftop 工具或 nethogs 查看流量的占用情况,进而定位到具体的进程。 使用 iftop 工具排查 在服务器内部安装 iftop 流量监控工具。 yum install iftop -y 服务器外网带宽被占满时,如果通过远程无法登陆,可通过阿里云终端管理进入到服务器内部,运行下面命令查看流量占用情况: iftop -i eth1 -P 注意:-P 参数将会显示请求端口。执行 iftop -i eth0 -P 命令,可以查看通过服务器哪个端口建立的连接,以及内网流量。举例如下: 在上图中,您可以查看到流量高耗的是服务器上 53139 端口和 115.205.150.235 地址建立的连接。 执行 netstat 命令反查 53139 端口对应的进程。 netstat -tunlp |grep 53139 经反查,服务器上 vsftpd 服务产生大量流量,您可以通过停止服务或使用 iptables 服务来对指定地址进行处理,如屏蔽 IP 地址或限速,以保证服务器带宽能够正常使用。 使用 nethogs 进行排查 在服务器内部安装 nethogs 流量监控工具。 yum install nethogs -y 通过 nethogs 工具来查看网卡上进程级的流量信息,若未安装可以通过 yum、apt-get 等方式安装。举例如下: 若 eth1 网卡跑满,执行命令 nethogs eth1。 查看每个进程的网络带宽情况以及进程对应的 PID。 确定导致带宽跑满或跑高的具体进程。 若进程确定是恶意程序,可以通过执行 kill -TERM <PID> 来终止程序。 说明: 如果是 Web 服务程序,您可以使用 iftop 等工具来查询具体 IP 来源,然后分析 Web 访问日志是否为正常流量。日志分析可以使用 logwatch 或 awstats 等工具进行。 使用 Web 应用防火墙防御 CC 攻击 若您的服务遭受了 CC 攻击,请在 Web 应用防火墙控制台尽快开启 CC 安全防护。 登录 Web应用防火墙 控制台。 在 CC 安全防护中,启动状态按钮,并在模式中选择 正常。

小川游鱼 2019-12-02 00:15:14 0 浏览量 回答数 0

回答

进程关联线程数统计说明 Linux 系统下,可以通过以下三种方式查询应用程序(进程)创建了多少线程(thread)。 通过 /proc/$PID/status 进行查看 通过 /proc/$PID/task 目录下的目录数判断线程数量 通过 ps 命令统计线程 通过 /proc/$PID/status 进行查看 首先,通过 ps 等指令,查询目标进程的进程 ID(PID): # 以 ssh 进程为例 ps -ef | grep sshroot        874     1  0 May31 ?        00:00:01 /usr/sbin/sshd -Droot       3957   874  0 09:59 ?        00:00:00 sshd: root@pts/0root       3993  3959  0 09:59 pts/0    00:00:00 grep —color=auto ssh # 第二列即为相应进程的 PID 号 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式:cat /proc/$PID/status 示例: $ cat /proc/874/status | grep  ThreadThreads:    1 # 说明当前该进程创建的线程数为 1 通过 /proc/$PID/task 目录下的目录数判断线程数量 进程每创建一个线程,系统会在 /proc/$PID/task 目录下创建一个子目录,目录名即为线程 ID。通过统计相应进程对应 task目录下的子目录数量即可统计出线程数量。操作说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式: ls /proc/$PID/task | wc -l 示例: $ ls /proc/874/task | wc -l # 返回的数值即为相应进程创建的线程数。 通过 ps 命令统计线程tgps 通过 ps 指令也可以统计进程关联线程数。说明如下。 首先,同样的,参阅前述说明,通过 ps 等指令,查询目标进程的进程 ID(PID)。 然后,通过如下指令,结合相应进程的 PID 查询其已创建线程数: 格式: ps hH p $PID | wc -l 参数说明: -h 表示不显示标题 -H 表示显示进程的层级关系 $PID 是相应进程的进程号 示例: $ ps hH p 874 | wc -l # 返回的数值即为相应进程创建的线程数。 Linux 系统无法创建线程错误原因及解决方法 问题描述:  业务软件或系统日志中可能出现类似如下日志信息:   unable to create new native thread 问题分析:  出现该错误,通常是由于系统无法创建更多进程所致。可以使用如下指令查看当前系统最大可创建线程数。 指令: ulimit -a | grep 示例输出: $ ulimit -a | grep  processesmax user processes (-u) 7812# max user processes   右侧的数值即表示当前单用户可创建的最大线程总数 处理办法:  根据操作系统的不同,可以参阅 该文档修改系统配置文件,调整最大可创建进程数。

278835030529486151 2019-12-02 01:27:52 0 浏览量 回答数 0

问题

云服务器 ECS Linux 系统进程关联线程数统计及调整说明是什么

boxti 2019-12-01 22:02:43 1133 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站 阿里云双十一主会场 阿里云双十一新人会场 1024程序员加油包 阿里云双十一拼团会场 场景化解决方案 阿里云双十一直播大厅