首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

弱网模拟工具Network Emulator Toolkit(一)

弱网测试的现象及原因 1、 现象:用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致。 原因:数据下载过程中、下载失败后,未进行数据回滚,中止后重新下载,出现数据重复 解决方案:通过事务处理数据下载逻辑,下载失败后,应用本地数据库进行数据回滚。 2、 现象:用户点击数据上传,数据上传过程中网络弱且不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,形成脏数据 原因:数据上传过程中,由于失败重传机制,会出现连续两次写操作,并且未做唯一识别处理 解决方案:根据数据特性,对可能造成脏数据的地方,通过关键字段,例如创建时间,key-value值等生成hash键,标记记录唯一性,即数据写入时,检查hash键是否存在,如果已经存在,当前重复数据丢弃。 3、 现象:在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示。 原因:在弱网环境下的连接超时后,按照强网业务逻辑处理,导致返回超时异常。 解决方案:弱网连接超时后,检查应用本地数据库是否有用户登录信息,若存在,获取应用本地用户信息进行登录。 4、 现象:在弱网环境下,用户输入用户名和密码后点击登录,登录过程中应用崩溃并且闪退。 原因:弱网环境下数据下载超时,加载数据严重依赖于后来的异步加载。数据还没来得及返回,应用跳转到下个activity,导致崩溃。 解决方案:健壮数据加载流程,通过标记后台数据下载状态加载界面,依赖数据下载完成后,再进行页面跳转。 5、 现象:弱网络环境下,用户请求页面响应时间较长,等待的过程中,页面上的部分控件仍然可以操作,当用户点击控件时,出现应用闪退现象; 原因:没有对数据加载流程进行判断,直接暴露控件可控,当出现依赖数据的控件操作时,没有在数据返回前做兼容处理。 解决方案:在数据加载过程中,设置页面对外暴露的控件为“不可操作”,当数据加载完再释放。 6、 现象:在弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新关键字并发送请求,等待搜索结果返回后,当前结果页被之前的关键字搜索结果刷新覆盖 原因:中间的请求返回较慢,显示最终的结果后,之前请求返回的数据应不做处理。 解决方案:对异步请求未完成的任务进行cancel.

06
您找到你想要的搜索结果了吗?
是的
没有找到

记一次Netty连接池FixedChannelPool连接未释放问题的排查总结

前几天我们又遇到了一个Netty报从连接池获取连接超时异常从而导致整个服务不可用的异常,报的具体异常信息是Exception accurred when acquire channel channel pool:TimeoutException。当时自己看了这个异常信息,有种似曾相识的感觉,印象中自己第一次接触到该异常是不久前也遇到了Netty报超时错误导致整个服务不可用的问题,最终只能重启服务器来解决。于是自己去翻看了之前的异常消息,发现报的错误果真同样是从连接池获取连接超时的异常!印象中前段时间Netty报这个错误时是刚好相关网络部门做过网络调整,当时我们就认为可能是由于网络原因导致Netty获取连接超时,但是至于为啥会因为网络原因导致获取Netty连接超时后从而导致服务不可用就还是一无所知,因此,这个“幽灵”Bug暂时对我们来说成了一团谜。

03

MySQL优化之缓存优化

MySQL的优化指的是一个很大的系统,面试的时候我之前是从sql的语句优化方面去说的,这种优化也有作用,不过是从逻辑方面去优化。但是当所有的逻辑层面已经无可优化,所有的索引都已经加好,表结构也设计的合理,但是遇到高并发的时候,为什么MySQL还是扛不住呢。当然可以通过其他的方面去缓解MySQL的压力,这里我们暂且不谈。对于MySQL而言,我们要尽最大的可能去压榨机器的性能,让所有的计算资源都不浪费,都可以为我们服务。MySQL运行在服务器上,这里特指Linux服务器。那么服务器的硬盘、CPU,内存,网络都有影响到MySQL的性能。MySQl是非常耗费内存的,线上服务器的MySQL内存要吃到80%左右,内存过小,其他的优化空间其实很小。

02
领券