EasyGBS磁盘读写压力过大导致调用接口一直pending的解决方式
在我们EasyGBS的演示平台中,为了节省流量,设定了定时掉线的功能,也就是在页面5分钟没有任何操作时,帐号就自动退出登录,跳转到登录页面。而非演示版本考虑到登入登出会给运维人员带来不便,则没有这个设定。但是有的客户反馈在用EasyGBS正式版的时候有时会突然卡住,并且过一会自动跳转到登录页面,整个页面非常的卡顿,调用接口一直都在pending。
我们检查系统软件都没有问题之后,发现这个问题是由于客户的磁盘读写压力太大导致的,windows可以在资源管理器里面看到:
Linux里面可以调用命令iostat -x 1 10去检查,可以从命令里面看到客户磁盘读写已经接近利用率,基本已经快满了。
因为我们的数据库默认是用sqlite的数据库,在进行通道查询这类操作时,比较消耗磁盘的读写能力,一旦利用率满了之后就会出现返回登录页面,调用接口一直pending的问题。
碰到这种情况一般两种解决方案,一种方案是更换硬盘,继续用sqlite的数据库,这个适用于接入数量比较少的。但是如果接入数量比较大,查询比较多的话就要换另一种方案,即替换成mysql数据库,要在服务器里面装一个mysql5.7的数据库(注意easygbs只支持mysql5.7版本的,其他版本的mysql不支持),然后配置新建的easygbs1数据库,然后在easygbs.ini文件里面配置mysql的连接。
完成以上操作之后再重启服务就可以正常使用了,只要在内存占用不高的前提下都可以很流畅的使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结