在我们EasyGBS的演示平台中,为了节省流量,设定了定时掉线的功能,也就是在页面5分钟没有任何操作时,帐号就自动退出登录,跳转到登录页面。而非演示版本考虑到登入登出会给运维人员带来不便,则没有这个设定。但是有的客户反馈在用EasyGBS正式版的时候有时会突然卡住,并且过一会自动跳转到登录页面,整个页面非常的卡顿,调用接口一直都在pending。
我们检查系统软件都没有问题之后,发现这个问题是由于客户的磁盘读写压力太大导致的,windows可以在资源管理器里面看到:
Linux里面可以调用命令iostat -x 1 10去检查,可以从命令里面看到客户磁盘读写已经接近利用率,基本已经快满了。
因为我们的数据库默认是用sqlite的数据库,在进行通道查询这类操作时,比较消耗磁盘的读写能力,一旦利用率满了之后就会出现返回登录页面,调用接口一直pending的问题。
碰到这种情况一般两种解决方案,一种方案是更换硬盘,继续用sqlite的数据库,这个适用于接入数量比较少的。但是如果接入数量比较大,查询比较多的话就要换另一种方案,即替换成mysql数据库,要在服务器里面装一个mysql5.7的数据库(注意easygbs只支持mysql5.7版本的,其他版本的mysql不支持),然后配置新建的easygbs1数据库,然后在easygbs.ini文件里面配置mysql的连接。
完成以上操作之后再重启服务就可以正常使用了,只要在内存占用不高的前提下都可以很流畅的使用。