CN108959032A - 一种服务器业务指标的实时监视方法、装置及电子设备 - Google Patents
一种服务器业务指标的实时监视方法、装置及电子设备 Download PDFInfo
- Publication number
- CN108959032A CN108959032A CN201810721087.XA CN201810721087A CN108959032A CN 108959032 A CN108959032 A CN 108959032A CN 201810721087 A CN201810721087 A CN 201810721087A CN 108959032 A CN108959032 A CN 108959032A
- Authority
- CN
- China
- Prior art keywords
- queue
- tail
- update
- value
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
Abstract
本发明的实施例公开一种服务器业务指标的实时监视方法、装置及电子设备,涉及互联网服务器开发领域,能够解决在线程竞争激烈的情况下,采用加锁的方式获取服务器程序内部的各种指标导致性能损失,成本提高的问题。所述方法包括通过各业务线程生成对应于各自的监控指标更新请求的更新指令;通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信。本发明适用于在多线程,不加锁的条件下,得到一个精确指标,实现高性能监控。
Description
技术领域
本发明涉及互联网服务器开发领域,尤其涉及一种服务器业务指标的实时监视方法、装置及电子设备。
背景技术
互联网服务器一般都是7*24小时提供服务,其稳定性非常重要,通常会对服务器程序内部的各种指标进行监控,比如请求数、响应时间、返回数据数等。监控的目的是为了及时发现问题,给出有效的解决方法,保障服务的稳定运行。在单线程服务器中,输出这些指标是很简单的,但单线程不能有效的利用CPU,处理能力低下。
多线程处理是目前的服务器程序的通用架构,但多线程下会导致不同的线程存在竞争关系,导致统计的指标不准确。某些情况下,竞争不激烈的条件下,是可以得到一个大概的数据指标的,也能反映当前服务器的一些情况。但竞争激烈的情况下,指标无法反映一个真实的情况。通常的做法是采用加锁的方式解决竞争导致的数据不准确问题,但加锁会带来性能的损失,带来成本的提高。
发明内容
有鉴于此,本发明实施例提供一种服务器业务指标的实时监视方法、装置及电子设备,用于解决在线程竞争激烈的情况下,采用加锁的方式获取服务器程序内部的各种指标导致性能损失,成本提高的问题。
第一方面,本发明实施例提供一种服务器业务指标的实时监视方法,包括:
通过各业务线程生成对应于各自的监控指标更新请求的更新指令;其中,所述更新指令包括目标监控指标及更新方法;
通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信;
启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
结合第一方面,在第一方面的第一种实施方式中,所述通过各业务线程将各自生成的更新指令写入预先建立的更新队列中,包括:
通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值;
通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值;
判断本次记录所述第二队尾值的业务线程记录的所述第二队尾值是否等于第一队尾值;
若第二队尾值等于第一队尾值,则通过本次记录所述第二队尾值的业务线程将所述更新指令写入所述更新队列的队尾并使队尾值增1;
其中,所述通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值,并判断所述第二队尾值是否等于第一队尾值,随后根据判断结果将本次记录所述第二队尾值的业务线程生成的更新指令写入所述更新队列的步骤为原子操作。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,若第二队尾值不等于第一队尾值,则返回执行所述通过各业务线程同时读取所述更新队列的队尾值的步骤。
结合第一方面的第一种实施方式,在第一方面的第三种实施方式中,所述更新队列为顺序队列或循环队列。
结合第一方面、第一方面的第一种实施方式、第一方面的第二种实施方式或第一方面的第三种实施方式,在第一方面的第四种实施方式中,所述启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新,包括:
启动所述更新线程从所述更新队列的队头中读取更新指令;
通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。
第二方面,本发明实施例提供一种服务器业务指标的实时监视装置,包括:
更新指令生成模块,用于通过各业务线程生成对应于各自的监控指标更新请求的更新指令;其中,所述更新指令包括目标监控指标及更新方法;
写入模块,用于通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信;
更新模块,用于启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
结合第二方面,在第二方面的第一种实施方式中,所述写入模块,包括:
第一读取子模块,用于通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值;
第二读取子模块,用于在第一读取子模块读取完后,通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值;
判断子模块,用于判断本次记录所述第二队尾值的业务线程记录的所述第二队尾值是否等于所述第一队尾值;
写入子模块,用于在所述判断子模块的判断结果为是时,通过本次记录所述第二队尾值的业务线程将其生成的更新指令写入所述更新队列的队尾并使队尾值增1;
其中,所述第二读取子模块、判断子模块和写入子模块共同实现将所述更新指令写入更新队列的原子操作。
结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述第一读取子模块,还用于在所述判断子模块的判断结果为否时,重新通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值。
结合第二方面、第二方面的第一种实施方式或第二方面的第二种实施方式,在第二方面的第三种实施方式中,所述更新模块,包括:
启动子模块,用于启动所述更新线程从所述更新队列的队头中读取更新指令;
执行子模块,用于通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。
第三方面,本发明实施例提供一种电子设备,包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述客户端的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行任一实施例所述的服务器业务指标的实时监视方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于由处理器加载并执行任一实施例所述的服务器业务指标的实时监视方法。
本发明实施例提供的一种服务器业务指标的实时监视方法及装置,通过预先通过更新队列与业务线程通信的更新线程,多个业务线程将更新指令写入更新队列,随后启动更新线程读取所述更新队列中的更新指令并对相应监控指标进行更新。本发明将指标的更新分解为提交指令,执行指令两个操作,执行更新的操作在单线程中运行,不会存在竞争的问题,避免了加锁带来的开销,显著提升服务器性能,节省了成本。本发明可以在多线程,不加锁的条件下,得到一个精确指标,实现高性能监控,输出的指标参数是真实准确的,可以实时真实的反映服务器内部运行状态,以便及时发现问题并做出处理,保证服务器的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的一种服务器业务指标的实时监视方法实施例一的流程图;
图2为本发明的一种服务器业务指标的实时监视方法实施例二的流程图;
图3为业务线程往更新队列中写入更新指令的示意图;
图4为更新线程从更新队列中取出更新指令的示意图
图5为本发明的一种服务器业务指标的实时监视装置实施例一的结构示意图;
图6为本发明的一种服务器业务指标的实时监视装置实施例二的结构示意图;
图7为本发明的一种服务器业务指标的实时监视装置实施例三的结构示意图。
图8为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例一种服务器业务指标的实时监视方法及装置进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明一种服务器业务指标的实时监视方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、通过各业务线程生成对应于各自的监控指标更新请求的更新指令。
其中,所述更新指令包括目标监控指标及更新方法。
正常情况下,服务器上的业务线程(通常有多个)直接更新监控指标,比如请求数加1,但多个线程同时操作请求数所在的内存,由于存在竞争会导致最终统计的数据不是真实的结果。本实施例中,服务器对于每个业务线程对应的更新请求,只让业务线程产生更新指令,更新指令中具体记录了更新哪个监控指标以及怎样更新的方法。
步骤102、通过各业务线程将各自生成的更新指令写入预先建立的更新队列中。
其中,所述业务线程通过所述更新队列与预先建立的单一更新线程通信。
本实施例中,服务器通过业务线程将要更新的监控指标以更新指令的方式放到更新队列中,比如:请求数加1、响应时间100与当前值求平均等等。随后通过一个独立的更新线程负责执行更新指令,这样就不存在竞争问题。
步骤103、启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
在一可选实施方式中,此步骤先启动所述更新线程从所述更新队列的队头中读取更新指令;随后通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。启动更新线程进行监控指标的更新,更新线程会从更新队列的队头开始读取更新指令进行执行,直到顺序读取完更新队列中的所有更新指令。
本实施例,通过将监控指标的更新分解为业务线程生成并提交更新指令,更新线程执行更新指令两个主要操作,执行更新的操作在单线程中运行,不会存在竞争的问题,避免了加锁带来的开销,能够解决现有的服务器处理多线程存在的数据不准确,加锁方式会带来性能损失的问题。
图2为本发明一种服务器业务指标的实时监视方法实施例二的流程图,如图2所示,本实施例的方法可以包括:
步骤201、通过各业务线程生成对应于各自的监控指标更新请求的更新指令。
本实施例中,步骤201的过程和上述方法实施例的步骤101类似,此处不再赘述。
步骤202、通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值。
本实施例中,更新队列的队尾值对于各个业务线程是可见的,各个业务线程可以读取更新队列当前的队尾值,并各自记录为第一队尾值。本实施例中,队尾值可为更新队列的队尾对应的序号,本领域技术人员可知:对于一个队列而言,其队尾指向一个空队列的头。例如:若当前更新队列中排队有5个更新指令,则当前更新队列的队尾值为6,意味着更新队列的第6个位置为空,可以往其中写入一个更新指令。
步骤203、通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值。
本实施例中,由于存在多个竞争线程需要更新队列的队尾值,而同一个队尾值只能写入一个更新指令,故在更新指令写入更新队列时,需要读取最新的更新队列的队尾值,便于和上一步骤中读取的第一队尾值进行比对,从而可判断是否存在竞争线程修改了更新队列的队尾值。由于存在竞争关系,该次读取中只能有一个线程能够读取到所述更新队列的队尾值,将该线程此次读取到的队尾值记为第二队尾值。
步骤204、判断本次记录所述第二队尾值的业务线程记录的第二队尾值是否等于第一队尾值,若是,则执行步骤205,否则,返回执行步骤202。
本实施例中,对于每个业务线程而言,若其读取到第二队尾值时,第二队尾值不等于第一队尾值,则返回执行通过业务线程读取所述更新队列的队尾值,并重新记录为第一队尾值的步骤,以将所述更新指令重新写入更新队列,直至当前业务线程将本次生成的更新指令成功写入更新队列中为止。
步骤205、通过本次记录所述第二队尾值的业务线程将其生成的更新指令写入所述更新队列的队尾,并使所述更新队列的队尾值增1。
本实施例中,步骤203-205为原子操作,该操作在执行完毕前不会被任何其他任务或事件打断,从而实现了CAS(Compare and Set)操作。即在执行步骤203-205时的业务线程,具有排他性。在多个并行业务线程都要往所述更新队列中写入更新指令时候,这些并行业务线程可以同时执行步骤202来读取更新队列的队尾值,随后从步骤203开始,只有一个业务线程能够读取更新队列的队尾值并判断第二队尾值是否等于第一队尾值。若当前某个业务线程执行了步骤203,读取并记录了第二队尾值,随后判断出第二队尾值等于第一队尾值,则该业务线程将自身生成的更新指令写入所述更新队列,若判断出第二队尾值不等于第一队尾值,表示在该业务线程首次读取到第一队尾值和第二次读取到第二队尾值之间,有其他线程往更新队列的队尾中写入了更新指令而导致更新队列的队尾值发生了改变,则需要返回执行步骤202使该业务线程重新读取队尾值以尝试重新写入自身生成的更新指令。业务线程在执行步骤203-205中不会被打断,直至该业务线程写入完成才会允许其他的业务线程执行步骤203。使得在不加锁的情况下,解决了多个线程同时写队列的同步问题。
在一可选实施方式中,预先设置的更新队列为顺序队列或循环队列。
下面采用一个具体的实施例,对图1~图2中任一个所示方法实施例的技术方案进行详细说明。
图3所示为业务线程往更新队列中写入更新指令的示意图,如图3中所示,最上面的第一幅图中,左侧有4个业务线程同时需要更新请求数指标,这4个业务线程各自产生更新指令,更新指令中要求把当前请求数加1,因为CAS的机制,会产生4个更新指令需要写入右侧的更新队列中。如图3中所示:A标识队列中已产生的更新指令的头,B标识队列中已产生的更新指令的尾巴,C标识更新队列的队尾(指向空队列的头),C所指位置可以放置下一条更新指令。图3中,一开始左侧有4个待写入的更新指令,4个业务线程同时读取更新队列的当前队尾值C=5(即执行图2所示步骤202),此时这4个业务线程各自记录的第一队尾值都为5;随后,4个业务线程中的一个业务线程例如第一业务线程读取并记录到第二队尾值为C′=5(而其他3个业务线程目前读取不了当前队尾值),第一业务线程判断出自己记录的第二队尾值C′等于第一队尾值C,则将其对应的更新指令写入右侧的更新队列中C=5的位置,随后将C=C+1=6,此时得到图3中第2个图所示的更新队列情况。第一业务线程将更新指令写入完毕后检查B的值是否等于C-1,若B=C-1,则更新指令写入完成,如果B不等于C-1,则设置B=C-1并返回检查直到判断出B=C-1,结束本次写入。如图3中的第2幅图所示,由于此时C=6,B=4,判断出B不等于C=1,则设置B=C-1=5,当设置成功后,更新队列的情况变为图3中最后一幅图所示,此时第一业务线程写入更新指令完成,退出操作。其他3个业务线程可竞争读取更新队列队尾值(执行上述步骤203),竞争成功的那个业务线程由于本次读取并记录到的第二队尾值为6,不等于之前读取的第一队尾值5,则需要返回执行步骤202,重新开始新一轮的队尾值读取工作。
图4所示为更新线程从更新队列中取出更新指令的示意图,类似于图3,图4中A标识队列中已产生的更新指令的头,B标识队列中已产生的更新指令的尾巴,C标识更新队列的队尾(指向空队列的头)。如图4中第一幅图所示,开始读取前更新队列中存储有4个更新指令,即初始值A=1,B=4。读取时更新线程会从A开始取指令,然后A往左顺序移动依次读取直到A=B,即:更新线程在队列中依次取出A-B中的四个指令。具体地,如图4中第二幅图所示,更新线程先读取A=1所示位置的更新指令,将该更新指令取出后,释放原来A=1位置的空间,将A=A+1=2(即图4中将A从初始状态位置往左移动一个更新指令位置)。如图4中第3-5幅图所示,按照这种方法依次读取从右往左第2、3、4位置的更新指令,当A=4时,由于A=B,则更新队列中的所有更新指令读取完成。本发明实施例中,因为更新线程只有一个,不存在竞争问题,可以直接操作内存更新数据。
图5为本发明一种服务器业务指标的实时监视装置实施例一的结构示意图,如图5所示,本实施例的装置可以包括:更新指令生成模块11、写入模块12和更新模块13;其中,更新指令生成模块11,用于通过各业务线程生成对应于各自的监控指标更新请求的更新指令;其中,所述更新指令包括目标监控指标及更新方法;写入模块12,用于通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信;更新模块13,用于启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本发明一种服务器业务指标的实时监视装置实施例二的结构示意图,如图6所示,本实施例的装置在图5所示装置结构的基础上,进一步地,写入模块12,包括:第一读取子模块121、第二读取子模块122、判断子模块123和写入子模块124;其中,第一读取子模块121,用于通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值;第二读取子模块122,用于在第一读取子模块121读取完后,通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值;判断子模块123,用于判断本次记录所述第二队尾值的业务线程记录的第二队尾值是否等于第一队尾值;写入子模块124,用于在判断子模块123的判断结果为是时,通过本次记录所述第二队尾值的业务线程将其生成的更新指令写入所述更新队列的队尾并使所述更新队列的队尾值增1。其中,第二读取子模块122、判断子模块123和写入子模块124共同实现将所述更新指令写入更新队列的原子操作。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
优选地,第一读取子模块121,还用于在判断子模块123的判断结果为否时,重新通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值,以将所述更新指令重新写入所述更新队列。
图7为本发明一种服务器业务指标的实时监视装置实施例三的结构示意图,如图7所示,本实施例的装置在图5所示装置结构的基础上,进一步地,更新模块13,包括:启动子模块131和执行子模块132;其中,启动子模块131,用于启动所述更新线程从所述更新队列的队头中读取更新指令;执行子模块132,用于通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。
本实施例的装置,可以用于执行图1或图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
对应于本发明实施例提供的服务器业务指标的实时监视方法,本发明实施例还提供一种电子设备,图8为本发明电子设备一个实施例的结构示意图,可以实现本发明图1或图2所示实施例的流程,如图8所示,上述电子设备可以包括:壳体21、处理器22、存储器23、电路板24和电源电路25,其中,电路板24安置在壳体21围成的空间内部,处理器22和存储器23设置在电路板24上;电源电路25,用于为上述电子设备的各个电路或器件供电;存储器23用于存储可执行程序代码;处理器22通过读取存储器23中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例的服务器业务指标的实时监视方法。
需要说明的是,本发明实施例同时也提供了一种存储介质,该存储介质用于存储应用程序,该应用程序用于在运行时执行图1和图2所示的一种服务器业务指标的实时监视方法中电子设备执行的操作。
需要说明的是,本发明实施例同时也提供了一种应用程序,该应用程序用于在运行时执行图1和图2所示的一种服务器业务指标的实时监视方法中电子设备执行的操作。
上述电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放模块(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种服务器业务指标的实时监视方法,其特征在于,包括:
通过各业务线程生成对应于各自的监控指标更新请求的更新指令;其中,所述更新指令包括目标监控指标及更新方法;
通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信;
启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
2.根据权利要求1所述的一种服务器业务指标的实时监视方法,其特征在于,所述通过各业务线程将各自生成的更新指令写入预先建立的更新队列中,包括:
通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值;
通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值;
判断本次记录所述第二队尾值的业务线程记录的所述第二队尾值是否等于第一队尾值;
若第二队尾值等于第一队尾值,则通过本次记录所述第二队尾值的业务线程将其生成的更新指令写入所述更新队列的队尾并使队尾值增1;
其中,所述通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值,并判断所述第二队尾值是否等于第一队尾值,随后根据判断结果将本次记录所述第二队尾值的业务线程生成的更新指令写入所述更新队列的步骤为原子操作。
3.根据权利要求2所述的一种服务器业务指标的实时监视方法,其特征在于,若第二队尾值不等于第一队尾值,则返回执行所述通过各业务线程同时读取所述更新队列的队尾值的步骤。
4.根据权利要求2所述的一种服务器业务指标的实时监视方法,其特征在于,所述更新队列为顺序队列或循环队列。
5.根据权利要求1-4任一项所述的一种服务器业务指标的实时监视方法,其特征在于,所述启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新,包括:
启动所述更新线程从所述更新队列的队头中读取更新指令;
通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。
6.一种服务器业务指标的实时监视装置,其特征在于,包括:
更新指令生成模块,用于通过各业务线程生成对应于各自的监控指标更新请求的更新指令;其中,所述更新指令包括目标监控指标及更新方法;
写入模块,用于通过各业务线程将各自生成的更新指令写入预先建立的更新队列中;所述业务线程通过所述更新队列与预先建立的单一更新线程通信;
更新模块,用于启动所述更新线程从所述更新队列中读取更新指令,进行相应监控指标的更新。
7.根据权利要求6所述的一种服务器业务指标的实时监视装置,其特征在于,所述写入模块,包括:
第一读取子模块,用于通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值;
第二读取子模块,用于在第一读取子模块读取完后,通过各业务线程尝试再次读取所述更新队列的队尾值,并使本次唯一读取到所述更新队列的队尾值的业务线程将本次读取的队尾值记为第二队尾值;
判断子模块,用于判断本次记录所述第二队尾值的业务线程记录的所述第二队尾值是否等于所述第一队尾值;
写入子模块,用于在所述判断子模块的判断结果为是时,通过本次记录所述第二队尾值的业务线程将其生成的更新指令写入所述更新队列的队尾并使队尾值增1;
其中,所述第二读取子模块、判断子模块和写入子模块共同实现将所述更新指令写入更新队列的原子操作。
8.根据权利要求7所述的一种服务器业务指标的实时监视装置,其特征在于,所述第一读取子模块,还用于在所述判断子模块的判断结果为否时,重新通过各业务线程同时读取所述更新队列的队尾值,并使各业务线程将本次读取的队尾值各自记为第一队尾值。
9.根据权利要求6-8任一项所述的一种服务器业务指标的实时监视装置,其特征在于,所述更新模块,包括:
启动子模块,用于启动所述更新线程从所述更新队列的队头中读取更新指令;
执行子模块,用于通过所述更新线程按照本次读取的更新指令中的更新方法更新本次读取的更新指令中指定的目标监控指标。
10.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述客户端的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1-5任一项所述的一种服务器业务指标的实时监视方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810721087.XA CN108959032A (zh) | 2018-06-29 | 2018-06-29 | 一种服务器业务指标的实时监视方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810721087.XA CN108959032A (zh) | 2018-06-29 | 2018-06-29 | 一种服务器业务指标的实时监视方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108959032A true CN108959032A (zh) | 2018-12-07 |
Family
ID=64485364
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810721087.XA Pending CN108959032A (zh) | 2018-06-29 | 2018-06-29 | 一种服务器业务指标的实时监视方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959032A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051279A (zh) * | 2021-03-05 | 2021-06-29 | 北京顺达同行科技有限公司 | 数据消息的存储方法、存储装置、电子设备及存储介质 |
CN113141235A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 处理数据的方法和相关装置 |
CN113051279B (zh) * | 2021-03-05 | 2024-05-10 | 北京顺达同行科技有限公司 | 数据消息的存储方法、存储装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153440A1 (en) * | 2003-01-30 | 2004-08-05 | Assaf Halevy | Unified management of queries in a multi-platform distributed environment |
CN105677849A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 数据更新方法和装置 |
CN106293973A (zh) * | 2016-08-17 | 2017-01-04 | 深圳市金证科技股份有限公司 | 无锁消息队列通信方法及系统 |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
-
2018
- 2018-06-29 CN CN201810721087.XA patent/CN108959032A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040153440A1 (en) * | 2003-01-30 | 2004-08-05 | Assaf Halevy | Unified management of queries in a multi-platform distributed environment |
CN105677849A (zh) * | 2016-01-06 | 2016-06-15 | 北京京东尚科信息技术有限公司 | 数据更新方法和装置 |
CN106293973A (zh) * | 2016-08-17 | 2017-01-04 | 深圳市金证科技股份有限公司 | 无锁消息队列通信方法及系统 |
CN107515795A (zh) * | 2017-09-08 | 2017-12-26 | 北京京东尚科信息技术有限公司 | 基于队列的多任务并行数据处理方法、装置、介质和设备 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113141235A (zh) * | 2020-01-20 | 2021-07-20 | 华为技术有限公司 | 处理数据的方法和相关装置 |
CN113141235B (zh) * | 2020-01-20 | 2022-07-22 | 华为技术有限公司 | 处理数据的方法和相关装置 |
CN113051279A (zh) * | 2021-03-05 | 2021-06-29 | 北京顺达同行科技有限公司 | 数据消息的存储方法、存储装置、电子设备及存储介质 |
CN113051279B (zh) * | 2021-03-05 | 2024-05-10 | 北京顺达同行科技有限公司 | 数据消息的存储方法、存储装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN205176828U (zh) | 条件分支预测器逻辑单元 | |
US8997059B2 (en) | Reverse debugging | |
CN105095287B (zh) | Lsm数据合并排序方法和装置 | |
US9454460B2 (en) | Methods, systems, and media for providing determinism in multithreaded programs | |
US7793263B2 (en) | Decision support tool for interleaving review software testing | |
CN102947804B (zh) | 当追踪数据处理系统时的键配置 | |
US9086911B2 (en) | Multiprocessing transaction recovery manager | |
CN104750459A (zh) | 带有事务功能以及报告事务操作的日志记录电路的处理器 | |
CN114443142A (zh) | 循环指令处理方法、装置、芯片、电子设备及存储介质 | |
JP6937759B2 (ja) | データベース操作方法及び装置 | |
US20080005537A1 (en) | Quantifying core reliability in a multi-core system | |
JP2013077063A (ja) | データ管理プログラム、ノード、および分散データベースシステム | |
CN108959032A (zh) | 一种服务器业务指标的实时监视方法、装置及电子设备 | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
WO2019094072A1 (en) | Lock-free asynchronous buffer | |
US20180329900A1 (en) | Prediction models for concurrency control types | |
JP2016110318A (ja) | 情報記録装置、方法およびプログラム | |
CN109815118A (zh) | 数据库管理方法及装置、电子设备和计算机可读存储介质 | |
Ferris et al. | WalkSAT as an Informed Heuristic to DPLL in SAT Solving | |
US20140325271A1 (en) | Terminal device, information processing method, and computer program product | |
CN113468047B (zh) | 基于启发式规则的并发式自适应随机测试方法 | |
US20100042864A1 (en) | System and method for managing application | |
CN116737400B (zh) | 一种队列数据处理方法、装置及相关设备 | |
CN109885475A (zh) | 页面转化率计算方法、装置、计算机设备及存储介质 | |
CN109032672A (zh) | 低延迟指令调度器及过滤猜测访问方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181207 |