设备云服务平台性能优化总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 明天就要离职了,下家也没有确定,心里还是有些不安的,只能希望自己有一个好的前途啦。月初已经明确跟老大说要离职了,但因为项目较赶,且存在性能问题,老大一直不给批。我只能硬着头皮上了,解决目前项目中存在的性能问题。
明天就要离职了,下家也没有确定,心里还是有些不安的,只能希望自己有一个好的前途啦。月初已经明确跟老大说要离职了,但因为项目较赶,且存在性能问题,老大一直不给批。我只能硬着头皮上了,解决目前项目中存在的性能问题。很多时候真的是把人给逼出来的,在摸索中成长。谈谈最近项目上遇到的一个问题吧。

设备端往云平台发送日志信息,由于设备数量较大,导致上送的日志信息较大,在前期设计的过程中更新数据库都是采用直接插入的方式,在设备数量达到一定量之后,性能急剧下降,同时上送的过程占用了IO的性能,导致读写数据库都非常的慢,为了解决这个问题,我将数据库部署在另一台服务器上,而服务器端只接收数据,解析数据,计算,保存,这个过程减小了服务器端的压力,但是毕竟两台设备处理,提高性能是必然的。

目前测试基本确认,将数据库和服务器分离之后,5分钟内,数据库插入数据量超过100W条,因此基本满足目前的功能需求。

为了实现这个100万条的数据量采用了如下的一些优化点,主要采用了内存提高性能的方式:
   >> 服务器端的修订
         1.1 在接收到包的过程中加快数据的处理能力,采用队列的方式将待处理的数据分发给不同的日志处理线程,该队列需要根据部署设备的参数进行调整,同时需要进行互斥同步,防止设备端无限制的上传信息。未来考虑采用内存文件系统,减少维护内存的代价,同时不能很好的解决服务器重启的问题。

         1.2 服务器与数据库的交互过程中采用了队列,该队列根据不同信息的数量进行合理的判断和设计。插入操作的过程对于每种不同的日志类型分别进行更新数据库操作。因此在日志处理线程需要和数据库更新线程进行同步,尽量使得更新数据库的过程中采用批量更新或插入。
      整体而言,服务器端采用了内存换性能的方案。
      
      第一版开发中采用了从硬盘读日志的方式,该方案基本已经被重写了,原因是硬盘的IO存在一定的瓶颈,导致对其他各阶段的处理都提高不大。因此在数据量较大的服务器中尽量减少硬盘的使用,能使用内存的情况下尽量使用内存。也可以使用内存文件系统,但是文件系统的容量大小需要进行合理的设计。

      >> 数据库部分的修订
         1.1 选择合适的主键,在mysql中选择合适的主键,在进行数据库操作的过程中将有大幅度的提升,比如需要更新设备当前的位置信息,采用设备的表示作为主键,则可以直接使用mysql中提供的replace代替先查询在insert、update的方式,同时replace支持批量的操作,在大设备量的情况下采用replace会有一定程度的性能提示,毕竟mysql内部的机制能够保证数据的快速操作。
         1.2 在主键不方便选择的情况下,建议采用id作为主键,并设置为自动增长,这样在插入数据库的过程中就能较好的维护主键,能够支持多批量的插入。
         1.3 选择表的合适引擎,在Mysql中Innodb的是行锁,而MyISAM是表锁,但是innodb的插入性能相比MyISAM性能差不少,因此在设计表的过程中需要考虑当前表的使用情况,若插入多,查询少,更新少,则建议采用MyISAM引擎,若更新频繁或者查询频繁,则建议采用Innodb的类型。具体的根据实际情况选择。

经过一系列的处理后,目前性能有了一定的提高,且给出了一些可优化的点,基本算是达标,终于可以解放啦。

这一段时间的工作总算有了个结果,今晚和同事小聚了一下,也算是把一些剩余工作交接一下吧,后天出发回来的地方,南京我要回来啦。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
存储 算法 Android开发
提升安卓应用性能的五大实用策略
【4月更文挑战第5天】在快速发展的数字时代,用户对移动应用的性能要求越来越高。对于安卓开发者而言,优化应用性能不仅是提升用户体验的关键,也是增强应用竞争力的必要手段。本文将深入探讨五种实用的策略,帮助开发者有效提升安卓应用的性能。这些策略涵盖了从代码优化到资源管理等多个方面,旨在为开发者提供全面的指导和建议。通过实践这些策略,开发者可以显著减少应用的内存消耗、提高响应速度,并最终交付给用户一个更加流畅和高效的应用体验。
|
7月前
|
弹性计算 运维 监控
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(2)
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(2)
117 1
|
28天前
|
安全 搜索推荐 Android开发
移动应用与系统:探索开发趋势与操作系统优化策略####
当今数字化时代,移动应用已成为日常生活不可或缺的一部分,而移动操作系统则是支撑这些应用运行的基石。本文旨在探讨当前移动应用开发的最新趋势,分析主流移动操作系统的特点及优化策略,为开发者提供有价值的参考。通过深入剖析技术创新、市场动态与用户需求变化,本文力求揭示移动应用与系统协同发展的内在逻辑,助力行业持续进步。 ####
44 9
|
7月前
|
消息中间件 弹性计算 运维
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(1)
157 1
|
7月前
|
缓存 监控 Android开发
提升安卓应用性能的五大关键策略
【4月更文挑战第30天】 在竞争激烈的应用市场中,卓越的性能是确保用户留存和应用成功的核心因素。本文将详细阐述五种提高安卓应用性能的有效技术策略。这些策略包括优化内存使用、减少网络请求延迟、多线程与并发处理、UI渲染优化以及电池效率改进。通过深入分析每项技术的原理及其在实际开发中的应用,旨在帮助开发者构建更快速、流畅且响应敏捷的安卓应用。
|
4月前
|
开发框架 Android开发 iOS开发
探索移动应用的无限可能:从开发到操作系统的全链路解析
在数字时代,移动应用成为人们日常生活和工作中不可或缺的一部分。本文深入探讨了移动应用的开发流程、技术选型以及与移动操作系统之间的紧密联系。通过分析当前市场上流行的移动操作系统特点,我们揭示了不同平台为应用开发带来的独特挑战和机遇。文章还讨论了移动应用的未来趋势,包括跨平台开发框架的兴起和人工智能技术的整合,旨在为读者提供一个全面而深刻的视角,理解移动应用背后的复杂世界。
|
5月前
|
运维 资源调度 监控
云上故障排查:高效定位与解决云端挑战的实战指南
加强监控与告警:建立完善的监控体系,确保能够及时发现并处理潜在问题。 定期演练与培训:定期组织故障排查演练和技能培训,提高团队的应对能力和专业水平。 注重数据保护与隐私:在故障排查过程中,严格遵守数据保护和隐私保护的相关规定,确保用户数据的安全。 结语 云上故障排查是一项复杂而艰巨的任务,需要企业和IT团队具备高度的专业素养和应对能力。通过遵循基本原则、运用有效工具与方法、遵循实战步骤并采纳最佳实践,我们可以
463 0
|
7月前
|
算法 开发工具 Android开发
提升安卓应用性能的五大策略
【2月更文挑战第16天】在竞争激烈的应用市场中,性能优越的安卓应用更能吸引和保留用户。本文将深入探讨五种有效的策略,帮助开发者优化安卓应用性能,包括代码优化、内存管理、多线程应用、使用最新的安卓SDK以及利用硬件加速特性。
|
7月前
|
弹性计算 运维 安全
提升云上资源稳定性的两大利器,事件驱动体系构建&自诊断工具
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
129 1
|
7月前
|
弹性计算 运维 安全
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(3)
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(3)
134 1
带你读《云上自动化运维宝典》——提升云上资源稳定性的两大利器:事件驱动体系构建&自诊断工具(3)