[转帖]设置帐户资源限制 提高应用系统性能_OpenStack, 云计算等杂项讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  OpenStack, 云计算等杂项讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4600 | 回复: 0   主题: [转帖]设置帐户资源限制 提高应用系统性能        上一篇   下一篇 
white
注册用户
等级:少校
经验:1327
发帖:305
精华:0
注册:2011-7-21
状态:离线
发送短消息息给white 加好友    发送短消息息给white 发消息
发表于: IP:您无权察看 2011-9-8 17:05:47 | [全部帖] [楼主帖] 楼主

出于某些原因,可能需要对某些帐户的资源,进行一些特定的限制。如出于安全角度的考虑,要对帐户每小时能够发出的查询数、帐户每个小时可以连接服务器的次数等等进行限制。这不但可以提高服务器的安全系数,而且还可以提高应用系统的性能。

北京联动北方科技有限公司

    一、针对特定的服务器资源施加限制

    在MySQL数据库中,数据库管理员可以根据需要对某个帐户实施资源限制策略。当然,无法做到对全部资源进行限制,实际工作中也没有这个必要。通常情况下,只需要对如下几个资源进行限制即可。一是账户每个小时可以连接服务器的次数,二是账户每个小时可以翻出的更新数,三是每个小时可以发出的查询数,四是每个帐户可以同时连接服务器的连接数。通常情况下,这已经可以满足大部分用户的需求。

    这里需要注意,以上的限制都是针对特定的帐户而言,而不是客户端。如每个帐户可以同时连接服务器的连接数这个限制,是针对账户。如现在一个账户可能在同一时间从多个客户端连接到数据库服务器。此时客户端的数量就要大于这个连接数了。为此,用户需要牢记,笔者这里谈到的资源限制,针对的是账户,而不是客户端。

    如果用户需要查询某个账户是否设置了相关的资源限制,则可以通过如上图所示的语句进行查询。如果查询的值为0,则表示没有添加任何的限制。如果有非0的数字,则表示添加了相关的限制策略。如上图所示的结果,表示这个账户没有添加资源使用限制。

    二、账户资源限制的使用注意事项

    在使用这个措施来限制账户资源使用时,需要注意,这个策略严格限于全局,而不允许管理具体的账户。并且,这个策略只限制使用单一账户同时连接的数量,而不是客户端连接后的操作。这种限制措施,在针对互联网的应用程序非常的有效。

    另外在设置这个资源使用限制措施时,还需要注意与用户账户的权限挂钩。如现在某个用户只有数据查询的权限,而在资源使用限制时,却给其做了“账户每小时可以发出的更新数”的限制,这不是脱了裤子放屁吗?这就在提醒数据库管理员,在设置资源限制措施时要注意用户账户的权限问题。

    多个客户端的同一账户操作,其使用情况会被合并。如现在有一个用户,其被限制为“账户每小时连接服务器的次数”为5次。如果其在一个客户端上连接了3次,然后再在另外一个客户端上使用同一个账户连接3次,这会被允许呢?答案是否定的。服务器在运行过程中,会统计每个账户使用资源的次数。如果账户在最后一个小时的连接次数达到限制,那么这个账户的进一步连接就会被限制。类似的,如果账户达到查询或者更新次数的限制,进一步查询或者更新就会被拒绝。服务器会给出相关的错误提示。不过需要注意的是,这个资源的统计是根据每个账户来进行的,而不是根据每个客户端来展开。如笔者上面列举的这个案例。如果用户允许每小时连接的服务器次数为5次,那么这个用户就不能够更换客户端让这个连接次数增加为10次。这就是MySQL数据库一种防止舞弊的措施。如果通过客户端来统计资源的使用情况,就会出现上面这种情形的舞弊。在使用Grant语句来设置资源限制时,可以使用With子句来命名每个要限制的资源和根据每小时计数的限制值。

    三、计数器清零

    ��面资源的统计,其实是通过数据库内部的一个计数器来完成的。不过在某些特定的情况下,可能需要对这个计数器进行清零的操作。如对某个账户设置了资源限制之后,数据库管理员可能需要进行测试,来判断这个计数器是否起作用。在进行测试时,就会耗用账户的资源。测试完成后给用户使用时,就需要对这个账户对应的计数器来一个清零的操作。否则的话,肯定会受到用户的抱怨。

    在MySQL数据库中,可以为所有账户从全局重设当前的每小时资源使用数量,即重置计数器,或者单独重设某个特定的账户。如果数据库管理员需要为所有账户从全局角度将计数器重置为0,则可以执行Flush User_Resources语句。执行这个语句之后,会将所有账户的计数器重置为0。如果需要对某个具体账户的计数器进行调整,则这里可以使用Grant Usage语句来实现。

    不过这里需要注意,计数器重置对账户连接数这个限制措施不会有影响。因为这个并不是按小时,而是指同一时间一个账户的连接数量。通常情况下,当服务器重新启动时所有的计数器都会清零。

     四、具��应用解析

    现在企业有一个基于B/S架构的OA系统。为了提高应用系统的安全与性能,就要限制资源的使用。如笔者为了防止病毒或者木马通过多次连接服务器,来消耗服务器的资源。笔者就做了一个“账户每小时可以连接服务器的次数”的限制措施。账户每小时最多可以连接服务器10次,也就是说平均没6分钟一次。其实这已经足够了。正常情况下,用户连接上服务器之后,一般是不会再断开了。也就是说,一小时就可能连接服务期一次。如果这个连接的次数设置的过多,或者不加限制,反而会给病毒或者木马程序可乘之机




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论