CN104850460A - 一种服务程序线程管理方法 - Google Patents
一种服务程序线程管理方法 Download PDFInfo
- Publication number
- CN104850460A CN104850460A CN201510295241.8A CN201510295241A CN104850460A CN 104850460 A CN104850460 A CN 104850460A CN 201510295241 A CN201510295241 A CN 201510295241A CN 104850460 A CN104850460 A CN 104850460A
- Authority
- CN
- China
- Prior art keywords
- thread
- sub
- management method
- state
- service routine
- 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
Abstract
一种服务程序线程管理方法,在服务器中创建一个作为父线程的控制线程,该控制线程创建客户端的子线程、监控所有子线程的运行状态、以及回收非正常子线程。本发明可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
Description
技术领域
本发明涉及一种服务程序线程管理方法。
背景技术
随着互联网技术的发展,服务器的作用越来越大,服务端程序的性能要求也越来越高。现在的服务器需要同时服务很多的客户端,为了提高服务器的服务能力,可以从硬件方面着手,也可以从软件方面着手,如果采用硬件方法的话,就是提升硬件的性能,比如:增加服务器的内存、采用更好的CPU和磁盘等,但是成本太高,代价太大,从软件方面的话,手段就更加丰富了,可以采用多线程、多进程、还可以优化算法等,最方便快捷的方式是采用多线程的方式,即每次有客户端请求,就创建一个新的线程与其通信。这样在客户端的数量不是特别大的情况下,可以有效提供服务,但是每个服务器都会有最大的服务能力,当客户端的数量超过一定限度的时候,由于创建的线程过多,系统无法及时调度太多的线程,会导致服务器对客户端的相应速度太慢,通常还会有很多的不活跃的客户端,一般是用户忘记关闭客户端程序,导致客户端程序始终连接着服务器,占用着资源,使得所有客户端的服务质量都得不到保证,服务质量就会下降。
发明内容
本发明提供一种服务程序线程管理方法,可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
为了达到上述目的,本发明提供一种服务程序线程管理方法,在服务器中创建一个作为父线程的控制线程,该控制线程创建客户端的子线程、监控所有子线程的运行状态、以及回收非正常子线程。
当子线程的数量超过了系统能够处理的最大客户端接入量时,控制线程停止创建新的子线程;
所述的非正常子线程包含:CPU利用率超过阈值的子线程、内存使用量超过阈值的子线程、以及状态切换频率为零的子线程。
控制线程建立子线程状态表,将新建的子线程的状态添加到子线程状态表中。
所述的子线程状态表包含子线程的CPU利用率、子线程的内存使用量、子线程的当前状态、子线程的状态切换次数值和子线程的状态切换频率。
所述的子线程的当前状态包含:运行、挂起、睡眠、阻塞、终止。
控制线程通过系统调用接口获取子线程的CPU利用率和子线程的内存使用量,每一个子线程在进行状态切换后,都会更新该子线程在子线程状态表中所对应的子线程的当前状态和子线程的状态切换次数值,控制线程根据子线程在单位时间内的状态切换次数值去计算出子线程的状态切换频率。
所述的系统能够处理的最大客户端接入量是由测试得到的数据。
所述的控制线程创建一个定时器线程,该定时器线程设定轮询时间,用于控制线程定时轮询子线程状态表。
所述的CPU利用率的阈值为5%,所述的内存使用量的阈值为5%。
本发明可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
附图说明
图1是本发明的一个实施例的流程图。
具体实施方式
以下根据图1,具体说明本发明的较佳实施例。
如图1所示,本发明提供一种服务程序线程管理方法,包含以下步骤:
步骤S1、在服务器中创建一个控制线程,控制线程初始化子线程状态表,计算系统的最大内存和系统能够处理的最大客户端接入量;
所述的子线程状态表包含子线程的CPU利用率、子线程的内存使用量、子线程的当前状态、子线程的状态切换次数值和子线程的状态切换频率;
所述的子线程是由控制线程创建的,每一个子线程在进行状态切换后,都会更新该子线程在子线程状态表中所对应的当前状态(子线程的当前状态包含:运行、挂起、睡眠、阻塞、终止)和状态切换次数值,控制线程通过系统调用接口获取子线程的CPU利用率和子线程的内存使用量,控制线程根据子线程的状态切换次数值去计算出子线程的状态切换频率(比如在1个小时内,状态切换次数有5次,则该子线程的状态切换频率为5次/每小时);
所述的系统能够处理的最大客户端接入量是由测试得到的数据,该数据保存在系统的数据库中或者配置文件中;
步骤S2、控制线程创建一个定时器线程;
该定时器线程设定轮询时间,用于定时轮询子线程状态表;
步骤S3、控制线程判断是否收到客户端接入请求,如果是,进行步骤S4;
步骤S4、控制线程判断接入系统的客户端数量是否大于最大客户端接入量,如果是,进行步骤S5,如果否,进行步骤S6;
步骤S5、控制线程拒绝该客户端接入请求,进行步骤S3;
步骤S6、控制线程创建服务于客户端的子线程,更新子线程状态表,将新建的子线程的状态添加到子线程状态表中,进行步骤S7;
步骤S7、控制线程判断是否达到了轮询时间,如果是,进行步骤S8,如果否,进行步骤S3;
步骤S8、控制线程轮询子线程状态表,判断所有子线程的状态,结束非正常子线程,维持正常子线程,进行步骤S3;
所述的非正常子线程包含:子线程的CPU利用率超过阈值,或者子线程的内存使用量超过阈值,或者子线程的状态切换频率为零;
子线程的CPU利用率不能超过总性能的5%,因此CPU利用率的阈值为5%;
子线程的内存使用量也不能超过5%,因此内存使用量的阈值为5%;
如果一个子线程被创建后,其CPU利用率和内存使用量很高,超出了正常的客户端的请求率,控制线程会认为该客户端是不法客户端,可能是在攻击服务器,消耗服务器资源,服务器的控制线程会将该子线程回收;或者一个子线程被创建后,其状态切换频率在某个一时间段后为零,则认为该客户端已经不活跃了,则服务器的控制线程会释放连接,也回收该子线程;
所述的正常子线程包含:除了非正常子线程之外的其他子线程。
本发明可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (8)
1.一种服务程序线程管理方法,其特征在于,在服务器中创建一个作为父线程的控制线程,该控制线程创建客户端的子线程、监控所有子线程的运行状态、以及回收非正常子线程;
当子线程的数量超过了系统能够处理的最大客户端接入量时,控制线程停止创建新的子线程;
所述的非正常子线程包含:CPU利用率超过阈值的子线程、内存使用量超过阈值的子线程、以及状态切换频率为零的子线程。
2.如权利要求1所述的服务程序线程管理方法,其特征在于,控制线程建立子线程状态表,将新建的子线程的状态添加到子线程状态表中。
3.如权利要求2所述的服务程序线程管理方法,其特征在于,所述的子线程状态表包含子线程的CPU利用率、子线程的内存使用量、子线程的当前状态、子线程的状态切换次数值和子线程的状态切换频率。
4.如权利要求3所述的服务程序线程管理方法,其特征在于,所述的子线程的当前状态包含:运行、挂起、睡眠、阻塞、终止。
5.如权利要求3所述的服务程序线程管理方法,其特征在于,控制线程通过系统调用接口获取子线程的CPU利用率和子线程的内存使用量,每一个子线程在进行状态切换后,都会更新该子线程在子线程状态表中所对应的子线程的当前状态和子线程的状态切换次数值,控制线程根据子线程在单位时间内的状态切换次数值去计算出子线程的状态切换频率。
6.如权利要求1所述的服务程序线程管理方法,其特征在于,所述的系统能够处理的最大客户端接入量是由测试得到的数据。
7.如权利要求5所述的服务程序线程管理方法,其特征在于,所述的控制线程创建一个定时器线程,该定时器线程设定轮询时间,用于控制线程定时轮询子线程状态表。
8.如权利要求1所述的服务程序线程管理方法,其特征在于,所述的CPU利用率的阈值为5%,所述的内存使用量的阈值为5%。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510295241.8A CN104850460A (zh) | 2015-06-02 | 2015-06-02 | 一种服务程序线程管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510295241.8A CN104850460A (zh) | 2015-06-02 | 2015-06-02 | 一种服务程序线程管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104850460A true CN104850460A (zh) | 2015-08-19 |
Family
ID=53850117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510295241.8A Pending CN104850460A (zh) | 2015-06-02 | 2015-06-02 | 一种服务程序线程管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104850460A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975325A (zh) * | 2016-04-22 | 2016-09-28 | 浙江工业大学 | 一种自动跳出阻塞式代码段的控制方法 |
CN107690625A (zh) * | 2017-03-16 | 2018-02-13 | 深圳大趋智能科技有限公司 | iOS线程恢复的方法及装置 |
CN108228420A (zh) * | 2017-12-20 | 2018-06-29 | 新华三技术有限公司 | Io监控的方法、装置和io监控的实现装置 |
WO2018133713A1 (zh) * | 2017-01-23 | 2018-07-26 | 阿里巴巴集团控股有限公司 | 一种线程管理方法及装置 |
CN108984321A (zh) * | 2018-06-29 | 2018-12-11 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032813A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032814A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109032812A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109471716A (zh) * | 2018-09-26 | 2019-03-15 | 努比亚技术有限公司 | 一种应用线程处理方法、终端及计算机可读存储介质 |
CN109992381A (zh) * | 2017-12-30 | 2019-07-09 | 中国移动通信集团四川有限公司 | 进程拆分判别方法、装置、设备及介质 |
CN111666136A (zh) * | 2020-04-24 | 2020-09-15 | 北京奇艺世纪科技有限公司 | 线程处理方法、装置、电子设备及存储介质 |
CN112100017A (zh) * | 2019-06-17 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 一种内存资源监控方法及装置 |
CN112559160A (zh) * | 2021-02-19 | 2021-03-26 | 智道网联科技(北京)有限公司 | 地图引擎多线程的控制方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987792A (zh) * | 2006-12-20 | 2007-06-27 | 金魁 | 高级多线程管理的应用系统 |
CN102436404A (zh) * | 2011-08-24 | 2012-05-02 | 苏州阔地网络科技有限公司 | 一种进程守护方法 |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN102567089A (zh) * | 2011-10-25 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中元数据服务器线程池的设计方法 |
CN103513962A (zh) * | 2012-06-29 | 2014-01-15 | 上海宝信软件股份有限公司 | 基于小型机的电力scada并行控制方法 |
-
2015
- 2015-06-02 CN CN201510295241.8A patent/CN104850460A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987792A (zh) * | 2006-12-20 | 2007-06-27 | 金魁 | 高级多线程管理的应用系统 |
CN102436404A (zh) * | 2011-08-24 | 2012-05-02 | 苏州阔地网络科技有限公司 | 一种进程守护方法 |
CN102567089A (zh) * | 2011-10-25 | 2012-07-11 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中元数据服务器线程池的设计方法 |
CN102546437A (zh) * | 2012-02-20 | 2012-07-04 | 南京邮电大学 | 一种面向物联网平台的套接字实现方法 |
CN103513962A (zh) * | 2012-06-29 | 2014-01-15 | 上海宝信软件股份有限公司 | 基于小型机的电力scada并行控制方法 |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975325A (zh) * | 2016-04-22 | 2016-09-28 | 浙江工业大学 | 一种自动跳出阻塞式代码段的控制方法 |
WO2018133713A1 (zh) * | 2017-01-23 | 2018-07-26 | 阿里巴巴集团控股有限公司 | 一种线程管理方法及装置 |
CN107690625A (zh) * | 2017-03-16 | 2018-02-13 | 深圳大趋智能科技有限公司 | iOS线程恢复的方法及装置 |
CN107690625B (zh) * | 2017-03-16 | 2022-02-11 | 深圳大趋智能科技有限公司 | iOS线程恢复的方法及装置 |
CN108228420A (zh) * | 2017-12-20 | 2018-06-29 | 新华三技术有限公司 | Io监控的方法、装置和io监控的实现装置 |
CN109992381A (zh) * | 2017-12-30 | 2019-07-09 | 中国移动通信集团四川有限公司 | 进程拆分判别方法、装置、设备及介质 |
CN109032812B (zh) * | 2018-06-29 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032812A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032814A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109032814B (zh) * | 2018-06-29 | 2020-10-02 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的监控方法、存储介质 |
CN109032813A (zh) * | 2018-06-29 | 2018-12-18 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109032813B (zh) * | 2018-06-29 | 2021-01-26 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN108984321A (zh) * | 2018-06-29 | 2018-12-11 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109471716A (zh) * | 2018-09-26 | 2019-03-15 | 努比亚技术有限公司 | 一种应用线程处理方法、终端及计算机可读存储介质 |
CN112100017A (zh) * | 2019-06-17 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 一种内存资源监控方法及装置 |
CN112100017B (zh) * | 2019-06-17 | 2023-07-21 | 腾讯科技(深圳)有限公司 | 一种内存资源监控方法及装置 |
CN111666136A (zh) * | 2020-04-24 | 2020-09-15 | 北京奇艺世纪科技有限公司 | 线程处理方法、装置、电子设备及存储介质 |
CN112559160A (zh) * | 2021-02-19 | 2021-03-26 | 智道网联科技(北京)有限公司 | 地图引擎多线程的控制方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104850460A (zh) | 一种服务程序线程管理方法 | |
CN106412091A (zh) | 数据传输的控制方法、装置及系统 | |
US8745129B2 (en) | Client with standby server connection function and method thereof | |
CN104601366B (zh) | 一种控制、服务节点配置服务的方法及装置 | |
CN105898554A (zh) | 实时转码的监控方法和实时转码系统 | |
US9292371B1 (en) | Systems and methods for preventing failures of nodes in clusters | |
CN104142844A (zh) | 一种清理移动终端进程的方法及装置 | |
CN109756417A (zh) | 离线消息分发方法、服务器及存储介质 | |
CN110795284B (zh) | 一种数据恢复方法、装置、设备及可读存储介质 | |
CN106454498B (zh) | Android平台管理USB设备的方法 | |
EP3190771A1 (en) | Method and device for managing instant communication application program, and mobile terminal thereof | |
CN103150241A (zh) | 多服务器状态监控管理系统和方法 | |
CN113905005A (zh) | 即时通讯的客户端状态更新方法和装置 | |
CN106452966A (zh) | 一种OpenStack云桌面的多网关管理的实现方法 | |
CN114675983A (zh) | 业务数据处理方法、装置、存储介质以及电子设备 | |
CN103577306A (zh) | 云平台中主动式探测的高可用软件运行方法 | |
CN104780062A (zh) | 一种快速获取bmc管理网口ip地址的方法 | |
US10785309B2 (en) | Session monitoring method, apparatus, and system | |
US9853933B2 (en) | Message queue replication with message ownership migration | |
CN105094945A (zh) | 虚拟化平台线程控制方法、设备和系统 | |
CN112987904A (zh) | 一种心跳控制方法和装置 | |
CN112887407A (zh) | 用于分布式集群的作业流量控制方法和装置 | |
CN107092551A (zh) | 一种服务器系统性能优化方法及装置 | |
CN105357387A (zh) | 一种唤醒终端的方法、装置及系统 | |
CN103684875A (zh) | 过载保护方法以及设备过载保护装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150819 |