[发明专利]一种服务程序线程管理方法在审
申请号: | 201510295241.8 | 申请日: | 2015-06-02 |
公开(公告)号: | CN104850460A | 公开(公告)日: | 2015-08-19 |
发明(设计)人: | 张伟 | 申请(专利权)人: | 上海斐讯数据通信技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 上海信好专利代理事务所(普通合伙) 31249 | 代理人: | 张妍;张静洁 |
地址: | 201620 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 服务 程序 线程 管理 方法 | ||
技术领域
本发明涉及一种服务程序线程管理方法。
背景技术
随着互联网技术的发展,服务器的作用越来越大,服务端程序的性能要求也越来越高。现在的服务器需要同时服务很多的客户端,为了提高服务器的服务能力,可以从硬件方面着手,也可以从软件方面着手,如果采用硬件方法的话,就是提升硬件的性能,比如:增加服务器的内存、采用更好的CPU和磁盘等,但是成本太高,代价太大,从软件方面的话,手段就更加丰富了,可以采用多线程、多进程、还可以优化算法等,最方便快捷的方式是采用多线程的方式,即每次有客户端请求,就创建一个新的线程与其通信。这样在客户端的数量不是特别大的情况下,可以有效提供服务,但是每个服务器都会有最大的服务能力,当客户端的数量超过一定限度的时候,由于创建的线程过多,系统无法及时调度太多的线程,会导致服务器对客户端的相应速度太慢,通常还会有很多的不活跃的客户端,一般是用户忘记关闭客户端程序,导致客户端程序始终连接着服务器,占用着资源,使得所有客户端的服务质量都得不到保证,服务质量就会下降。
发明内容
本发明提供一种服务程序线程管理方法,可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
为了达到上述目的,本发明提供一种服务程序线程管理方法,在服务器中创建一个作为父线程的控制线程,该控制线程创建客户端的子线程、监控所有子线程的运行状态、以及回收非正常子线程。
当子线程的数量超过了系统能够处理的最大客户端接入量时,控制线程停止创建新的子线程;
所述的非正常子线程包含:CPU利用率超过阈值的子线程、内存使用量超过阈值的子线程、以及状态切换频率为零的子线程。
控制线程建立子线程状态表,将新建的子线程的状态添加到子线程状态表中。
所述的子线程状态表包含子线程的CPU利用率、子线程的内存使用量、子线程的当前状态、子线程的状态切换次数值和子线程的状态切换频率。
所述的子线程的当前状态包含:运行、挂起、睡眠、阻塞、终止。
控制线程通过系统调用接口获取子线程的CPU利用率和子线程的内存使用量,每一个子线程在进行状态切换后,都会更新该子线程在子线程状态表中所对应的子线程的当前状态和子线程的状态切换次数值,控制线程根据子线程在单位时间内的状态切换次数值去计算出子线程的状态切换频率。
所述的系统能够处理的最大客户端接入量是由测试得到的数据。
所述的控制线程创建一个定时器线程,该定时器线程设定轮询时间,用于控制线程定时轮询子线程状态表。
所述的CPU利用率的阈值为5%,所述的内存使用量的阈值为5%。
本发明可以有效检测非正常的客户端连接,结束这些客户端的子线程,从而释放服务器资源,在不提高硬件成本的基础上提高服务质量。
附图说明
图1是本发明的一个实施例的流程图。
具体实施方式
以下根据图1,具体说明本发明的较佳实施例。
如图1所示,本发明提供一种服务程序线程管理方法,包含以下步骤:
步骤S1、在服务器中创建一个控制线程,控制线程初始化子线程状态表,计算系统的最大内存和系统能够处理的最大客户端接入量;
所述的子线程状态表包含子线程的CPU利用率、子线程的内存使用量、子线程的当前状态、子线程的状态切换次数值和子线程的状态切换频率;
所述的子线程是由控制线程创建的,每一个子线程在进行状态切换后,都会更新该子线程在子线程状态表中所对应的当前状态(子线程的当前状态包含:运行、挂起、睡眠、阻塞、终止)和状态切换次数值,控制线程通过系统调用接口获取子线程的CPU利用率和子线程的内存使用量,控制线程根据子线程的状态切换次数值去计算出子线程的状态切换频率(比如在1个小时内,状态切换次数有5次,则该子线程的状态切换频率为5次/每小时);
所述的系统能够处理的最大客户端接入量是由测试得到的数据,该数据保存在系统的数据库中或者配置文件中;
步骤S2、控制线程创建一个定时器线程;
该定时器线程设定轮询时间,用于定时轮询子线程状态表;
步骤S3、控制线程判断是否收到客户端接入请求,如果是,进行步骤S4;
步骤S4、控制线程判断接入系统的客户端数量是否大于最大客户端接入量,如果是,进行步骤S5,如果否,进行步骤S6;
步骤S5、控制线程拒绝该客户端接入请求,进行步骤S3;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海斐讯数据通信技术有限公司,未经上海斐讯数据通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510295241.8/2.html,转载请声明来源钻瓜专利网。