访问日志IO性能优化

340 篇文章 0 订阅
53 篇文章 0 订阅

在高并发量的场景下磁盘IO往往是性能的瓶颈所在,访问日志涉及到频繁的写操作,所以这部分要尽可能地优化,不然将拖累系统的整体性能。针对文件记录及数据库记录两种方式可以有以下措施提高写性能,

l 避免频繁的打开关闭文件。将日志写入文件的一般操作步骤是打开-写入-关闭,但假如在需要频繁写入日志的场景下,这种方式在性能上肯定会存在问题,因为每次打开关闭都是需要成本开销的,所以必须要想想是否有别的更好的方式,竟然问题出现在打开关闭的次数,那么解决问题思路就从这里下手,可以在第一次打开写入日志后不进行关闭操作,保持打开的状态,下一次写入则无需再次打开可直接写入。而由于实际过程中访问日志产生的量非常大,肯定不可能只往一个文件中写入数据,可能会按时间间隔每天写一个文件或按文件大小每50M写一个文件,所以在实际设计中会涉及到更换文件的操作,更换时需要把原来的文件流关闭。通过上述措施避免了文件频繁的打开关闭操作,但它同时也存在一些缺点,文件流不关闭会一直占用操作系统资源,且如果不及时关闭可能在程序运行过程中发生异常未正确处理而导致文件流未能关闭,进而将会导致内存泄漏。

l 添加缓冲区:添加缓冲区的作用简单地说应该是减少文件真实

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
服务器监控及性能优化 技术创新,变革未来 服务器监控及性能优化全文共27页,当前为第1页。 目录 MMO游戏的常用架构 服务器系统及应用健康监控体系 游戏内常用的效率分析及对应的优化手段 与其他互联网产品的互通性思考 Q&A 环节 服务器监控及性能优化全文共27页,当前为第2页。 MMO游戏的常用架构 架构和业务是相互促进的 服务器监控及性能优化全文共27页,当前为第3页。 运营系统架构 服务器监控及性能优化全文共27页,当前为第4页。 游戏内监控体系 监控信息汇总到CMS 每个服务器定时汇报自身 各个指标信息 运营系统记录汇总绘图 服务器监控及性能优化全文共27页,当前为第5页。 服务器系统健康监控体系 硬件监控项 CPU使用率 内存使用率 硬盘使用率 内网网卡使用率 外网网卡使用率 磁盘IO 服务器监控及性能优化全文共27页,当前为第6页。 服务器系统健康监控体系 服务器监控及性能优化全文共27页,当前为第7页。 服务器系统健康监控体系 软件监控项 帧速率 网络包 数目 网络连 接数目 房间 数目 线程 状态 NPC 数量 道具 数量 在线玩 家数量 存档 状态 数据库 状态 激活对 象数量 服务器监控及性能优化全文共27页,当前为第8页。 服务器系统健康监控体系 软件信息 监控服务 汇总 阀值判定 各类报警 记录日志 健康监控体系报警,然后呢? ---分析 各种开源工具、内嵌API、心跳等多种检测方式 硬件信息 服务器监控及性能优化全文共27页,当前为第9页。 游戏内分析系统设计与实现 帧速率 网络包 数目 网络连 接数目 房间 数目 线程 状态 NPC 数量 数学 计算 在线玩 家数量 存档 状态 数据库 状态 激活对 象数量 聚集 状态 监测和分析 是基于业务的 服务器监控及性能优化全文共27页,当前为第10页。 游戏内分析系统设计与实现 服务器监控及性能优化全文共27页,当前为第11页。 游戏内分析系统设计与实现 服务器监控及性能优化全文共27页,当前为第12页。 MMO服务器常用的优化手段 在之前 对于在运行系统,优化可能牵一发而动全身, 尽快利用各种手段解决问题,保证项目运行。 服务器监控及性能优化全文共27页,当前为第13页。 MMO服务器常用的优化手段 逻辑帧速率优化(尽量控制150ms) ----找到最耗时的函数,内嵌检测,运行超时LOG 对象数量过多,大量道具,NPC等 数学计算过多,位置计算,子弹碰撞,伤害计算等 异常聚集,不可控的玩家行为 跨线程访问,不合理的线程粒度 锁操 作 减小粒度 减少锁时间 同步 同帧合并 减少聚集 大量 对象 分批计算 设置激活 数据 结构 服务器监控及性能优化全文共27页,当前为第14页。 MMO服务器常用的优化手段 流畅 控制 同步 同帧 合并 重点 压缩 大量的网络包优化 ----找到发送最多的包,流量统计,LOG记录 同步的消息在同逻辑帧合并发送,减少投递次数 大量的网络IO重点优化包 MMO的大量包产生在同步,控制范围 使用内存池,大量小内存的申请释放消耗很大 异常来回发送等逻辑BUG 服务器监控及性能优化全文共27页,当前为第15页。 MMO服务器常用的优化手段 网络链接优化 创建链接开销大,使用网络连接池解决 开服、积分墙刷广告,从设计上支持动态增加网关服务器解决 撞库等异常的网络攻击,及时彻底释放,封IP解决 创建销毁 的开销 极限情况 的控制 安全处理 的手段 服务器监控及性能优化全文共27页,当前为第16页。 MMO服务器常用的优化手段 线程操作优化 ----尽量减少锁的时间 尽可能的少调用锁 减小锁粒度 线程数控制,线程间切换开销 利用析构自解锁,防止死锁 网络 数据库 存读档 内部LOG 系统 游戏场景 。。。 一次交换收到的 消息到处理线程 比读要频繁 分成读锁 一次交换到线 程批次入 不频繁操作, 注意锁定时间 游戏服务器的线程处理 服务器监控及性能优化全文共27页,当前为第17页。 MMO服务器常用的优化手段 存档数据库操作优化 ---尽量保证不回档 存档 正确 设计存读档缓冲,减少直接对数据操作 增加存档频率,设定重要存档节点 控制存档数据大小,可压缩 数据表设计合理 按战区分存档库 缓存 存档 关键点 存档 压缩 数据 合理 表结构 服务器监控及性能优化全文共27页,当前为第18页。 MMO服务器常用的优化手段 内存优化 单个对象的内存占用尽量少,比如使用标记位 频繁申请释放的对象使用对象池,消息,道具,子弹,NPC等 碎内存控制,长时间运行后会积累 重new delete,用于统计和分析效率点和泄露 根据功能分多进程 控制申请 次数大小 使用 内存池 统计 内存使用 服务器监控及性能优化全文共27页,当前为第19页。 MM
SQL注入的原理 什么SQL注入 将SQL代码插入到应用程序的输入参数中,之后,SQL代码被传递到数据库执行。从而达到对应用程序的攻击目的。 注入原理 常见攻击方法 检测是否可以注入【检测注入点】 示例:http://192.168.0.1/temp.aspx?id=a or 1=1-- 如果上面语句可以执行说明可以实现注入,则可以 利用系统过程、系统表注入数据库 示例【给系统添加一个用户,黑客可以实现远程登录控制服务器】:http://192.168.0.1/temp.aspx?id=1;exec xp_cmdshell 'net user admin 123456 /add' 绕过程序的限制 示例:程序中往往限制单引号的数据,但是黑客传入单引号的ASCII码 跨站点注入 在Web页面挂某些恶意的HTML、JavaScript代码 防范SQL注入 限制错误信息的输出,避免错误信息的输出使得黑客知道网站的技术实现采用什么数据库,采用什么平台 示例:在Web.config文件中设置 限制访问数据库账号的权限 在开发应用系统的时候就应该限制,给程序最小访问数据库的权限 使用参数命令传递参数 不要使用拼接字符串的方式构造SQL语句而采用参数命令 使用存储过程 存储过程在数据库中 只能执行存储过程中固定的代码 限制输入长度 防止黑客输入超大字符串,导致服务器瘫痪 防止黑客输入较长的恶意脚本等 实现方法:文本框的MaxLength属性 URL重技术 示例: http://testWeb/news.aspx?id=111 重成:http://testWeb/10101111.html 传递参数尽量不用字符串 http://testWeb/news.aspx?id=111 and 1=1【黑色部分给了SQL注入的机会】 SQL优化 为什么要优化 开发是对性能考虑不多【技术差、项目工期紧等原因没有考虑性能问题】 系统运行中,数据量扩大,访问量增多,蹩脚的SQL危害开始显露 低效SQL的危害 系统响应变慢,软件开发中的8秒定律,当打开一个软件或网页超过8秒时间还没有显示,则响应太慢。 死锁,当不同用户都访问某些资源的时候SQL语句不当导致死锁 客户失去信心,软件失败 低效SQL低效在哪里?  性能低下的根源  硬件原因,数据库的配置不合理,数据库的数据文件和日志文件没有分磁盘存放,会极大影响IO性能  没有建立索引,或者SQL没有走索引。在千万级数据的表上建索引是很有必要的。  SQL过于复杂,过长的SQL语句满足程序需求但是影响性能。子查询嵌套过多对性能有影响,查询关联的表特别多也影响性能  频繁访问数据等等 SQL如何被SQLServer执行的 SQL执行原理  解释:首先解释SQL语句【语法是否正确】  解析:检验语句的出现的对象是否有效【进行一个解析,要检查对象所有权的权限】  优化:【检查SQL语句是否能够使用索引,SQL语句如何执行效率高,制定一个执行计划】  编译:  执行SQL语句:【把编译过的查询要求提交并进行处理】 如何优化SQL 完善开发的管理 完善代码审核、测试机制,软件开发是艺术! 检测SQL查询的效率 语法【对IO和Time对SQL执行进行统计】: SET STATISTICS IO ON SET STATISTICS TIME ON ------------SQL代码--------- SET STATISTICS IO OFF SET STATISTICS TIME OFF 注意:在检测之前要清理缓存,因为当我们执行SQL语句的时候查出的数据会在数据库中进行缓存,重新查询会返回缓存中的信息。 DBCC DROPCLEANBUFFERS DBCC FREEPROCCACHE 经验:使用子查询嵌套不要过多,尽量使用表连接查询代替子查询,因为表连接查询效率稍高一点。 SQL优化工具 使用报表服务 通过Reporting Service查找低效SQL 选择 性能 - 批处理执行统计信息和性能相关的几个报表服务: 性能 - 对象执行统计信息 性能 - 按平均CPU时间排在前面的查询 性能 - 按平均IO次数排在前面的查询 性能 - 按总CPU时间排在前面的查询 性能 - 按IO总次数排在前面的查询 操作示范: 1. 数据引擎上点击右键—报表—标准报表—关心的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超人汪小建(seaboat)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值